Go version manager, written in Go
Update and switch Go versions easily
Install Go on Linux or Mac (intel) or Mac with Apple chip (M1, M2 etc) or Windows
Quick Setup: One command to install Go and manage versions.
Hassle Free: Doesn't require root or sudo, or shell re-hash.
Platform: Supports (arm64, arch64, Mac, Mac M1, Ubuntu and Windows).
Flexible: Manage multiple Go versions including beta and rc.
Colorful: Colorful output.
Branch | Status |
---|---|
master | |
Coverage | |
Binary Size | |
Mod Dependecies | |
Unit Test Time | |
Average PR Days |
Using curl
curl -sLk https://raw.githubusercontent.com/kevincobain2000/gobrew/master/git.io.sh | sh
Using powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/kevincobain2000/gobrew/master/git.io.ps1'))
or install using go
go install github.com/kevincobain2000/gobrew/cmd/gobrew@latest
Add PATH
setting your shell config file (.bashrc
or .zshrc
).
export PATH="$HOME/.gobrew/current/bin:$HOME/.gobrew/bin:$PATH"
# optionally set
export GOROOT="$HOME/.gobrew/current/go"
# or
export GOPATH="$HOME/.gobrew/current/go"
Reload config.
All DONE!
Just use command gobrew
from any dir. It will auto detect if Go version is set, or not latest, or not same as go.mod
file.
Smart and interactive command
gobrew
Will install and set Go
gobrew use 1.16
Will only install it
gobrew install 1.16
gobrew use 1.16
Uninstall a version
gobrew uninstall 1.16
List installed versions
╰─$ gobrew ls
1.15.1
1.16
1.16.3
1.17
1.17.1
1.17.2
1.17.3
1.17.4
1.17.5
1.17.6
1.17.7
1.17.8
1.18
1.18.1*
1.18beta1
1.18rc1
current: 1.18.1
List available versions
╰─$ gobrew ls-remote
[Info] Fetching remote versions
1 1.0.1 1.0.2 1.0.3
1.1 1.1.0 1.1.1 1.1.2 1.1rc2 1.1rc3
1.2 1.2.0 1.2.1 1.2.2 1.2rc2 1.2rc3 1.2rc4
1.2rc5
1.3 1.3.0 1.3.1 1.3.2 1.3.3 1.3beta1 1.3beta2
1.3rc1 1.3rc2
1.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4beta1 1.4rc1
1.4rc2
1.5 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5beta1
1.5beta2 1.5beta3 1.5rc1
1.6 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6beta1
1.6beta2 1.6rc1 1.6rc2
1.7 1.7.0 1.7.1 1.7.2 1.7.3 1.7.4
1.7.5 1.7.6 1.7beta1 1.7beta2 1.7rc1 1.7rc2 1.7rc3
1.7rc4 1.7rc5 1.7rc6
1.8 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4
1.8.5 1.8.6 1.8.7 1.8.5rc4 1.8.5rc5 1.8beta1 1.8beta2
1.8rc1 1.8rc2 1.8rc3
1.9 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4
1.9.5 1.9.6 1.9.7 1.9beta1 1.9beta2 1.9rc1 1.9rc2
1.10 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4
1.10.5 1.10.6 1.10.7 1.10.8 1.10beta1 1.10beta2 1.10rc1
1.10rc2
1.11 1.11.0 1.11.1 1.11.2 1.11.3 1.11.4
1.11.5 1.11.6 1.11.7 1.11.8 1.11.9 1.11.10
1.11.11 1.11.12 1.11.13 1.11beta1 1.11beta2 1.11beta3 1.11rc1
1.11rc2
1.12 1.12.0 1.12.1 1.12.2 1.12.3 1.12.4
1.12.5 1.12.6 1.12.7 1.12.8 1.12.9 1.12.10
1.12.11 1.12.12 1.12.13 1.12.14 1.12.15 1.12.16
1.12.17 1.12beta1 1.12beta2 1.12rc1
1.13 1.13.0 1.13.1 1.13.2 1.13.3 1.13.4
1.13.5 1.13.6 1.13.7 1.13.8 1.13.9 1.13.10
1.13.11 1.13.12 1.13.13 1.13.14 1.13.15 1.13beta1 1.13rc1
1.13rc2
1.14 1.14.0 1.14.1 1.14.2 1.14.3 1.14.4
1.14.5 1.14.6 1.14.7 1.14.8 1.14.9 1.14.10
1.14.11 1.14.12 1.14.13 1.14.14 1.14.15 1.14beta1 1.14rc1
1.15 1.15.0 1.15.1 1.15.2 1.15.3 1.15.4
1.15.5 1.15.6 1.15.7 1.15.8 1.15.9 1.15.10
1.15.11 1.15.12 1.15.13 1.15.14 1.15.15 1.15beta1 1.15rc1
1.15rc2
1.16 1.16.0 1.16.1 1.16.2 1.16.3 1.16.4
1.16.5 1.16.6 1.16.7 1.16.8 1.16.9 1.16.10
1.16.11 1.16.12 1.16.13 1.16.14 1.16.15 1.16beta1 1.16rc1
1.17 1.17.0 1.17.1 1.17.2 1.17.3 1.17.4
1.17.5 1.17.6 1.17.7 1.17.8 1.17.9 1.17.10
1.17.11 1.17.12 1.17beta1 1.17rc1 1.17rc2
1.18 1.18.0 1.18.1 1.18.2 1.18.3 1.18.4 1.18beta1
1.18beta2 1.18rc1
1.19 1.19beta1 1.19rc1 1.19rc2
╰─$ gobrew help
gobrew 1.6.3
Usage:
gobrew use <version> Install and set <version>
gobrew ls Alias for list
gobrew ls-remote List remote versions (including rc|beta versions)
gobrew install <version> Only install <version> (binary from official or GOBREW_REGISTRY env)
gobrew uninstall <version> Uninstall <version>
gobrew list List installed versions
gobrew self-update Self update this tool
gobrew prune Uninstall all go versions except current version
gobrew version Show gobrew version
gobrew help Show this message
Examples:
gobrew use 1.16 # use go version 1.16
gobrew use 1.16.1 # use go version 1.16.1
gobrew use 1.16rc1 # use go version 1.16rc1
gobrew use 1.16@latest # use go version latest of 1.16
gobrew use 1.16@dev-latest # use go version latest of 1.16, including rc and beta
# Note: rc and beta become no longer latest upon major release
gobrew use latest # use go version latest available
gobrew use dev-latest # use go version latest avalable, including rc and beta
Installation Path:
# Add gobrew to your ~/.bashrc or ~/.zshrc
export PATH="$HOME/.gobrew/current/bin:$HOME/.gobrew/bin:$PATH"
export GOROOT="$HOME/.gobrew/current/go"
rm -rf $HOME/.gobrew
For more details: https://github.com/kevincobain2000/action-gobrew
on: [push]
name: CI
jobs:
test:
strategy:
matrix:
go-version: [1.13, 1.18, 1.18@latest, 1.19beta1, 1.19@dev-latest, latest, dev-latest, mod]
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- uses: kevincobain2000/action-gobrew@v2
with:
version: ${{ matrix.go-version }}
- name: Go
run: go version
By default, gobrew is installed in $HOME
as $HOME/.gobrew
.
You can change this by setting the GOBREW_ROOT
environment variable.
echo "export GOBREW_ROOT=/usr/local/share" >> ~/.bashrc
# or
echo "export GOBREW_ROOT=/usr/local/share" >> ~/.zshrc
#then
curl -sLk https://raw.githubusercontent.com/kevincobain2000/gobrew/master/git.io.sh | sh
Using bash completions
curl https://raw.githubusercontent.com/kevincobain2000/gobrew/master/completions/bash/gobrew-completion > /usr/local/etc/bash_completion.d/gobrew
# or
curl https://raw.githubusercontent.com/kevincobain2000/gobrew/master/completions/bash/gobrew-completion >> ~/.zshrc
# or
curl https://raw.githubusercontent.com/kevincobain2000/gobrew/master/completions/bash/gobrew-completion >> ~/.bashrc
Auto Setting go version by go.mod
alias cd='builtin cd "$@" && ls go.mod 2> /dev/null && gobrew use mod'
- v1.2.0 - Added rc|beta versions, appended at the end of list
- v1.4.1 - Go mod updated to 1.17
- v1.5.0 - Mac M1 support
- v1.5.1 - Oops
- v1.5.5 - arm|M1|darwin support added
- v1.5.6 - README updated
- v1.5.7 - Exit code fixed
- v1.5.8 - Show download progress and use Go's compression instead of tar command
- v1.5.9 - oops
- v1.6.0 - Added support for @latest and @dev-latest and progress bar for download
- v1.6.1 - Bug on use
- v1.6.2 - Using goreleaser #35 by @juev
- v1.6.3 - Added latest and dev-latest
- v1.6.4 - Github action publish
- v1.6.7 - Fixes rate limit issue
- v1.6.9 - Fixes #52, download error on status != 200
- v1.7.4 - Added 2 new options
gobrew version
andgobrew prune
- v1.7.5 - Fixes strange output on
gobrew use latest
- v1.7.7 - Windows support?
- v1.7.8 - Windows support, self-update fixes
- v1.7.9 - Windows fix ups and bash-completions
- v1.8.0 - Windows support, including actions
- v1.8.2 - Prune old go versions, bug fix and
go.mod
auto detection - v1.8.4 - Light background terminal support
- v1.8.6 - Fixes where 1.20.0 was detected as 1.20
- v1.9.0 - v1.8.6 ~ v1.9.0, updates colors packages, fixes UT issues for Github status codes
- v1.9.1 - Minor logging fixes
- v1.9.2 - Minor log message updated
- v1.9.4 -
gobrew
interactive - v1.9.5 - bug
- v1.9.8 - bug fix where 1.21 is not detected as 1.21.0