43 lines
1.3 KiB
Bash
Executable File
43 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env nix-shell
|
|
#!nix-shell -i bash -p curl gnused gawk nix-prefetch nix-prefetch-git common-updater-scripts jq prefetch-npm-deps
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT="$(dirname "$(readlink -f "$0")")"
|
|
NIX_DRV="$ROOT/package.nix"
|
|
if [ ! -f "$NIX_DRV" ]; then
|
|
echo "ERROR: cannot find package.nix in $ROOT"
|
|
exit 1
|
|
fi
|
|
|
|
REPO="advplyr/audiobookshelf"
|
|
|
|
NEW_VER=$(list-git-tags --url=https://github.com/$REPO | rg 'v[0-9\.]*$' | sed -e 's/^v//' | sort -V | tail -n 1)
|
|
OLD_VER=$(nix-instantiate --eval -A audiobookshelf.version | jq --exit-status --raw-output)
|
|
|
|
if [ "$NEW_VER" == "$OLD_VER" ]; then
|
|
echo "No update needed."
|
|
exit 0
|
|
fi
|
|
|
|
replace_hash() {
|
|
sed -i "s#$1 = \"sha256-.\{44\}\"#$1 = \"$2\"#" "$NIX_DRV"
|
|
}
|
|
|
|
get_npm_hash() {
|
|
pushd "$(mktemp -d)" >/dev/null
|
|
curl -s "https://raw.githubusercontent.com/$REPO/v$NEW_VER/$1" -o package-lock.json
|
|
prefetch-npm-deps package-lock.json
|
|
rm -f package-lock.json
|
|
popd >/dev/null
|
|
}
|
|
|
|
src_hash() {
|
|
nix-prefetch-git --url https://github.com/$REPO --rev "refs/tags/v${NEW_VER}" | jq --exit-status --raw-output .hash
|
|
}
|
|
|
|
sed -i "s/version = \".*\"/version = \"$NEW_VER\"/" "$NIX_DRV"
|
|
replace_hash "hash" "$(src_hash)"
|
|
replace_hash "npmDepsHash" "$(get_npm_hash "package-lock.json")"
|
|
replace_hash "clientNpmDepsHash" "$(get_npm_hash "client/package-lock.json")"
|