Gvcgo Version Manager Save

πŸ”₯πŸ”₯πŸ”₯ A general version manager for multiple sdks, such as Java, Go, Node.js, Deno, Bun, .Net, Python, PyPy, PHP, Rust, Kotlin, Scala, Groovy, Flutter, Julia, Zig, V, Typst, Android SDKs. A much better choice than vfox, fnm, gvm, etc.

Project README

Logo

Go Report Card GitHub License GitHub Release PRs Card Issues Card Versions Repo Card

δΈ­ζ–‡ | En


version-manager(vmr)

vmr is a simple, cross-platform, and well-tested version manager for programming languages and tools. It is totally created for general purpose. You don't need any plugins, but just vm. Then everything can be managed.

Maybe you've already heard of fnm, sdkman, gvm, nvm, pyenv, phpenv, etc. However, none of them can manage multiple programming languages. Managers like asdf-vm support multiple languages, but only works on unix-like systems, and makes things look complicated. Therefore, vmr comes.


features

  • Installs or uninstalls versions of sdk.
  • Swithes between versions of sdk.
  • Using a version only in current terminal session is supported. See with command vmr use -h.
  • Handles envs.
  • Friendly to VSCoders or Neovimers.
  • Downloads files blazingly fastπŸš€πŸš€πŸš€ with multi-threads. See with command vmr use -h.
  • Auto-completions for shells. See with command vmr completion -h.
  • Generates command "vmr use sdk-name@version" automatically using selected item from version list, and add the command to clipboard for later usage.
  • Android development with Flutter and VSCode. No Android Studio is needed.
  • No plugins needed.
  • More stable.

vmr versus vfox

sdk vmr vfox
java(jdk) βœ…οΈŽ βœ…οΈŽ
maven βœ…οΈŽ βœ…οΈŽ
gradle βœ…οΈŽ βœ…οΈŽ
kotlin βœ…οΈŽ βœ…οΈŽ
scala βœ…οΈŽ βœ…οΈŽ
groovy βœ…οΈŽ βœ…οΈŽ
python βœ…οΈŽ βœ…οΈŽ
pypy βœ…οΈŽ ❌︎
miniconda βœ…οΈŽ ❌︎
go βœ…οΈŽ βœ…οΈŽ
node βœ…οΈŽ βœ…οΈŽ
deno βœ…οΈŽ βœ…οΈŽ
bun βœ…οΈŽ ❌︎
flutter(dart) βœ…οΈŽ βœ…οΈŽ
.net βœ…οΈŽ βœ…οΈŽ
zig βœ…οΈŽ βœ…οΈŽ
zls βœ…οΈŽ ❌︎
php βœ…οΈŽ βœ…οΈŽ
rust βœ…οΈŽ ❌︎
cmdline-tool(android) βœ…οΈŽ ❌︎
android SDKs βœ…οΈŽ ❌︎
vlang βœ…οΈŽ ❌︎
v-analyzer βœ…οΈŽ ❌︎
cygwin-installer βœ…οΈŽ ❌︎
msys2-installer βœ…οΈŽ ❌︎
julia βœ…οΈŽ ❌︎
typst βœ…οΈŽ ❌︎
typst-lsp βœ…οΈŽ ❌︎
typst-preview βœ…οΈŽ ❌︎
gleam βœ…οΈŽ ❌︎
git-for-windows βœ…οΈŽ ❌︎
neovim βœ…οΈŽ ❌︎
vscode βœ…οΈŽ ❌︎
protobuf(protoc) βœ…οΈŽ ❌︎
lazygit βœ…οΈŽ ❌︎
kubectl βœ…οΈŽ ❌︎
upx βœ…οΈŽ ❌︎
acast(asciinema) βœ…οΈŽ ❌︎
erlang(need compilation) ❌︎ βœ…οΈŽ
elixir(need compilation) ❌︎ βœ…οΈŽ

