# Multi Language Version Manager `mlvm` is a command line tool that can be used to switch between versions for different languages. Drop of a ✨ if you are here. It would mean a lot : ) [DEMO.webm](https://github.com/shubhexists/mlvm/assets/110319892/b5a0b3f4-6cb3-4ce4-9635-a31b3f93aa04) # Features 1) Fast, written in Rust 2) A single binary to control versions of multiple languages, without increasing the space 3) Secure, as it uses symlinks instead of changing env. 4) Easy to use # Current Supported Languages - [x] Node - [ ] Go More languages to be added soon! # Installation ## Using Cargo You can install mlvm from [Cargo](https://crates.io/crates/mlvm) directly ``` cargo install mlvm ``` ## Build From Source 1) Clone this repository by running the command ``` git clone https://github.com/shubhexists/mlvm ``` 2) `cd` into the directory and run ``` cargo build --release ``` This will create binaries for the project. 3) Export the path of the executable (It is in the `/target/release/` directory .) For eg, ``` export PATH="$PATH:/home/jerry/Desktop/mlvm/target/release" ``` 4) You are all set to use mlvm :) # Major Commands 1) To install a new version ``` mlvm language_name install version_number ``` Eg. ``` mlvm node install 16 // installs node 16 ``` 2) To list all the versions of a language ``` mlvm language_name ls ``` 3) To remove a version of any language ``` mlvm language_name remove version_number ``` 4) To switch between different version of a language ``` mlvm language_name use version_number ``` 5) To execute a piece of code without actaully changing the version in the shell (Work In Progress) ``` mlvm language_name exec version_number file_to_execute ``` 6) To create version aliases for a language (Work In Progress) ``` mlvm language_name alias add version_number alias_name ``` For more details about commands, and flags like `--debug` and `--no-default`, Refer to COMMANDS.md (Work In Progress). # Thanks If you read till here, thanks for showing interest in the project :)