goup
goup is an elegant Go version manager write in rust.
goup is an attempt to fulfill the above features and is heavily inspired by Rustup, golang/dl, goup, goenv, gvm and getgo.
Features
- Minimum dependencies, only depend on
git. we may remove this dependency in future. - Multi-platform compatible (Linux, macOS & Windows).
- Install/Remove Go versions with
goup install/remove. Such astipversion. - List locally installed versions.
- Switch between multiple versions.
- Search available version of Go.
- Upgrade
goupitself. - Friendly prompt.
- Should be pretty fast.
Installation
Cargo
Alternatively, you can also install it using cargo.
cargo install goup-rs
or
cargo install goup-rs --git https://github.com/thinkgos/goup-rs
Manual(for Linux/MacOS)
If you want to install manually, there are the steps:
- Download the latest
goupfrom Release Page - Drop the
goupexecutable to yourPATHand make it executable:mv GOUP_BIN /usr/local/bin/goup && chmod +x /usr/local/bin/goup - Run
goup init, Got shell startup script at$HOME/.goup/env. - Add the Go bin directory to your shell startup script:
echo '. "$HOME/.goup/env"' >> ~/.bashrcorecho '. "$HOME/.goup/env"' >> ~/.zshenv
Manual(for Windows)
I do not have Windows. So you know, welcome PR.
Quick Start
$ goup install
[2024-01-30T00:38:48Z INFO ] Installing go1.21.6 ...
[2024-01-30T00:38:48Z INFO ] Unpacking /home/thinkgo/.goup/go1.21.6/go1.21.6.linux-amd64.tar.gz ...
[2024-01-30T00:38:48Z INFO ] go1.21.6 installed in /home/thinkgo/.goup/go1.21.6
[2024-01-30T00:38:48Z INFO ] Default Go is set to 'go1.21.6'
$ goup list
| VERSION | ACTIVE |
|---------|--------|
| 1.21.6 | * |
$ go env GOROOT
/home/thinkgo/.goup/current
$ go version
go version go1.21.6 linux/amd64
$ GOUP_GO_HOST=https://golang.google.cn goup install 1.21.6
Usage
Lists all available Go versions from https://golang.org/dl
goup search [FILTER], [FILTER] can be follow value 'stable', "unstable", 'beta' or any regex string.
List all installed Go version located at $HOME/.goup
| | |
| | |
| | |
| | |
Install specified version of Go
goup install/update [TOOLCHAIN], [TOOLCHAIN] can be follow value 'stable'(default), 'nightly'('tip', 'gotip'), 'unstable', 'beta' or '1.21.4'('go1.21.4'), --dry flag means only install the version, but do not switch
Switches to selected Go version
goup use/set [VERSION], switches to selected Go version.
Remove the specified Go version list
goup remove/rm [VERSION]... Remove the specified Go version list. If no version is provided, a prompt will show to select multiple installed Go version
Upgrades goup
Environment
| | | |
| | | |
| | | |
| | | |
| | | |
More information
goup -h get more information
How it works
goup completion <SHELL>Generate the autocompletion script for the specified shell.goup [help]Print this message or the help of the given subcommand(s).goup install/update [TOOLCHAIN]downloads specified version of Go to$HOME/.goup/go<VERSION|tip>/goand symlinks it to$HOME/.goup/current.goup use/set [VERSION]switches to selected Go version.goup ls/list/showlist all installed Go version located at$HOME/.goup.goup remove/rm [VERSION]...remove the specified Go version list.goup search [FILTER]lists all available Go versions.goup upgradeupgradesgoup.goup initwrite all necessary environment variables and values to$HOME/.goup/env.goup envShow the specified goup environment variables and values.