Installation/Update

  • for MacOS/Linux(run the command below in terminal)
curl --proto '=https' --tlsv1.2 -sSf https://gvc.1710717.xyz/proxy/https://raw.githubusercontent.com/gvcgo/version-manager/main/scripts/install.sh | sh
  • for Windows(run the command below in powershell) (See tips in For Windows)
powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('https://gvc.1710717.xyz/proxy/https://raw.githubusercontent.com/gvcgo/version-manager/main/scripts/install.ps1')"
  • Manual installation
1. Download zip file from release.
2. Unzip it, run command "your/full/path/to/vmr install-self".
  • If you're a gopher, you can also complie the project by yourself. The main func is in ./cmd/vmr

Note: If you are installing vmr for the first time, please use source .zshrc or source .bashrc to refresh your envs. For windows users, just open a new powershell terminal, then vmr will be available.


How to set a proxy?

Choose either proxy or reverse-proxy.

  • proxy
vmr set-proxy <http://localhost:port or socks5://localhost:port>
  • reverse-proxy
# reverse proxy <https://gvc.1710717.xyz/proxy/> is available for free.
vmr set-reverse-proxy https://gvc.1710717.xyz/proxy/
  • enable downloading from mirror sites in China.
vmr use -mirror-in-china [email protected]

Subcommands

subcommand args desc
list - Shows what's supported.
search sdk-name Shows available versions for a sdk.
use sdk-name@version Installs/Swithes to the specific version of a sdk.
local sdk-name Shows installed versions of a sdk.
uninstall sdk-name@version or sdk-name@all Uninstalls versions for a sdk.
clear-cache sdk-name Clears the cached files for a sdk.
set-reverse-proxy https://gvc.1710717.xyz/proxy/ Sets a reverse-proxy for vm.
set-proxy http or socks5( scheme://host:port ) Sets a local proxy for vm.
env --remove=false/true Sets/Removes env manually.
install-self - Installs vm.
version - Shows version info of vm.
completion - Generate the autocompletion script for for the specified shell.(bash, zsh, fish, or powershell)

demo for MacOS

demo

demo for Windows

demo

demo for linux

demo


  • vmr installation dir
$HOME/.vm/
  • application installation dir

Specified during installation of vmr. Use "$HOME/.vm" by default. installation


For Windows

Note: If you are using vmr on Windows11, you need to enable the Developer Mode as vmr requires to create symbolic links. If you're on Windows10, and any creating-symbolic-links-failure occurrs, you can try vmr with Admin Privilege. To get envs take effect for windows, you may need to close the current powershell terminal and open a new one. Note that extFAT and FAT32 are not supported.

sudo command on Windows: gsudo. You can use vmr search gsudo to see what's available.

πŸ›ŽοΈπŸš¨ Virus Positive?: It's definitely a false positive. See here. If this occurrs, you can install vmr manually, and add vmr to be trusted.

  • How can I add vmr to windows 'Virus & threat protection Exclusions?'
Windows Security>> Virus & threat protection>> Virus & threat protection settings>> Exclusions

Contributors

Thanks to the following people who have contributed to this project.


Supplementary

vmr is created to be a cross-platform command line tool. We will not try to include everything just like asdf-vm or its imitator vfox did, as that will greatly increase the complexity and also reduce the possibility of cross-platform. And most of the time, frequently used SDKs and tools have already been covered by vmr. vmr will not try to include SDKs that need to be compiled under a certain platform. Because each developer's development environment is different, it is impossible to ensure the completion of a compilation. So vmr will only use pre-built binaries for installations. If you have any SDKs or tools to recommand for version management, please raise an issue in Issues.

So, vmr is going to keep as lightweight, stable, and user-friendly as possible.


Todo-List

  • To manage package repo mirror sites in China.
Open Source Agenda is not affiliated with "Gvcgo Version Manager" Project. README Source: gvcgo/version-manager

Open Source Agenda Badge

Open Source Agenda Rating