Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 70 lines 2.7 kB view raw
1#! /usr/bin/env nix-shell 2#! nix-shell -I nixpkgs=./. -i bash -p coreutils gnused curl nix jq nodejs 3set -euo pipefail 4 5DRV_DIR="$(dirname "${BASH_SOURCE[0]}")" 6DRV_DIR=$(realpath "$DRV_DIR") 7NIXPKGS_ROOT="$DRV_DIR/../../.." 8NIXPKGS_ROOT=$(realpath "$NIXPKGS_ROOT") 9 10instantiateClean() { 11 nix-instantiate --eval --strict -E "with import ./. {}; $1" | cut -d\" -f2 12} 13fetchNewHash() { 14 set +eo pipefail 15 HASH="$(nix-build -A "$1" 2>&1 >/dev/null | grep "got:" | cut -d':' -f2 | sed 's| ||g')" 16 set -eo pipefail 17 if [ -z "$HASH" ]; then 18 echo "Could not generate hash" >&2 19 exit 1 20 else 21 echo "$HASH" 22 fi 23} 24replace() { 25 sed -i "s@$1@$2@g" "$3" 26} 27 28# provide a github token so you don't get rate limited 29# if you use gh cli you can use: 30# `export GITHUB_TOKEN="$(cat ~/.config/gh/config.yml | yq '.hosts."github.com".oauth_token' -r)"` 31# or just set your token by hand: 32# `read -s -p "Enter your token: " GITHUB_TOKEN; export GITHUB_TOKEN` 33# (we use read so it doesn't show in our shell history and in secret mode so the token you paste isn't visible) 34if [ -z "${GITHUB_TOKEN:-}" ]; then 35 echo "no GITHUB_TOKEN provided - you could meet API request limiting" >&2 36fi 37 38OLD_VERSION=$(instantiateClean "authelia.version") 39 40LATEST_TAG=$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} --silent https://api.github.com/repos/authelia/authelia/releases/latest | jq -r '.tag_name') 41NEW_VERSION=$(echo ${LATEST_TAG} | sed 's/^v//') 42 43if [[ "$OLD_VERSION" == "$NEW_VERSION" ]]; then 44 echo "already up to date" 45 exit 46fi 47 48TMP_HASH="sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" 49echo "New version $NEW_VERSION" 50replace "$OLD_VERSION" "$NEW_VERSION" "$DRV_DIR/sources.nix" 51OLD_SRC_HASH="$(instantiateClean authelia.src.outputHash)" 52echo "Old src hash $OLD_SRC_HASH" 53replace "$OLD_SRC_HASH" "$TMP_HASH" "$DRV_DIR/sources.nix" 54NEW_SRC_HASH="$(fetchNewHash authelia.src)" 55echo "New src hash $NEW_SRC_HASH" 56replace "$TMP_HASH" "$NEW_SRC_HASH" "$DRV_DIR/sources.nix" 57 58OLD_PNPM_DEPS_HASH="$(instantiateClean authelia.web.pnpmDeps.outputHash)" 59echo "Old pnpm deps hash $OLD_PNPM_DEPS_HASH" 60replace "$OLD_PNPM_DEPS_HASH" "$TMP_HASH" "$DRV_DIR/sources.nix" 61NEW_PNPM_DEPS_HASH="$(fetchNewHash authelia.web)" 62echo "New pnpm deps hash $NEW_PNPM_DEPS_HASH" 63replace "$TMP_HASH" "$NEW_PNPM_DEPS_HASH" "$DRV_DIR/sources.nix" 64 65OLD_GO_VENDOR_HASH="$(instantiateClean authelia.vendorHash)" 66echo "Old go vendor hash $OLD_GO_VENDOR_HASH" 67replace "$OLD_GO_VENDOR_HASH" "$TMP_HASH" "$DRV_DIR/sources.nix" 68NEW_GO_VENDOR_HASH="$(fetchNewHash authelia.goModules)" 69echo "New go vendor hash $NEW_GO_VENDOR_HASH" 70replace "$TMP_HASH" "$NEW_GO_VENDOR_HASH" "$DRV_DIR/sources.nix"