update/navibeat
1#!/usr/bin/env nix-shell
2#!nix-shell -i bash -p curl -p jq -p nix
3# shellcheck shell=bash
4set -euo pipefail
5
6REPO_URL="https://github.com/nenadjokic/navibeat-linux"
7
8SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
9PKG_FILE="$SCRIPT_DIR/default.nix"
10PKG_NAME="navibeat"
11
12OLD_VERSION=$(sed -n 's/.*version = "\([^"]*\)";.*/\1/p' "$PKG_FILE" | head -1)
13NEW_VERSION=$(curl -fsSL "${REPO_URL}/releases.atom" | sed -n 's#.*releases/tag/v\([^"<]*\).*#\1#p' | head -1)
14
15if [ "$NEW_VERSION" = "$OLD_VERSION" ]; then
16 exit 0
17fi
18
19X86_64_HASH=$(nix store prefetch-file --json "${REPO_URL}/releases/download/v${NEW_VERSION}/NaviBeat-linux-x86_64-slim.AppImage" | jq -r .hash)
20AARCH64_HASH=$(nix store prefetch-file --json "${REPO_URL}/releases/download/v${NEW_VERSION}/NaviBeat-linux-aarch64-slim.AppImage" | jq -r .hash)
21
22sed -i "s/version = \"$OLD_VERSION\";/version = \"$NEW_VERSION\";/" "$PKG_FILE"
23
24awk -v x86="$X86_64_HASH" -v arm="$AARCH64_HASH" '
25 /NaviBeat-linux-aarch64-slim.AppImage/ { print; getline; sub(/hash = "[^"]*"/, "hash = \"" arm "\""); print; next }
26 /NaviBeat-linux-x86_64-slim.AppImage/ { print; getline; sub(/hash = "[^"]*"/, "hash = \"" x86 "\""); print; next }
27 { print }
28' "$PKG_FILE" >"$PKG_FILE.tmp" && mv "$PKG_FILE.tmp" "$PKG_FILE"
29
30echo "$PKG_NAME: $OLD_VERSION -> $NEW_VERSION"