mtenv
is a version manager for the Myst programming language, inspired by rbenv and other similar version managers.
For platforms with a pre-built binary (see the releases page to find these), simply download the binary, place it on your PATH
and you're good to go!
# macOS example:
curl -Lo mtenv https://github.com/myst-lang/mtenv/releases/download/v0.0.3/mtenv-v0.0.3-macos-10.13.2
chmod +x mtenv
cp ./mtenv /usr/local/bin/mtenv
For other platforms, you'll need to compile from source. To do so, you can clone this repository and run shards build
, then move the compiled binary onto your $PATH.
git clone https://github.com/myst-lang/mtenv.git
cd mtenv
shards build
cp ./bin/mtenv /usr/local/bin/mtenv
If you create a new pre-built binary, I'd appreciate you sending in the binary for others to download themselves. The Myst language discord is a great place to discuss this.
Once mtenv
is on your PATH
, the installation is complete.
mtenv
uses sub-commands to perform its various tasks. To see these commands listed out, just run mtenv
to see the usage instructions. Further explanations are given here.
When first installing mtenv
, run mtenv setup
to initialize the ~/.mtenv
(or MTENV_HOME
if set) directory and install the shims.
mtenv setup
mtenv setup
will:
- Ensure that
~/.mtenv/
(orMTENV_HOME
if set) exists and add some basic configuration. - Prompt for where to put the the executable that
mtenv
manages to controlmyst
versions, i.e. a directory in your PATH.
Now you are fully set up to use mtenv
and install new versions of Myst.
Note: If you have existing versions of Myst installed via Homebrew or any other method, be sure to remove them from your PATH before using mtenv
! Otherwise mtenv
may not take precedence and may cause unexpected behavior._
To install a new version of Myst, use mtenv install <version>
. version
can be a tagged release number (e.g., v0.5.0
, v0.6.0
), or a commit SHA from the official myst-lang repository. install
also accepts an optional second argument for a different name to use for the installation.
$ mtenv install v0.5.0
Version v0.5.0 of Myst is now installed
$ mtenv versions
v0.5.0
$ mtenv install v0.5.0 beta-5
Version beta-5 of Myst is now installed
$ mtenv versions
beta-5
v0.5.0
To uninstall a specific version of Myst, use mtenv uninstall <version>
. This will remove the installation
$ mtenv versions
v0.4.0
v0.5.0
$ mtenv uninstall v0.4.0
Version v0.4.0 of Myst has been uninstalled.
$ mtenv versions
v0.5.0
To see which version of Myst is currently active, use mtenv version
.
To see which versions of Myst are currently installed, use mtenv versions
.
To switch between active versions of Myst (i.e., what the myst
command will use), use mtenv use <version>
.
$ mtenv version
v0.3.0
$ myst -v
v0.3.0
$ mtenv versions
v0.3.0
v0.4.0
v0.5.0
v0.6.0
$ mtenv use v0.4.0
Active Myst version is now v0.4.0
$ mtenv version
v0.4.0
$ myst -v
v0.4.0
To unlink mtenv
from your PATH and remove all installations, use mtenv implode
. This command removes everything relating to mtenv
, except for the mtenv
binary itself.
$ ./bin/mtenv implode
Are you sure you want to completely uninstall mtenv? This cannot be undone.
The `mtenv` command will remain installed, but all installations will be lost.
Type 'implode' to confirm your intent.
> implode
...
$
Just a normal Crystal project. This project uses Admiral for setting up the CLI, and each command lives in the src/commands
folder.