1
0
mirror of https://github.com/TheLocehiliosan/yadm synced 2025-12-05 06:02:20 +00:00
This commit is contained in:
Daniel Nolan 2025-11-09 09:27:41 -05:00 committed by GitHub
commit a436733b83
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,29 +1,36 @@
#!/bin/bash #!/bin/sh
# Save this file as ~/.config/yadm/bootstrap and make it executable. It will # Save this file as ~/.config/yadm/bootstrap and make it executable. It will
# execute all executable files (excluding templates and editor backups) in the # execute all executable files (excluding templates and editor backups) in the
# ~/.config/yadm/bootstrap.d directory when run. # ~/.config/yadm/bootstrap.d directory when run.
set -eu set -e
# Directory to look for bootstrap executables in # Directory to look for bootstrap executables in
# Works in sh, bash, and zsh
if [ -n "${BASH_SOURCE:-}" ]; then
BOOTSTRAP_D="${BASH_SOURCE[0]}.d" BOOTSTRAP_D="${BASH_SOURCE[0]}.d"
else
BOOTSTRAP_D="${0}.d"
fi
if [[ ! -d "$BOOTSTRAP_D" ]]; then if [ ! -d "$BOOTSTRAP_D" ]; then
echo "Error: bootstrap directory '$BOOTSTRAP_D' not found" >&2 echo "Error: bootstrap directory '$BOOTSTRAP_D' not found" >&2
exit 1 exit 1
fi fi
declare -a bootstraps # Find and execute bootstrap files
while IFS= read -r bootstrap; do find -L "$BOOTSTRAP_D" -type f | sort | while IFS= read -r bootstrap; do
if [[ -x "$bootstrap" && ! "$bootstrap" =~ "##" && ! "$bootstrap" =~ ~$ ]]; then # Skip non-executable files, editor backups (~), and templates (##)
bootstraps+=("$bootstrap") if [ -x "$bootstrap" ]; then
fi case "$bootstrap" in
done < <(find -L "$BOOTSTRAP_D" -type f | sort) *\##*|*~) continue ;;
esac
for bootstrap in "${bootstraps[@]}"; do
if ! "$bootstrap"; then if ! "$bootstrap"; then
echo "Error: bootstrap '$bootstrap' failed" >&2 echo "Error: bootstrap '$bootstrap' failed" >&2
exit 1 exit 1
fi fi
fi
done done