Skip to content
/ oo Public
forked from hit9/oo

Simple Go Version Manager.

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE-MIT
MIT
LICENSE-TJ-N
Notifications You must be signed in to change notification settings

lovefcaaa/oo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OO - Go Version Manager

Latest version: 0.0.7

oo was heavily inspired by tj/n.

Requirements

Supported system:

  • Mac OSX
  • Linux

Requirements:

  • Bash
  • Curl

Install

  1. Clone this repo.

  2. 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

Examples

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 [email protected]) ~/github/oo/versions/1.5/src
[email protected] removed

Using Prebuilt

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

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

Custom Mirror

$ 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%

Similar Projects

Troubles

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

License

MIT.

About

Simple Go Version Manager.

Resources

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE-MIT
MIT
LICENSE-TJ-N

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 100.0%