X-Git-Url: https://iankelling.org/git/?p=buildscripts;a=blobdiff_plain;f=go;h=d58bca7c87aa463d2b7662ba9ac464476e292cdc;hp=d948b9d0063c95c53c1cad4128a5f64abc8e8c5a;hb=HEAD;hpb=6aee7dbe350924175b21afe367ca37ddbc23c2f2 diff --git a/go b/go index d948b9d..354b92e 100755 --- a/go +++ b/go @@ -1,13 +1,32 @@ #!/bin/bash -# Copyright (C) 2019 Ian Kelling -# SPDX-License-Identifier: AGPL-3.0-or-later +# I, Ian Kelling, follow the GNU license recommendations at +# https://www.gnu.org/licenses/license-recommendations.en.html. They +# recommend that small programs, < 300 lines, be licensed under the +# Apache License 2.0. This file contains or is part of one or more small +# programs. If a small program grows beyond 300 lines, I plan to switch +# its license to GPL. + +# Copyright 2024 Ian Kelling + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # 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 +source /usr/local/lib/bash-bear force=false case $1 in @@ -19,6 +38,11 @@ e() { printf "$pre %s\n" "$*"; } err() { echo "[$(date +'%Y-%m-%d %H:%M:%S%z')]: $0: $*" >&2; } +if [[ ! -d /a/opt/go.git ]]; then + mkdir -p /a/opt + cd /a/opt + git clone --bare https://go.googlesource.com/go +fi m cd /a/opt/go.git @@ -27,8 +51,13 @@ install=false if ! $force; then yesterday=$(( $(date +%s) - 60*60*24 )) + fetch_mtime=$(stat -c %Y FETCH_HEAD) + if [[ ! $fetch_mtime ]]; then + err failed to get output from stat -c %Y FETCH_HEAD + exit 1 + fi # no need to check for updates on go more than once a day - if (( $(stat -c %Y FETCH_HEAD) > yesterday )); then + if (( fetch_mtime > yesterday )); then up=false fi @@ -54,6 +83,7 @@ fi if $up; then m git fetch --tags + mkdir -p ~/.local touch ~/.local/gofetch vers=($(git tag | sort -Vr | grep -E '^go[0-9.]+$' | head))