#! /usr/bin/env sh # shellcheck shell=bash # generate CI checks or verify they are up to date set -euC cd "$(dirname "$0")" || exit 3 nix_eval () { nix eval --impure --raw --expr "with builtins; $1"; } system=$(nix_eval "currentSystem") checks=$(nix_eval "toJSON (attrNames (getFlake (toString ../..)).checks.$system)") for check in $(echo "$checks" | jq -r .[]); do output=$(mktemp) { cat <| "$output" target="${check}.yaml" if [ $# -eq 1 ] && [ "$1" = "check" ]; then if ! diff_output=$(diff --color=always "$target" "$output"); then printf >&2 'Changes detected (\e[31m< current\e[0m | \e[32m> generated\e[0m):\n%s\n' "$diff_output" exit 1 fi else mv "$output" "$target" fi done