Latest version: 0.0.7
oo
was heavily inspired by tj/n.
Supported system:
- Mac OSX
- Linux
Requirements:
- Bash
- Curl
-
Clone this repo.
-
Add this to your bashrc or zshrc:
source "/path/to/oo/env"
Note that you need to set GOPATH
manually in your bashrc or zshrc:
export GOPATH=/path/to/your/gopath
export PATH=$PATH:$GOPATH/bin
Get go1.12.6 installed:
$ oo get 1.12.6
Then, the go1.12.6
is ready:
$ go version
go version go1.12.6 darwin/amd64
Use go1.12.6 as current go
(or just oo 1.12.6
):
$ oo use 1.12.6
=> go1.12.6
Run go from 1.12.6 temporary:
$ oo as 1.12.6 version
go version go1.12.6 darwin/amd64
$ oo as 1.12.6 run helloworld.go
Hello world!
List all installed go versions
$ oo ls
1.12.5
=> 1.12.6
Build (or rebuild) go by version:
$ oo build 1.12.6
build go1.12.6..
build successfully
Get current go binary path:
$ oo bin
/Users/hit9/github/oo/go/bin/go
Remove a version:
$ oo rm 1.12.5 1 ↵ (go1.4 node@v2.0.0) ~/github/oo/versions/1.5/src
go@1.12.5 removed
By default, oo prefers to bootstrap a new version via an existing installed version:
$ oo get 1.12.6
get https://codeload.github.com/golang/go/tar.gz/go1.12.6..
######################################################################## 100.0%
using go1.12.5 to bootstrap go1.12.6....
build successfully
=> go1.12.6
But we are still able to download a prebuilt packages directly from https://golang.org/dl/ without a build waiting:
$ oo get 1.10.3 --use-prebuilt
get https://dl.google.com/go/go1.10.3.darwin-amd64.tar.gz..
######################################################################## 100.0%
=> go1.10.3
Usage: oo [COMMAND]
Commands:
oo Output current go version
oo ls Output versions installed
oo <version> Use go <version>
oo use <version> Use go <version>
oo get <version> Get go <version>
oo rm <version> Remove the given version
oo as <version> Run go from oo on a specific version
oo dir [<version>] Show go directory by version
oo bin [<version>] Show go binary path by version
oo build [<version>] Build go by version
oo env Output current go env
oo upgrade Upgrade oo to latest version
Options:
-v, --version Output oo's version
-h, --help Output this help message
Environment Variables:
OO_MIRROR_PATTERN Mirror url pattern to download go source tarball
default: https://codeload.github.com/golang/go/tar.gz/go%s
OO_BUILD_CMD Command to build go from source, default: ./make.bash
OO_BOOTSTRAP_VERSION Bootstrap go version to compile the target version,
default: the latest installed version
Version: 0.0.7
$ export OO_MIRROR_PATTERN='https://storage.googleapis.com/golang/go%s.src.tar.gz'
$ oo get 1.12.6
get https://storage.googleapis.com/golang/go1.12.6.src.tar.gz..
########## 14.4%
If there are any errors during the bootstrap building, it's helpful to build manually to check what errors occurred:
cd path/to/oo/versions/x.x.x/src
GOROOT_BOOTSTRAP=path/to/downloaded/go ./all.bash
MIT.