Crates.io | goup-downloader |
lib.rs | goup-downloader |
version | 0.9.4 |
source | src |
created_at | 2023-11-30 09:15:41.705852 |
updated_at | 2024-10-28 00:25:09.600505 |
description | goup is an elegant Go version manager |
homepage | https://github.com/thinkgos/goup-rs |
repository | https://github.com/thinkgos/goup-rs |
max_upload_size | |
id | 1054025 |
size | 25,835 |
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.
NOTE: Please keep in mind that goup-rs
is still under active development and therefore full backward compatibility is not guaranteed before reaching v1.0.0.
git
. we may remove this dependency in future.goup install/remove [TOOLCHAIN]
.goup install <nightly|tip|gotip>
.*.tar.gz
, *.tar.gz.sha256
).goup
itself.Alternatively, you can also install it using cargo
.
cargo install goup-rs
or
cargo install goup-rs --git https://github.com/thinkgos/goup-rs
goup init
, Got shell startup script at $HOME/.goup/env
.echo '. "$HOME/.goup/env"' >> ~/.bashrc
or echo '. "$HOME/.goup/env"' >> ~/.zshenv
If you want to install manually, there are the steps:
goup
from Release Pagegoup
executable to your PATH
and make it executable: mv GOUP_BIN /usr/local/bin/goup && chmod +x /usr/local/bin/goup
goup init
, Got shell startup script at $HOME/.goup/env
.echo '. "$HOME/.goup/env"' >> ~/.bashrc
or echo '. "$HOME/.goup/env"' >> ~/.zshenv
Install the latest version for your system with the MSI-installers from the Release Page section
goup.exe
to $YOUR_PATH
.$YOUR_PATH
to windows environment.$ goup install
[2024-01-30T00:38:48Z INFO ] Installing go1.21.10 ...
[2024-01-30T00:38:48Z INFO ] Unpacking /home/thinkgo/.goup/go1.21.10/go1.21.10.linux-amd64.tar.gz ...
[2024-01-30T00:38:48Z INFO ] go1.21.10 installed in /home/thinkgo/.goup/go1.21.10
[2024-01-30T00:38:48Z INFO ] Default Go is set to 'go1.21.10'
$ goup list
| ACTIVE | VERSION |
|---------|---------|
| * | 1.21.10 |
$ go env GOROOT
/home/thinkgo/.goup/current
$ go version
go version go1.21.10 linux/amd64
$ GOUP_GO_HOST=https://golang.google.cn goup install =1.21.10
goup search [FILTER]
, [FILTER]
can be follow value 'stable', 'unstable', 'beta' or any regex string.
$ goup search
1
...
1.21rc4
1.22rc1
$ goup search stable
1
...
1.21.4
1.21.5
1.21.10
$HOME/.goup
$ goup list
+--------+---------+
| Active | Version |
+--------+---------+
| | 1.21.10 |
+--------+---------+
| * | 1.22.3 |
+--------+---------+
| | tip |
+--------+---------+
goup install/update [TOOLCHAIN]
, [TOOLCHAIN]
can be follow value 'stable'(default), 'nightly'('tip', 'gotip'), 'unstable', 'beta' or '1.21.4', --dry
flag means only install the version, but do not switch.
[TOOLCHAIN]
you can use semver
syntax to match the version:
=
): allow updating to the latest version that exactly the version, so =1.21.4
means exactly match the version 1.21.4
.>
): allow updating to the latest version that less than or equal the version, so >1.21.4
means greater than 1.21.4
.>=
): allow updating to the latest version that less than or equal the version, so <1.21.4
means greater than or equal to 1.21.4
.<
): allow updating to the latest version that less than or equal the version, so <1.21.4
means less than 1.21.4
.<=
): allow updating to the latest version that less than or equal the version, so <1.21.4
means less than or equal 1.21.4
.~
): allow updating to the latest version that does not change the major and minor version, so ~1.21.4
means greater than or equal 1.21.4
, but less than 1.22.0
.^
): allow updating to the latest version that does not change the major version, so ^1.21.4
indicates that the version must be greater than or equal to 1.21.4
, but less than 2.0.0
.*
): The operator indicates an arbitrary version. It is usually used to allow all version numbers to match.
1.21.*
match all 1.21.x
versions.1.*.*
match all 1.x.x
versions.$ goup install 1.21.*
[2024-01-30T00:38:48Z INFO ] Installing go1.21.10 ...
[2024-01-30T00:38:48Z INFO ] Unpacking /home/thinkgo/.goup/go1.21.10/go1.21.10.linux-amd64.tar.gz ...
[2024-01-30T00:38:48Z INFO ] go1.21.10 installed in /home/thinkgo/.goup/go1.21.10
[2024-01-30T00:38:48Z INFO ] Default Go is set to 'go1.21.10'
$ goup install =1.21.4 --dry
[2024-01-30T00:38:48Z INFO ] Installing go1.21.4 ...
[2024-01-30T00:38:48Z INFO ] Unpacking /home/thinkgo/.goup/go1.21.4/go1.21.4.linux-amd64.tar.gz ...
[2024-01-30T00:38:48Z INFO ] go1.21.10 installed in /home/thinkgo/.goup/go1.21.4
goup use/set [VERSION]
, switches to selected Go version.
$ goup use
? Select a version ›
1.21.5
❯ 1.21.10
tip
[2024-01-30T00:38:48Z INFO ] Default Go is set to 'go1.21.10'
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
$ goup rm
? Select multiple version ›
✔ 1.21.5
⬚ 1.21.10
⬚ tip
✔ Select multiple version · 1.21.5
$ goup cache show --contain-sha256
go1.21.10.linux-amd64.tar.gz
go1.21.10.linux-amd64.tar.gz.sha256
$ goup cache clean
✔ Do you want to clean cache file? · yes
$ goup self update
Checking target-arch... x86_64-unknown-linux-gnu
Checking current version... v0.9.0
Checking latest released version... v0.9.0
[2024-01-30T00:38:48Z INFO ] Update status: `v0.9.0`!
$ goup env
+---------------------------+--------------------------------+---------------------------------------------------------------------------------+
| Key | Value | Explain |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------+
| GOUP_GO_HOST | https://golang.google.cn | Get upstream latest/all go version, use by 'install'/'search' |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------+
| GOUP_GO_DOWNLOAD_BASE_URL | https://dl.google.com/go | Download go archive file base url, use by 'install' |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------+
| GOUP_GO_SOURCE_GIT_URL | https://github.com/golang/go | Upstream source git url and get upstream go versions, use by 'install'/'search' |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------+
| GOUP_GO_SOURCE_GIT_URL | https://go.googlesource.com/go | Upstream source git url, use by 'install' the gotip |
+---------------------------+--------------------------------+---------------------------------------------------------------------------------+
goup completion <SHELL>
Generate the autocompletion script for the specified shell. <SHELL>
possible values: bash
, elvish
, fish
, powershell
, zsh
.
goup completion zsh > _goup
goup -h
get more information
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>/go
and symlinks it to $HOME/.goup/current
.goup use/set [VERSION]
switches to selected Go version.goup ls/list/show
list 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 cache [COMMAND]
Manage cache archive files.goup self <COMMAND>
Modify the goup installation.goup init
write all necessary environment variables and values to $HOME/.goup/env
.goup env
Show the specified goup environment variables and values.Default log level is Info
. You can use goup -v <subcommand>
or goup -vv <subcommand>
to use Debug
or Trace
level.