42 lines
861 B
Bash
Executable File
42 lines
861 B
Bash
Executable File
#!/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 $?
|