moonup
Manage multiple MoonBit installations
Getting Started
If you have the Rust toolchain installed, you can install moonup easily with Cargo:
If you are on Windows and you have Scoop installed:
scoop bucket add dorado https://github.com/chawyehsu/dorado
scoop install moonup
Or you may download the latest release from GitHub releases,
manually extract the archive and put the executables in a directory that is in your PATH.
After installation, run moonup help to see the available commands.
)
Use Moonup in GitHub Actions
With the setup-moonup action, It's super easy to use Moonup to set up a MoonBit environment in GitHub CI. Here is an example workflow:
- name: Setup MoonBit
uses: chawyehsu/setup-moonup@v1
run: moon version --all
How It Works
Moonup allows you to install multiple MoonBit toolchains and switch between
them easily. All MoonBit toolchains (with the core standard library) are
installed in Moonup's toolchains directory.
Moonup creates shim executables that replace the original MoonBit executables in the PATH. When you run a MoonBit command, the shim executable determines which MoonBit toolchain to use and proxies the command to the actual MoonBit executable in the desired toolchain.
With this approach, you can switch between MoonBit toolchains across projects easily without needing to change the PATH.
MoonBit Releases
Moonup downloads MoonBit releases from chawyehsu/moonbit-binaries, which is powered by GitHub Actions and archives MoonBit releases continuously from the official website.
Known Limitations
- Isolation of MoonBit core standard library is problematic, see #7.
Development
Prerequisites: Git, Rust
# clone the repo
# build
# run and test
0.1.0 Roadmap
- An
installcommand to install multiple MoonBit toolchains - A
pincommand to pin toolchain to a specific version in a project - Create shim executables to switch between toolchains automatically
- A
defaultcommand to set the default toolchain - A
showcommand to show installed and currently active toolchains - A
whichcommand to show the actual binary that will be run for a given command - A
runcommand to run a command with a specific toolchain - A
updatecommand to self-update and update the toolchain - A
completionscommand to generate shell completions
License
moonup © Chawye Hsu. Released under the Apache-2.0 license.
Blog · GitHub @chawyehsu · Twitter @chawyehsu