Giter Site home page Giter Site logo

oo's Introduction

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.

oo's People

Contributors

hit9 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.