update-flake
1 #!/bin/sh 2 3 set -e 4 5 usage() { 6 printf \ 7 'Update flake and heartwood-release to the requested heartwood version. 8 When called without arguments, reads RELEASE from tests/support/hearwood-release. 9 10 USAGE: 11 update-flake [-h] [PATH|TAG] 12 13 OPTIONS: 14 RELEASE\t\tUpdate heartwood version to TAG. 15 -h --help\tPrint this help.\n' 16 } 17 18 while [ $# -ne 0 ]; do 19 case $1 in 20 --help | -h) 21 usage >&2 22 exit 23 ;; 24 *) 25 release=$1 26 shift 27 ;; 28 esac 29 done 30 31 # Heartwood repo id 32 rid=z3gqcJUoA1n9HaHKufZs5FCSGazv5 33 34 # Some root detection guess work... 35 root=$(git rev-parse --show-toplevel 2>/dev/null || echo "$PWD") 36 if [ ! -e "$root/tests/support/heartwood-release" ]; then 37 root=$( 38 cd .. 39 pwd 40 ) 41 fi 42 43 if [ -z "$release" ]; then 44 # No release given, take from heartwood-release 45 if [ -e "$root/tests/support/heartwood-release" ]; then 46 release=$(cat "$root/tests/support/heartwood-release") 47 [ -n "$release" ] || { 48 printf "Error reading heartwood-release\n" >&2 49 exit 1 50 } 51 fi 52 else 53 printf '%s\n' "$release" >$root/tests/support/heartwood-release 54 fi 55 56 if [ -e "$root/flake.nix" ]; then 57 query="ref=refs/namespaces/z6MksFqXN3Yhqk8pTJdUGLwATkRfQvwZXPqR2qMEhbS9wzpT/refs/tags/v$release"; 58 59 sed -E -e '/url.*git\+https.*'"$rid"'/s|\?.*";|?'"$query"'";|' "$root/flake.nix" >$root/flake.nix.tmp 60 mv "$root/flake.nix.tmp" "$root/flake.nix" 61 62 # If running on a nix-enabled system, also update npmDepsHash. 63 if type nix >/dev/null 2>&1; then 64 npmDepsHash=$(nix --experimental-features 'nix-command flakes' \ 65 run --inputs-from "$root" nixpkgs#prefetch-npm-deps \ 66 -- "$root/package-lock.json") 67 sed -E -e '/npmDepsHash/s#".*"#"'"$npmDepsHash"'"#' "$root/flake.nix" >$root/flake.nix.tmp 68 mv "$root/flake.nix.tmp" "$root/flake.nix" 69 70 nix --experimental-features 'nix-command flakes' flake update --flake git+file://"$root" 71 else 72 printf >&2 'Node dependencies may be out of date! 73 Re-run on a nix-enabled system to update npmDepsHash.\n' 74 fi 75 fi