1
0
Files
dotfiles/.config/yadm/bootstrap

38 lines
1013 B
Bash
Executable File

#!/bin/bash
# Save this file as ~/.config/yadm/bootstrap and make it executable. It will
# execute all executable files (excluding templates and editor backups) in the
# ~/.config/yadm/bootstrap.d directory when run.
set -eu
# Download file and return filename
function download () {
[[ $# == 0 ]] && exit 1
local url="$1"
local suffix="${2:-"${url##*.}"}"
local filename="$(mktemp -t "download-XXXXXX.${suffix}")"
curl --location --output "${filename}" -# "${url}"
echo "${filename}"
}
# Directory to look for bootstrap executables in
BOOTSTRAP_D="${BASH_SOURCE[0]}.d"
if [[ ! -d "$BOOTSTRAP_D" ]]; then
echo "Error: bootstrap directory '$BOOTSTRAP_D' not found" >&2
exit 1
fi
find -L "$BOOTSTRAP_D" -type f | sort | while IFS= read -r bootstrap; do
if [[ -x "$bootstrap" && ! "$bootstrap" =~ "##" && ! "$bootstrap" =~ "~$" ]]; then
if ! "$bootstrap"; then
echo "Error: bootstrap '$bootstrap' failed" >&2
exit 1
fi
fi
done