@ -1,5 +1,5 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p common-updater-scripts curl crystal crystal2nix jq git gnused nix nix-prefetch-git nix-update pkg-config
#!nix-shell -i bash -p curl crystal crystal2nix jq git moreutils nix nix-prefetch pkg-config
git_url = 'https://github.com/iv-org/invidious.git'
git_branch = 'master'
git_dir = '/var/tmp/invidious.git'
@ -7,6 +7,8 @@ pkg='invidious'
set -euo pipefail
cd " $( dirname " ${ BASH_SOURCE [0] } " ) "
info( ) {
if [ -t 2 ] ; then
set -- '\033[32m%s\033[39m\n' " $@ "
@ -16,8 +18,16 @@ info() {
printf " $@ " >& 2
}
old_rev = $( nix-instantiate --eval --strict --json -A " $pkg .src.rev " | jq -r)
old_version = $( nix-instantiate --eval --strict --json -A " $pkg .version " | jq -r)
json_get( ) {
jq -r " $1 " < 'versions.json'
}
json_set( ) {
jq --arg x " $2 " " $1 = \$x " < 'versions.json' | sponge 'versions.json'
}
old_rev = $( json_get '.invidious.rev' )
old_version = $( json_get '.invidious.version' )
today = $( LANG = C date -u +'%Y-%m-%d' )
info " fetching $git_url ... "
@ -39,22 +49,19 @@ if [ "$new_rev" = "$old_rev" ]; then
exit
fi
new_sha256 = $( nix-prefetch-git --rev " $new_rev " " $git_dir " | jq -r .sha256)
update-source-version " $pkg " \
" $new_version " \
" $new_sha256 " \
--rev= " $new_rev "
json_set '.invidious.version' " $new_version "
json_set '.invidious.rev' " $new_rev "
new_sha256 = $( nix-prefetch -I 'nixpkgs=../../..' " $pkg " )
json_set '.invidious.sha256' " $new_sha256 "
commit_msg = " $pkg : $old_version -> $new_version "
cd " $( dirname " ${ BASH_SOURCE [0] } " ) "
# fetch video.js dependencies
info "Running scripts/fetch-player-dependencies.cr..."
git -C " $git_dir " reset --hard " $new_rev "
( cd " $git_dir " && crystal run scripts/fetch-player-dependencies.cr -- --minified)
rm -f " $git_dir /assets/videojs/.gitignore "
videojs_new_sha256 = $( nix hash-path --type sha256 --base32 " $git_dir /assets/videojs " )
sed -e " s,\boutputHash = .*,outputHash = \ " $videojs_new_sha256 \";, " -i 'videojs.nix'
json_set '.videojs.sha256' " $videojs_new_sha256 "
if git -C " $git_dir " diff-tree --quiet " ${ old_rev } .. ${ new_rev } " -- 'shard.lock' ; then
info " shard.lock did not change since $old_rev . "
@ -62,27 +69,28 @@ else
info "Updating shards.nix..."
crystal2nix -- " $git_dir /shard.lock " # argv's index seems broken
lsquic_old_version = $( nix-instantiate --eval --strict --json -A " ${ pkg } .lsquic.version " '../../..' | jq -r)
lsquic_old_version = $( json_get '.lsquic.version' )
# lsquic.cr's version tracks lsquic's, so lsquic must be updated to the
# version in the shards file
lsquic_new_version = $( nix eval --raw -f 'shards.nix' lsquic.rev \
| sed -e 's/^v//' -e 's/-[0-9]*$//' )
if [ " $lsquic_old_version " != " $lsquic_new_version " ] ; then
info " Updating lsquic to $lsquic_new_version ... "
nix-update --version " $lsquic_new_version " -f '../../..' invidious.lsquic
if git diff-index --quiet HEAD -- 'lsquic.nix' ; then
info "lsquic is up-to-date. "
else
boringssl_new_version = $( curl -LSsf " https://github.com/litespeedtech/lsquic/raw/v ${ lsquic_new_version } /README.md " \
| grep -Pom1 '(?<=^git checkout ).*' )
boringssl_new_sha256 = $( nix-prefetch-git --rev " $boringssl_new_version " 'https://boringssl.googlesource.com/boringssl' \
| jq -r .sha256 )
sed -e " 0,/^ *version = .*/ s// version = \" $boringssl_new_version \";/ " \
-e " 0,/^ *sha256 = .*/ s// sha256 = \" $boringssl_new_sha256 \";/ " \
-i 'lsquic.nix'
commit_msg = " $commit_msg
json_set '.lsquic.version' " $lsquic_new_version "
lsquic_new_sha256 = $( nix-prefetch -I 'nixpkgs=../../..' " ${ pkg } .lsquic " )
json_set '.lsquic.sha256' " $lsquic_new_sha256 "
info "Updating boringssl..."
# lsquic specifies the boringssl commit it requires in its README
boringssl_new_rev = $( curl -LSsf " https://github.com/litespeedtech/lsquic/raw/v ${ lsquic_new_version } /README.md " \
| grep -Pom1 '(?<=^git checkout ).*' )
json_set '.boringssl.rev' " $boringssl_new_rev "
boringssl_new_sha256 = $( nix-prefetch -I 'nixpkgs=../../..' " ${ pkg } .lsquic.boringssl " )
json_set '.boringssl.sha256' " $boringssl_new_sha256 "
commit_msg = " $commit_msg
lsquic: $lsquic_old_version -> $lsquic_new_version "
fi
fi
fi
git commit --verbose --message " $commit_msg " * .nix
git commit --verbose --message " $commit_msg " -- versions.json shards .nix