X-Git-Url: https://iankelling.org/git/?p=buildscripts;a=blobdiff_plain;f=go;fp=go;h=d948b9d0063c95c53c1cad4128a5f64abc8e8c5a;hp=547a1345d968e48bfec6b2820c97989058247271;hb=2734f99556feff8f8861a193d77c438ac9b8aa11;hpb=6d5364acaf732814110b7ab98ef1d266276f64ee diff --git a/go b/go index 547a134..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,7 +62,6 @@ 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 @@ -43,15 +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 +fi - shopt -s nullglob - for x in go*.tar.gz; do - if [[ $x == $f ]]; then continue; fi - rm -fv $x - done - +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 + +for x in go*.tar.gz; do + if [[ $x == $f ]]; then continue; fi + rm -fv $x +done