Skip to content

Instantly share code, notes, and snippets.

@nareshganesan
Created June 15, 2018 05:53
Show Gist options
  • Save nareshganesan/e237469d66d9d2f839d924f08d322f74 to your computer and use it in GitHub Desktop.
Save nareshganesan/e237469d66d9d2f839d924f08d322f74 to your computer and use it in GitHub Desktop.
install script for golang (Linux, Mac OS)
#!/bin/bash
err_report() {
echo "Error on line $1"
}
trap 'err_report $LINENO' ERR
usage() {
echo "Usage: $0
Options:
$1" 1>&2;
exit 1;
}
force_create=0;
while getopts "hv" o; do
case "${o}" in
v) go_version=${OPTARG}
;;
h) usage "-v (optional) go lang version (default: 1.10.1)
-h help" >&2;
exit 0;;
\?) usage "-v (optional) go lang version (default: 1.10.1)
-h help" >&2;
exit 1;;
:) echo "Option -$OPTARG requires an argument." >&2
exit 1;;
esac
done
if [ ! "$go_version" ]
then
go_version='1.10.1';
fi
version="$go_version";
unameOut="$(uname -s)"
case "${unameOut}" in
Linux*) machine=$(echo "$unameOut" | tr '[:upper:]' '[:lower:]');
;;
Darwin*) machine=$(echo "$unameOut" | tr '[:upper:]' '[:lower:]');
;;
*) machine="UNKNOWN:${unameOut}"
esac
# get the user running the script
user=$(whoami | awk '{print $1}');
echo "User: "$user;
COMPANY_NAME=company
if [ $machine == 'linux' ]; then
echo "OS type: Linux"
company_home="/home/$user/$COMPANY_NAME";
bashrc_path="/home/$user/.bashrc";
elif [ $machine == 'darwin' ]; then
echo "OS type: OS X"
company_home="/Users/$user/$COMPANY_NAME";
bashrc_path="/Users/$user/.bash_profile";
else
echo "OS type: unknown"
company_home="/home/$user/$COMPANY_NAME";
bashrc_path="/home/$user/.profile";
fi
mkdir -p $company_home;
# chown -R $user:$user $company_home;
function source_env {
source $bashrc_path;
}
if [ ! -f go$version.$machine-amd64.tar.gz ]; then
# download only if go source is not present
echo "Downloading go lang version for "${machine}
echo go$version.$machine-amd64.tar.gz;
wget https://storage.googleapis.com/golang/go$version.$machine-amd64.tar.gz;
chown -R $user:$user go$version.$machine-amd64.tar.gz;
else
echo "Using existing go source: go"$version.$machine-amd64.tar.gz;
chown -R $user:$user go$version.$machine-amd64.tar.gz;
fi
sudo tar -C /usr/local -xzf go$version.$machine-amd64.tar.gz;
echo "Go downloaded and extracted to /usr/local/go."
echo "Setting GOROOT and GOPATH in bashrc"
echo '# company configurations' >> $bashrc_path;
echo 'export COMPANY_NAME=company' >> $bashrc_path;
source_env
echo '# go configurations' >> $bashrc_path;
echo 'export PATH=$PATH:/usr/local/go/bin' >> $bashrc_path;
source_env
go_workspace=$company_home/go;
mkdir -p $go_workspace $go_workspace/src $go_workspace/pkg $go_workspace/bin
echo "export GOPATH=$company_home/go" >> $bashrc_path;
source_env
echo "go lang installed in the below path: "
eval echo "location: /usr/local/go/bin";
eval echo "GOPATH: ${go_workspace}";
/usr/local/go/bin/go version;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment