#!/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}" } export -f download # 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 -not -path "$BOOTSTRAP_LIB/*" | 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