f2b3bb0049
A couple fixes: * Disable integration tests in short mode. * Remove import of "google.golang.org/appengine" package. App Engine has two ways to create an app: as a main package and calling appengine.Main(), and as any regular Go package with handlers registered in init(). Change-Id: Ib416111786c1c86cf428d91c60dc406c251d3ca1 Reviewed-on: https://go-review.googlesource.com/52211 Run-TryBot: Chris Broadfoot <cbro@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Jaana Burcu Dogan <jbd@google.com> |
||
---|---|---|
.. | ||
server | ||
.dockerignore | ||
.gitignore | ||
Dockerfile | ||
download_test.go | ||
download.go | ||
LICENSE | ||
main_test.go | ||
main.go | ||
make.bash | ||
path_test.go | ||
path.go | ||
README.md | ||
steps.go | ||
system_unix.go | ||
system_windows.go | ||
system.go | ||
upload.bash |
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
. 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
.
$ 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
.