From e3d22ca33fc3e21dd2e262496f50316774eda069 Mon Sep 17 00:00:00 2001 From: arcnmx Date: Wed, 20 Nov 2024 11:50:18 -0800 Subject: [PATCH] chore(ci): clean up nf-generate --- ci/generate.sh | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/ci/generate.sh b/ci/generate.sh index 9d6efba5..564075f8 100644 --- a/ci/generate.sh +++ b/ci/generate.sh @@ -1,13 +1,44 @@ #!/usr/bin/env bash set -eu +NF_GENERATE_EVAL_ARGS=(${NF_GENERATE_EVAL_ARGS-}) +NF_GENERATE_EVAL_ARGS+=(--show-trace) + +nf-eval() { + local EVAL_FMT=$1 EVAL_ATTR=$2 EVAL_OUT=$3 \ + EVAL_ARGS=() + shift 3 + + if [[ $EVAL_ATTR != *#* ]]; then + EVAL_ATTR="${NF_CONFIG_ROOT}#${EVAL_ATTR}" + fi + EVAL_ARGS=( + "${NF_GENERATE_EVAL_ARGS[@]}" + "$EVAL_FMT" + "$EVAL_ATTR" + "$@" + ) + + if [[ $EVAL_OUT != /* ]]; then + EVAL_OUT="$NF_CONFIG_ROOT/$EVAL_OUT" + fi + + if [[ $EVAL_FMT = --json ]]; then + nix eval "${EVAL_ARGS[@]}" \ + | jq -M . + else + nix eval "${EVAL_ARGS[@]}" + fi > "$EVAL_OUT" + +} + for node in reisen; do - nix eval --json "${NF_CONFIG_ROOT}#lib.generate.nodes.$node.users" | jq -M . > "$NF_CONFIG_ROOT/systems/$node/users.json" - nix eval --json "${NF_CONFIG_ROOT}#lib.generate.nodes.$node.systems" | jq -M . > "$NF_CONFIG_ROOT/systems/$node/systems.json" - nix eval --json "${NF_CONFIG_ROOT}#lib.generate.nodes.$node.extern" | jq -M . > "$NF_CONFIG_ROOT/systems/$node/extern.json" - nix eval --raw "${NF_CONFIG_ROOT}#lib.generate.nodes.$node.ssh.root.authorizedKeys.text" > "$NF_CONFIG_ROOT/systems/$node/root.authorized_keys" + nf-eval --json "lib.generate.nodes.$node.users" "systems/$node/users.json" + nf-eval --json "lib.generate.nodes.$node.systems" "systems/$node/systems.json" + nf-eval --json "lib.generate.nodes.$node.extern" "systems/$node/extern.json" + nf-eval --raw "lib.generate.nodes.$node.ssh.root.authorizedKeys.text" "systems/$node/root.authorized_keys" done -nix eval --json "${NF_CONFIG_ROOT}#lib.generate.systems" | jq -M . > "$NF_CONFIG_ROOT/ci/systems.json" +nf-eval --json "lib.generate.systems" "ci/systems.json" for ciconfig in "${NF_CONFIG_FILES[@]}"; do echo "processing ${ciconfig}..." >&2