#!/usr/bin/env bash set -o nounset set -o pipefail successes=() failures=() while read -r file; do update_command=$(grep -oP '^#\s*AUTO-UPDATE:\s*\K.+' "$file" || true) if [[ -n "$update_command" ]]; then if ( eval "$update_command" ); then successes+=("$file") else failures+=("$file") fi fi done < <(find . -type f -name '*.nix' ! -path './submodules/*') if [[ ${#successes[@]} -gt 0 ]]; then echo "Successful Updates (${#successes[@]} total):" for item in "${successes[@]}"; do echo " - $item" done else echo "No automated update commands were successfully executed." fi if [[ ${#failures[@]} -gt 0 ]]; then echo "Failed Updates (${#failures[@]} total):" for item in "${failures[@]}"; do echo " - $item" done exit 1 else echo "No automated update commands failed." fi nix flake update exit $?