eb86add76d56653f26c924a8a23490657add80fa
2 # Copyright (C) 2019 Ian Kelling
3 # SPDX-License-Identifier: AGPL-3.0-or-later
5 # usage: no args, run to install latest go.
7 if [ -z "$BASH_VERSION" ]; then echo "error: shell is not bash" >&2; exit 1; fi
9 shopt -s inherit_errexit
2>/dev
/null ||
: # ignore fail in bash < 4.4
10 source /a
/bin
/errhandle
/err
12 m
() { printf "$pre %s\n" "$*"; "$@"; }
13 e
() { printf "$pre %s\n" "$*"; }
14 err
() { echo "[$(date +'%Y-%m-%d %H:%M:%S%z')]: $0: $*" >&2; }
18 # don't check for updates on go more than once a day
19 yesterday
=$
(( $
(date +%s
) - 60*60*24 ))
20 if (( $
(stat
-c %Y FETCH_HEAD
) < yesterday
)); then
22 touch ~
/.local
/gofetch
24 vers
=($
(git tag |
sort -Vr |
grep -E '^go[0-9.]+$' |
head))
28 arch
=$
(dpkg
--print-architecture)
29 f
=${ver}.linux-
${arch}.
tar.gz
32 timestamp
=$
(stat
-c %Y
$f)
36 m wget
-N https
://dl.google.com
/go
/$f || ret
=$?
39 # 8 is return code for 404. for a new release, they might not have a binary out yet
40 if [[ $ret == 8 ]]; then
45 new_timestamp
=$
(stat
-c %Y
$f)
46 if [[ $timestamp != $new_timestamp ||
! -e /usr
/local
/go
/bin
/go
]]; then
47 m sudo
rm -rf /usr
/local
/go
48 m sudo
tar -C /usr
/local -xzf $f
52 for x
in go
*.
tar.gz
; do
53 if [[ $x == $f ]]; then continue; fi
60 go get
-u mvdan.cc
/fdroidcl