github.com/powerman/golang-tools@v0.1.11-0.20220410185822-5ad214d8d803/cmd/getgo/README.md (about)

     1  # getgo
     2  
     3  A proof-of-concept command-line installer for Go.
     4  
     5  This installer is designed to both install Go as well as do the initial configuration
     6  of setting up the right environment variables and paths.
     7  
     8  It will install the Go distribution (tools & stdlib) to "/.go" inside your home directory by default.
     9  
    10  It will setup "$HOME/go" as your GOPATH.
    11  This is where third party libraries and apps will be installed as well as where you will write your Go code.
    12  
    13  If Go is already installed via this installer it will upgrade it to the latest version of Go.
    14  
    15  Currently the installer supports Windows, \*nix and macOS on x86 & x64.
    16  It supports Bash and Zsh on all of these platforms as well as powershell & cmd.exe on Windows.
    17  
    18  ## Usage
    19  
    20  Windows Powershell/cmd.exe:
    21  
    22  `(New-Object System.Net.WebClient).DownloadFile('https://get.golang.org/installer.exe', 'installer.exe'); Start-Process -Wait -NonewWindow installer.exe; Remove-Item installer.exe`
    23  
    24  Shell (Linux/macOS/Windows):
    25  
    26  `curl -LO https://get.golang.org/$(uname)/go_installer && chmod +x go_installer && ./go_installer && rm go_installer`
    27  
    28  ## To Do
    29  
    30  * Check if Go is already installed (via a different method) and update it in place or at least notify the user
    31  * Lots of testing. It's only had limited testing so far.
    32  * Add support for additional shells.
    33  
    34  ## Development instructions
    35  
    36  ### Testing
    37  
    38  There are integration tests in [`main_test.go`](main_test.go). Please add more
    39  tests there.
    40  
    41  #### On unix/linux with the Dockerfile
    42  
    43  The Dockerfile automatically builds the binary, moves it to
    44  `/usr/local/bin/getgo` and then unsets `$GOPATH` and removes all `$GOPATH` from
    45  `$PATH`.
    46  
    47  ```bash
    48  $ docker build --rm --force-rm -t getgo .
    49  ...
    50  $ docker run --rm -it getgo bash
    51  root@78425260fad0:~# getgo -v
    52  Welcome to the Go installer!
    53  Downloading Go version go1.8.3 to /usr/local/go
    54  This may take a bit of time...
    55  Adding "export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin" to /root/.bashrc
    56  Downloaded!
    57  Setting up GOPATH
    58  Adding "export GOPATH=/root/go" to /root/.bashrc
    59  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
    60  GOPATH has been setup!
    61  root@78425260fad0:~# which go
    62  /usr/local/go/bin/go
    63  root@78425260fad0:~# echo $GOPATH
    64  /root/go
    65  root@78425260fad0:~# echo $PATH
    66  /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/root/go/bin
    67  ```
    68  
    69  ## Release instructions
    70  
    71  To upload a new release of getgo, run `./make.bash && ./upload.bash`.