#!/bin/bash

GOLANG_VER=1.15.6

PROGNAME="${BASH_SOURCE[0]}"
HERE="$(cd "$(dirname "$PROGNAME")" &>/dev/null && pwd)"
READIES=$(cd $HERE/.. && pwd)
. $READIES/shibumi/defs

OP=""
[[ $NOP == 1 ]] && OP=echo

[[ ! -z $(command -v go) && $FORCE != 1 ]] && exit 0

OS=`uname -s`
if [[ $OS == Linux ]]; then
	GOLANG_OS=linux
elif [[ $OS == Darwin ]]; then
	GOLANG_OS=darwin
else
	eprint "Cannot determine OS"
	exit 1
fi

ARCH=`uname -m`
if [[ $ARCH == x86_64 ]]; then
	GOLANG_ARCH=amd64
elif [[ $ARCH == aarch64 ]]; then
	GOLANG_ARCH=arm64
else
	eprint "Cannot determine CPU"
	exit 1
fi

tar=$(mktemp /tmp/golang.XXXXX.tag.gz)
runn wget --no-verbose -O $tar https://dl.google.com/go/go${GOLANG_VER}.${GOLANG_OS}-${GOLANG_ARCH}.tar.gz
if [[ $OS == Darwin ]]; then
    local_dir=/usr/local/opt
	if [[ -d $local_dir ]]; then
	    # this may require sudo
	    local_dir=/usr/local
	fi
else
    local_dir=/usr/local
fi
if [[ -w $local_dir ]]; then
	runn tar -C $local_dir -xzf $tar
else
	runn sudo tar -C $local_dir -xzf $tar
fi
runn rm -f $tar

profile_d=`get_profile_d`
if [[ $NOP != 1 ]]; then
	cat <<-EOF > $profile_d/golang.sh
		export PATH=\${PATH}:${local_dir}/go/bin
		export PATH=\${PATH}:`${local_dir}/go/bin/go env GOPATH`/bin
		EOF
fi

echo "to enable golang, invoke: source $profile_d/golang.sh"
