diff options
Diffstat (limited to 'pkgs/applications/audio/plexamp/update-plexamp.sh')
-rwxr-xr-x | pkgs/applications/audio/plexamp/update-plexamp.sh | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/pkgs/applications/audio/plexamp/update-plexamp.sh b/pkgs/applications/audio/plexamp/update-plexamp.sh new file mode 100755 index 00000000000..b6b8def1e31 --- /dev/null +++ b/pkgs/applications/audio/plexamp/update-plexamp.sh @@ -0,0 +1,54 @@ +#! /usr/bin/env nix-shell +#! nix-shell -p yq bash curl bc ripgrep +#! nix-shell -i bash + +set -Eeuxo pipefail + +cleanup() { + rm -rf "$TMPDIR" +} + +trap cleanup EXIT + +ROOT="$(dirname "$(readlink -f "$0")")" +if [ ! -f "$ROOT/default.nix" ]; then + echo "ERROR: cannot find default.nix in $ROOT" + exit 1 +fi + +if [ "$(basename "$ROOT")" != plexamp ]; then + echo "ERROR: folder not named plexamp" + exit 1 +fi + +TMPDIR="$(mktemp -d)" + +VERSION_FILE="$TMPDIR/version.yml" +VERSION_URL="https://plexamp.plex.tv/plexamp.plex.tv/desktop/latest-linux.yml" +curl "$VERSION_URL" -o "$VERSION_FILE" + +VERSION="$(yq -r .version "$VERSION_FILE")" +SHA512="$(yq -r .sha512 "$VERSION_FILE")" + +DEFAULT_NIX="$ROOT/default.nix" +WORKING_NIX="$TMPDIR/default.nix" +cp "$DEFAULT_NIX" "$WORKING_NIX" + +sed -i "s@version = .*;@version = \"$VERSION\";@g" "$WORKING_NIX" + +if diff "$DEFAULT_NIX" "$WORKING_NIX"; then + echo "WARNING: no changes" + exit 0 +fi + +# update sha hash (convenietly provided) +sed -i "s@sha.* = .*;@sha512 = \"$SHA512\";@g" "$WORKING_NIX" + +# update the changelog ("just" increment the number) +CHANGELOG_URL=$(rg --only-matching 'changelog = "(.+)";' --replace '$1' $WORKING_NIX) +CHANGELOG_NUMBER=$(rg --only-matching '.*/([0-9]+)' --replace '$1' <<< $CHANGELOG_URL) +NEXT_CHANGELOG=$(($CHANGELOG_NUMBER + 1)) +NEXT_URL=$(rg --only-matching '(.*)/[0-9]+' --replace "\$1/$NEXT_CHANGELOG" <<< $CHANGELOG_URL) +sed -i "s@changelog = \".*\";@changelog = \"$NEXT_URL\";@" $WORKING_NIX + +mv $WORKING_NIX $DEFAULT_NIX |