mirror of
https://github.com/rootzoll/raspiblitz.git
synced 2024-11-20 10:12:06 +01:00
improve go script (#2670)
This commit is contained in:
parent
38749562c4
commit
792b0a7bb2
@ -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
|
||||
esac
|
Loading…
Reference in New Issue
Block a user