X-Git-Url: https://iankelling.org/git/?p=buildscripts;a=blobdiff_plain;f=go;fp=go;h=9175d0cd00c5496e9cad49abb2fcfdf11efab699;hp=0000000000000000000000000000000000000000;hb=c426f5dc07b0a086a3163697db3abb516955566c;hpb=850dedd6b7a117c86c4e3e97a4ad1c948e9cd7a0 diff --git a/go b/go new file mode 100755 index 0000000..9175d0c --- /dev/null +++ b/go @@ -0,0 +1,51 @@ +#!/bin/bash +# Copyright (C) 2019 Ian Kelling +# SPDX-License-Identifier: AGPL-3.0-or-later + +# usage: no args, run to install latest go. + +if [ -z "$BASH_VERSION" ]; then echo "error: shell is not bash" >&2; exit 1; fi + +shopt -s inherit_errexit 2>/dev/null ||: # ignore fail in bash < 4.4 +source /a/bin/errhandle/err + +m() { printf "$pre %s\n" "$*"; "$@"; } +e() { printf "$pre %s\n" "$*"; } +err() { echo "[$(date +'%Y-%m-%d %H:%M:%S%z')]: $0: $*" >&2; } + +m cd /a/opt/go.git +m git fetch +vers=($(git tag | sort -Vr | grep -E '^go[0-9.]+$' | head)) + +ver=${vers[0]} +dl() { + arch=$(dpkg --print-architecture) + f=${ver}.linux-${arch}.tar.gz + + if [[ -e $f ]]; then + timestamp=$(stat -c %Y $f) + else + timestamp=0 + fi + m wget -N https://dl.google.com/go/$f || ret=$? +} +dl +# 8 is return code for 404. for a new release, they might not have a binary out yet +if [[ $ret == 8 ]]; then + ver=${vers[1]} + dl +fi + +new_timestamp=$(stat -c %Y $f) +if [[ $timestamp != $new_timestamp || ! -e /usr/local/go/bin/go ]]; then + m sudo rm -rf /usr/local/go + m sudo tar -C /usr/local -xzf $f +fi + +shopt -s nullglob +for x in go*.tar.gz; do + if [[ $x == $f ]]; then continue; fi + rm -fv $x +done + +go get -u mvdan.cc/fdroidcl