- Rust 100%
| .github/workflows | ||
| cyrene | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CHANGELOG.md | ||
| dist-workspace.toml | ||
| LICENSE | ||
| README.md | ||
| release.toml | ||
cyrene
Conjure upon ripples of past reverie to run multiple versions of runtimes and tools.
Features
- Install and upgrade multiple versions of tools
- Symlink-based version management
- Extensible with scripts written in Rune
- Synchronize tool versions with
cyrene.tomllockfiles
Installation
cyrene should depend only on libc.
A set of plugins are available in the cyrene-plugins repository.
From releases
Grab the latest binary from the Releases page.
After that, run cyrene env to generate required environment variables to $HOME/.config/cyrene/cyrene_env.sh, then source this file.
Run from source
cyrene is built and tested against latest Rust.
git clone https://github.com/Damillora/cyrene.git
cd cyrene
cargo install --path cyrene
After that, run cyrene env to generate required environment variables to $HOME/.config/cyrene/cyrene_env.sh, then source this file.
Managing cyrene with cyrene
To manage cyrene with cyrene itself, first install cyrene version 0.2.3 or later, alongside the cyrene plugin.
After that, run cyrene env to generate required environment variables to $HOME/.config/cyrene/cyrene_env.sh, then source this file. Loading this environment file is mandatory to manage cyrene with cyrene. cyrene version 0.2.3 has a check that prevents cyrene from sacrificing itself if the environment is not properly loaded.
Then simply:
cyrene install cyrene
Usage
# Install multiple versions of runtimes...
cyrene install node@22
cyrene install node@20
# ..and enable one of them at a time.
cyrene link node 20
node
# Welcome to Node.js v20.19.5.
# Type ".help" for more information.
# >
cyrene link node 22
node
# Welcome to Node.js v22.20.0.
# Type ".help" for more information.
# >
# Upgrades are per major version
cyrene upgrade node@22
# Uninstall every Node version
cyrene uninstall node
# Lockfile example
cat << EOF > cyrene.toml
[versions]
node = "20.19.5"
EOF
cyrene load
node
# Welcome to Node.js v20.19.5.
# Type ".help" for more information.
# >
# Load default lockfile
cyrene load -d
Configuration
Cyrene is currently configured with environment variables:
Run cyrene env to generate a script exporting its default configuration to $HOME/.config/cyrene/cyrene.sh.
CYRENE_APPS_DIR: Location of installed binaries. Defaults to$HOME/.local/share/cyrene/apps.CYRENE_PLUGINS_DIR: Location of installed plugins. Defaults to$HOME/.local/share/cyrene/apps.CYRENE_INSTALL_DIR: Location of thecyrenebinary itself. Default to the location of thecyreneexecutable itself.
The default lockfile is located at $HOME/.config/cyrene/cyrene.toml. Per-project lockfiles are configured using the current directory's cyrene.toml file.
Contributing
cyrene is still in heavy development, but contributions are welcome! Feel free to file an issue or even submit a PR if you want.
License
cyrene is licensed under the MIT License.