X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=go;h=d948b9d0063c95c53c1cad4128a5f64abc8e8c5a;hb=2734f99556feff8f8861a193d77c438ac9b8aa11;hp=eb86add76d56653f26c924a8a23490657add80fa;hpb=a92d67f31b2f8359baf97eabb0833e17c59ba92f;p=buildscripts diff --git a/go b/go index eb86add..d948b9d 100755 --- a/go +++ b/go @@ -9,16 +9,51 @@ 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 +force=false +case $1 in + -f) force=true ;; +esac + 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 -# don't check for updates on go more than once a day -yesterday=$(( $(date +%s) - 60*60*24 )) -if (( $(stat -c %Y FETCH_HEAD) < yesterday )); then - m git fetch + +up=true +install=false + +if ! $force; then + yesterday=$(( $(date +%s) - 60*60*24 )) + # no need to check for updates on go more than once a day + if (( $(stat -c %Y FETCH_HEAD) > yesterday )); then + up=false + fi + + # update will get overwritten if we dont do it on central host. + if [[ -e /a/bin/bash_unpublished/source-state ]]; then + source /a/bin/bash_unpublished/source-state + if [[ $HOSTNAME != "$HOST2" ]]; then + up=false + fi + fi +fi + +shopt -s nullglob + +f=$( + for f in go*.tar.gz; do + echo $f + done | sort -Vr | head -n1 + ) +if [[ ! $f ]]; then + up=true +fi + +if $up; then + m git fetch --tags touch ~/.local/gofetch vers=($(git tag | sort -Vr | grep -E '^go[0-9.]+$' | head)) @@ -27,13 +62,12 @@ if (( $(stat -c %Y FETCH_HEAD) < yesterday )); then 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=$? + m wget -nv -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 @@ -43,18 +77,17 @@ if (( $(stat -c %Y FETCH_HEAD) < yesterday )); then 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 + if [[ $timestamp != $new_timestamp ]]; then + install=true fi - - shopt -s nullglob - for x in go*.tar.gz; do - if [[ $x == $f ]]; then continue; fi - rm -fv $x - done - fi +if $install || [[ ! -e /usr/local/go/bin/go ]]; then + m sudo rm -rf /usr/local/go + m sudo tar -C /usr/local -xzf $f +fi -go get -u mvdan.cc/fdroidcl +for x in go*.tar.gz; do + if [[ $x == $f ]]; then continue; fi + rm -fv $x +done