/ scripts / update-flake
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