meta: add a script to auto-update *_COMMIT
and *_SHA256
envs
This commit is contained in:
parent
9a79aeba8f
commit
98cb2e2a63
1
TODO.md
1
TODO.md
|
@ -4,7 +4,6 @@ remove elements from this list as you see fit.
|
||||||
|
|
||||||
* meta: do build virtualization without Docker, a la Void Linux
|
* meta: do build virtualization without Docker, a la Void Linux
|
||||||
* meta: describe Dockerfile gotchas and whatnot
|
* meta: describe Dockerfile gotchas and whatnot
|
||||||
* meta: add a script to auto-update `*_COMMIT` and `*_SHA256` envs
|
|
||||||
* meta: create a custom preprocessor to generate shell scripts
|
* meta: create a custom preprocessor to generate shell scripts
|
||||||
* takes a sane syntax and transforms it into my fucked-up code style with `&&`s
|
* takes a sane syntax and transforms it into my fucked-up code style with `&&`s
|
||||||
* meta: generate Dockerfiles too
|
* meta: generate Dockerfiles too
|
||||||
|
|
48
auto-update
Executable file
48
auto-update
Executable file
|
@ -0,0 +1,48 @@
|
||||||
|
#!/usr/bin/env sh
|
||||||
|
|
||||||
|
note() {
|
||||||
|
local IFS=' '
|
||||||
|
printf '\033[1m%s\033[0m\n' "$*" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
investigate() {
|
||||||
|
url="${1?huh}"
|
||||||
|
[ "${url#"https://github.com/"}" = "$url" ] \
|
||||||
|
&& re='/commit/' || re='/spoofed_commit_check/'
|
||||||
|
curl $curlflags "$url" | grep -F "$re" | grep -Eo '[0-9a-f]{40}'
|
||||||
|
}
|
||||||
|
|
||||||
|
set -- \
|
||||||
|
cosmo COSMO_COMMIT https://github.com/jart/cosmopolitan \
|
||||||
|
cosmo-kuroko KUROKO_COMMIT https://github.com/kuroko-lang/kuroko \
|
||||||
|
cosmo-muon MUON_COMMIT https://git.sr.ht/~lattis/muon \
|
||||||
|
cosmo-perl PERL_COMMIT https://github.com/G4Vi/perl5/tree/cosmo \
|
||||||
|
cosmo-python PYTHON_COMMIT https://github.com/ahgamut/cpython/tree/cosmo_py311 \
|
||||||
|
cosmo-yices KISSAT_COMMIT https://github.com/BrunoDutertre/kissat \
|
||||||
|
cosmo-yices YICES_COMMIT https://github.com/SRI-CSL/yices2 \
|
||||||
|
;
|
||||||
|
|
||||||
|
me="$(readlink -f "$0")" && cd "${me%/*}" || exit
|
||||||
|
curlflags="-L --no-progress-meter"
|
||||||
|
any=0
|
||||||
|
|
||||||
|
while [ $# != 0 ]; do
|
||||||
|
dir="$1" tag="$2" url="$3"
|
||||||
|
shift && shift && shift || { note 'not a multiple of 3!'; exit 255 ;}
|
||||||
|
ours="$(grep -F "$tag"= "$dir/Dockerfile" | grep -Eo '[0-9a-f]{40}' | head -n1)"
|
||||||
|
theirs="$(investigate "$url" | head -n1)"
|
||||||
|
if [ ${#theirs} == 0 ]; then
|
||||||
|
note "failed to retrieve update for $tag"
|
||||||
|
elif [ "$ours" != "$theirs" ]; then
|
||||||
|
any=1
|
||||||
|
note "updating $dir"
|
||||||
|
other="${tag%_COMMIT}_SHA256"
|
||||||
|
tgz="${url%/}"
|
||||||
|
tgz="${tgz%%/tree/*}"
|
||||||
|
tgz="$tgz/archive/$theirs.tar.gz"
|
||||||
|
sum="$(curl $curlflags "$tgz" | sha256sum - | awk '{print $1}')"
|
||||||
|
notwa-util/shed "$dir/Dockerfile" "s/$ours/$theirs/g"
|
||||||
|
notwa-util/shed "$dir/Dockerfile" "s/$other=.*/$other=$sum/g"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
[ $any = 1 ] || note "no new updates"
|
Loading…
Reference in New Issue
Block a user