Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1#! /usr/bin/env nix-shell 2#! nix-shell -i oil -p oil jq sd nix-prefetch-github ripgrep moreutils 3 4# TODO set to `verbose` or `extdebug` once implemented in oil 5shopt --set xtrace 6# we need failures inside of command subs to get the correct dependency sha256 7shopt --unset inherit_errexit 8 9const directory = $(dirname $0 | xargs realpath) 10const owner = "LemmyNet" 11const ui_repo = "lemmy-ui" 12const server_repo = "lemmy" 13const latest_rev = $(curl -q https://api.github.com/repos/${owner}/${server_repo}/releases/latest | \ 14 jq -r '.tag_name') 15const latest_version = $(echo $latest_rev) 16const current_version = $(jq -r '.version' $directory/pin.json) 17if (latest_version === $current_version) { 18 echo "lemmy is already up-to-date" 19 return 0 20} else { 21 # for some strange reason, hydra fails on reading upstream package.json directly 22 const source = "https://raw.githubusercontent.com/$owner/$ui_repo/$latest_version" 23 const package_json = $(curl -qf $source/package.json) 24 echo $package_json > $directory/package.json 25 26 const server_tarball_meta = $(nix-prefetch-github $owner $server_repo --rev $latest_rev) 27 const server_tarball_hash = "sha256-$(echo $server_tarball_meta | jq -r '.sha256')" 28 const ui_tarball_meta = $(nix-prefetch-github $owner $ui_repo --rev $latest_rev) 29 const ui_tarball_hash = "sha256-$(echo $ui_tarball_meta | jq -r '.sha256')" 30 31 jq ".version = \"$latest_version\" | \ 32 .\"serverSha256\" = \"$server_tarball_hash\" | \ 33 .\"uiSha256\" = \"$ui_tarball_hash\" | \ 34 .\"serverCargoSha256\" = \"\" | \ 35 .\"uiYarnDepsSha256\" = \"\"" $directory/pin.json | sponge $directory/pin.json 36 37 const new_cargo_sha256 = $(nix-build -A lemmy-server 2>&1 | \ 38 tail -n 2 | \ 39 head -n 1 | \ 40 sd '\s+got:\s+' '') 41 42 const new_offline_cache_sha256 = $(nix-build -A lemmy-ui 2>&1 | \ 43 tail -n 2 | \ 44 head -n 1 | \ 45 sd '\s+got:\s+' '') 46 47 jq ".\"serverCargoSha256\" = \"$new_cargo_sha256\" | \ 48 .\"uiYarnDepsSha256\" = \"$new_offline_cache_sha256\"" \ 49 $directory/pin.json | sponge $directory/pin.json 50} 51