1#! /usr/bin/env nix-shell
2#! nix-shell -p yq bash curl bc ripgrep
3#! nix-shell -i bash
4
5set -Eeuxo pipefail
6
7cleanup() {
8 rm -rf "$TMPDIR"
9}
10
11trap cleanup EXIT
12
13ROOT="$(dirname "$(readlink -f "$0")")"
14if [ ! -f "$ROOT/default.nix" ]; then
15 echo "ERROR: cannot find default.nix in $ROOT"
16 exit 1
17fi
18
19if [ "$(basename "$ROOT")" != plexamp ]; then
20 echo "ERROR: folder not named plexamp"
21 exit 1
22fi
23
24TMPDIR="$(mktemp -d)"
25
26VERSION_FILE="$TMPDIR/version.yml"
27VERSION_URL="https://plexamp.plex.tv/plexamp.plex.tv/desktop/latest-linux.yml"
28curl "$VERSION_URL" -o "$VERSION_FILE"
29
30VERSION="$(yq -r .version "$VERSION_FILE")"
31SHA512="$(yq -r .sha512 "$VERSION_FILE")"
32
33DEFAULT_NIX="$ROOT/default.nix"
34WORKING_NIX="$TMPDIR/default.nix"
35cp "$DEFAULT_NIX" "$WORKING_NIX"
36
37sed -i "s@version = .*;@version = \"$VERSION\";@g" "$WORKING_NIX"
38
39if diff "$DEFAULT_NIX" "$WORKING_NIX"; then
40 echo "WARNING: no changes"
41 exit 0
42fi
43
44# update sha hash (convenietly provided)
45sed -i "s@hash.* = .*;@hash = \"sha512-$SHA512\";@g" "$WORKING_NIX"
46
47# update the changelog ("just" increment the number)
48# manually check that the changelog corresponds to our Plexamp version
49CHANGELOG_URL=$(rg --only-matching 'changelog = "(.+)";' --replace '$1' $WORKING_NIX)
50CHANGELOG_NUMBER=$(rg --only-matching '.*/([0-9]+)' --replace '$1' <<< $CHANGELOG_URL)
51NEXT_CHANGELOG=$(($CHANGELOG_NUMBER + 1))
52NEXT_URL=$(rg --only-matching '(.*)/[0-9]+' --replace "\$1/$NEXT_CHANGELOG" <<< $CHANGELOG_URL)
53sed -i "s@changelog = \".*\";@changelog = \"$NEXT_URL\";@" $WORKING_NIX
54
55mv $WORKING_NIX $DEFAULT_NIX