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))
dl() {
arch=$(dpkg --print-architecture)
f=${ver}.linux-${arch}.tar.gz
-
if [[ -e $f ]]; then
timestamp=$(stat -c %Y $f)
else
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