72 lines
2.5 KiB
Markdown
72 lines
2.5 KiB
Markdown
|
# getgo
|
||
|
|
||
|
A proof-of-concept command-line installer for Go.
|
||
|
|
||
|
This installer is designed to both install Go as well as do the initial configuration
|
||
|
of setting up the right environment variables and paths.
|
||
|
|
||
|
It will install the Go distribution (tools & stdlib) to "/.go" inside your home directory by default.
|
||
|
|
||
|
It will setup "$HOME/go" as your GOPATH.
|
||
|
This is where third party libraries and apps will be installed as well as where you will write your Go code.
|
||
|
|
||
|
If Go is already installed via this installer it will upgrade it to the latest version of Go.
|
||
|
|
||
|
Currently the installer supports Windows, \*nix and macOS on x86 & x64.
|
||
|
It supports Bash and Zsh on all of these platforms as well as powershell & cmd.exe on Windows.
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
Windows Powershell/cmd.exe:
|
||
|
|
||
|
`(New-Object System.Net.WebClient).DownloadFile('https://get.golang.org/installer.exe', 'installer.exe'); Start-Process -Wait -NonewWindow installer.exe; Remove-Item installer.exe`
|
||
|
|
||
|
Shell (Linux/macOS/Windows):
|
||
|
|
||
|
`curl -LO https://get.golang.org/$(uname)/go_installer && chmod +x go_installer && ./go_installer && rm go_installer`
|
||
|
|
||
|
## To Do
|
||
|
|
||
|
* Check if Go is already installed (via a different method) and update it in place or at least notify the user
|
||
|
* Lots of testing. It's only had limited testing so far.
|
||
|
* Add support for additional shells.
|
||
|
|
||
|
## Development instructions
|
||
|
|
||
|
### Testing
|
||
|
|
||
|
There are integration tests in [`main_test.go`](main_test.go). Please add more
|
||
|
tests there.
|
||
|
|
||
|
#### On unix/linux with the Dockerfile
|
||
|
|
||
|
The Dockerfile automatically builds the binary, moves it to
|
||
|
`/usr/local/bin/getgo` and then unsets `$GOPATH` and removes all `$GOPATH` from
|
||
|
`$PATH`.
|
||
|
|
||
|
```bash
|
||
|
$ docker build --rm --force-rm -t getgo .
|
||
|
...
|
||
|
$ docker run --rm -it getgo bash
|
||
|
root@78425260fad0:~# getgo -v
|
||
|
Welcome to the Go installer!
|
||
|
Downloading Go version go1.8.3 to /usr/local/go
|
||
|
This may take a bit of time...
|
||
|
Adding "export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin" to /root/.bashrc
|
||
|
Downloaded!
|
||
|
Setting up GOPATH
|
||
|
Adding "export GOPATH=/root/go" to /root/.bashrc
|
||
|
Adding "export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/root/go/bin" to /root/.bashrc
|
||
|
GOPATH has been setup!
|
||
|
root@78425260fad0:~# which go
|
||
|
/usr/local/go/bin/go
|
||
|
root@78425260fad0:~# echo $GOPATH
|
||
|
/root/go
|
||
|
root@78425260fad0:~# echo $PATH
|
||
|
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/root/go/bin
|
||
|
```
|
||
|
|
||
|
## Release instructions
|
||
|
|
||
|
To upload a new release of getgo, run `./make.bash && ./upload.bash`.
|