#! /bin/sh # Runs populate's jq programs for flakes over lock files in the shapes # different versions of Nix write, without VMs. # # usage: jq.sh DIR # # DIR contains the programs as selected.jq, selfIsRemote.jq, and # selfLocked.jq. set -efu programs=$1 failed=0 # usage: expect WHAT ACTUAL EXPECTED expect() { if test "$2" != "$3"; then printf 'FAIL: %s\n expected: %s\n got: %s\n' "$1" "$3" "$2" >&2 failed=1 fi } # usage: expect_error WHAT ACTUAL MESSAGE expect_error() { case $2 in *"$3"*) ;; *) printf 'FAIL: %s\n expected an error: %s\n got: %s\n' "$1" "$3" "$2" >&2 failed=1 ;; esac } # usage: selection METADATA INPUT selection() { printf '%s\n' "$1" | timeout 10 jq -c --argjson input "$2" --from-file "$programs"/selected.jq 2>&1 || : } # A flake with an input dep, which has an input inner following the flake's # input inner, and an input sub, a flake in a subdirectory, written as # attribute dir or as query parameter dir of the URL. metadata() { cat <