Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 55 lines 1.6 kB view raw
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