diff --git a/home.admin/config.scripts/bonus.go.sh b/home.admin/config.scripts/bonus.go.sh index e4ba875d..d622099a 100755 --- a/home.admin/config.scripts/bonus.go.sh +++ b/home.admin/config.scripts/bonus.go.sh @@ -1,102 +1,60 @@ -#!/bin/bash +#!/usr/bin/env sh -# command info -if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then - echo "config script to install Go" - echo "bonus.go.sh [on|off]" - exit 1 -fi +# set version, check: https://golang.org/dl/ +goVersion="1.17.3" +downloadFolder="/home/admin/download" -# switch on -if [ "$1" = "1" ] || [ "$1" = "on" ]; then +usage(){ + printf "Config script to install or remove Go\n" + printf "./bonus.go.sh [on|off]\n" + exit 1 +} - # set version, check: https://github.com/golang/go/releases - goVersion="1.16.2" +case "$1" in - # get cpu architecture - isARM=$(uname -m | grep -c 'arm') - isAARCH64=$(uname -m | grep -c 'aarch64') - isX86_64=$(uname -m | grep -c 'x86_64') - - # make sure go is installed - - # get Go vars - needed if there was no log-out since Go installed - source /etc/profile - - echo "Check Framework: Go" - goInstalled=$(go version 2>/dev/null | grep -c 'go') - if [ ${goInstalled} -eq 0 ];then - if [ ${isARM} -eq 1 ] ; then - goOSversion="armv6l" - fi - if [ ${isAARCH64} -eq 1 ] ; then - goOSversion="arm64" - fi - if [ ${isX86_64} -eq 1 ] ; then - goOSversion="amd64" - fi - - echo "*** Installing Go v${goVersion} for ${goOSversion} ***" - - # wget https://storage.googleapis.com/golang/go${goVersion}.linux-${goOSversion}.tar.gz - cd /home/admin/download - wget https://dl.google.com/go/go${goVersion}.linux-${goOSversion}.tar.gz - if [ ! -f "./go${goVersion}.linux-${goOSversion}.tar.gz" ] - then - echo "!!! FAIL !!! Download not success." - rm -f go${goVersion}.linux-${goOSversion}.tar.gz* + 1|on) # switch on + . /etc/profile # get Go vars - needed if there was no log-out since Go installed + printf "Check Framework: Go\n" + if go version 2>/dev/null | grep -q "go" ; then + printf "\nVersion of Go requested already installed.\n" + go version + printf "\n" + else + architecture="$(uname -m)" + case "${architecture}" in + arm*) goOSversion="armv6l";; + aarch64) goOSversion="arm64";; + x86_64) goOSversion="amd64";; + *) printf %s"Not available for architecture=${architecture}\n"; exit 1 + esac + printf %s"\n*** Installing Go v${goVersion} for ${goOSversion} \n***" + wget https://dl.google.com/go/go${goVersion}.linux-${goOSversion}.tar.gz -P ${downloadFolder} + if [ ! -f "${downloadFolder}/go${goVersion}.linux-${goOSversion}.tar.gz" ]; then + printf "!!! FAIL !!! Download failed.\n" + rm -fv go${goVersion}.linux-${goOSversion}.tar.gz* exit 1 + fi + sudo tar -C /usr/local -xzf ${downloadFolder}/go${goVersion}.linux-${goOSversion}.tar.gz + rm -fv ${downloadFolder}/go${goVersion}.linux-${goOSversion}.tar.gz* + sudo mkdir -v /usr/local/gocode + sudo chmod -v 777 /usr/local/gocode + export GOROOT=/usr/local/go + export PATH=$PATH:$GOROOT/bin + export GOPATH=/usr/local/gocode + export PATH=$PATH:$GOPATH/bin + sudo grep -q "GOROOT=" /etc/profile || { printf "\nGOROOT=/usr/local/go\nPATH=\$PATH:\$GOROOT/bin/\nGOPATH=/usr/local/gocode\nPATH=\$PATH:\$GOPATH/bin/\n\n" | sudo tee -a /etc/profile; } + go env -w GOPATH=/usr/local/gocode # set GOPATH https://github.com/golang/go/wiki/SettingGOPATH + go version | grep -q "go" || { printf "FAIL: Unable to install Go\n"; exit 1; } + printf %s"Installed $(go version 2>/dev/null)\n\n" fi - sudo tar -C /usr/local -xzf go${goVersion}.linux-${goOSversion}.tar.gz - rm -f go${goVersion}.linux-${goOSversion}.tar.gz* - sudo mkdir /usr/local/gocode - sudo chmod 777 /usr/local/gocode - export GOROOT=/usr/local/go - export PATH=$PATH:$GOROOT/bin - export GOPATH=/usr/local/gocode - export PATH=$PATH:$GOPATH/bin - if [ $(cat /etc/profile | grep -c "GOROOT=") -eq 0 ]; then - sudo bash -c "echo 'GOROOT=/usr/local/go' >> /etc/profile" - sudo bash -c "echo 'PATH=\$PATH:\$GOROOT/bin/' >> /etc/profile" - sudo bash -c "echo 'GOPATH=/usr/local/gocode' >> /etc/profile" - sudo bash -c "echo 'PATH=\$PATH:\$GOPATH/bin/' >> /etc/profile" - fi + ;; - # set GOPATH https://github.com/golang/go/wiki/SettingGOPATH - go env -w GOPATH=/usr/local/gocode - - goInstalled=$(go version 2>/dev/null | grep -c 'go') - fi - if [ ${goInstalled} -eq 0 ];then - echo "FAIL: Was not able to install Go" - sleep 4 - exit 1 - fi + 0|off) # switch off + printf "*** REMOVING GO ***\n" + sudo rm -rf /usr/local/go /usr/local/gocode + printf "OK Go removed.\n" + ;; - correctGoVersion=$(go version | grep -c "go${goVersion}") - if [ ${correctGoVersion} -eq 0 ]; then - echo "WARNING: You work with an untested version of GO - should be ${goVersion} .. trying to continue" - go version - sleep 3 - echo "" - fi + *) usage - # setting value in raspi blitz config - echo "" - echo "Installed $(go version)" - echo "" - exit 0 -fi - -# switch off -if [ "$1" = "0" ] || [ "$1" = "off" ]; then - # setting value in raspiblitz config - echo "*** REMOVING GO ***" - sudo rm -rf /usr/local/go - sudo rm -rf /usr/local/gocode - echo "OK Go removed." - exit 0 -fi - -echo "FAIL - Unknown Parameter $1" -exit 1 \ No newline at end of file +esac \ No newline at end of file