update/navibeat
 1#!/usr/bin/env nix-shell
 2#!nix-shell -i bash -p git -p jq -p nix
 3# shellcheck shell=bash
 4set -euo pipefail
 5
 6REPO_URL="https://tangled.org/did:plc:wqstj3k5tslmm246baaf3tpa"
 7ARCHIVE_URL="${REPO_URL}/archive"
 8
 9SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
10PKG_FILE="$SCRIPT_DIR/default.nix"
11OLD_VERSION=$(sed -n 's/.*version = "\([^"]*\)";.*/\1/p' "$PKG_FILE" | head -1)
12PKG_NAME="stinkpot"
13
14OLD_REV=$(sed -n 's/.*rev = "\([0-9a-f]\{40\}\)".*/\1/p' "$PKG_FILE")
15NEW_REV=$(git ls-remote "$REPO_URL" HEAD | awk '{print $1}')
16
17if [ "$NEW_REV" = "$OLD_REV" ]; then
18	exit 0
19fi
20
21TMPDIR=$(mktemp -d)
22trap 'rm -rf "$TMPDIR"' EXIT
23
24git clone --depth 1 "$REPO_URL" "$TMPDIR/repo"
25NEW_DATE=$(git -C "$TMPDIR/repo" show -s --format=%cs HEAD)
26
27NEW_HASH=$(nix store prefetch-file --json --unpack "$ARCHIVE_URL/$NEW_REV" | jq -r .hash)
28NEW_VERSION="0-unstable-$NEW_DATE"
29
30sed -i \
31	-e "s/version = \"[^\"]*\";/version = \"$NEW_VERSION\";/" \
32	-e "s/rev = \"$OLD_REV\";/rev = \"$NEW_REV\";/" \
33	-e "s|hash = \"sha256-[^\"]*\";|hash = \"$NEW_HASH\";|" \
34	"$PKG_FILE"
35
36echo "$PKG_NAME: $OLD_VERSION -> $NEW_VERSION"