67 lines
1.6 KiB
Bash
Executable File
67 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
|
|
# --------------------------------------------------------------------
|
|
# Script to run all install scripts contained in install.d
|
|
#
|
|
|
|
printf "\n\t <<< dots installer >>>\n"
|
|
printf "\t========================\n\n\n"
|
|
|
|
# Prevent running as root
|
|
if [[ $EUID -eq 0 && -z "$SKIP_SUDO_CHECK" ]]; then
|
|
echo "Failed: Running as sudo. Please run as user"
|
|
exit 1
|
|
fi
|
|
|
|
# Ensure sudo credentials are cached
|
|
if [[ -z "$SKIP_SUDO_CHECK" ]]; then
|
|
sudo -v
|
|
fi
|
|
|
|
# Set up directory variables
|
|
dir=$(dirname "$0")
|
|
install_dir="$dir/install.d"
|
|
export DOTFILES=$(dirname "$dir")
|
|
|
|
# Set up log destination
|
|
if [[ -z "$LOG_TARGET" ]]; then
|
|
timestamp=$(date +%Y-%m-%dT%H:%M:%S)
|
|
uuid=$(
|
|
uuidgen 2> /dev/null \
|
|
|| cat /proc/sys/kernel/random/uuid 2> /dev/null \
|
|
|| echo $RANDOM
|
|
)
|
|
log_dir="$dir/logs"
|
|
mkdir -p "$log_dir"
|
|
log_target=${LOG_TARGET:-"$log_dir/$uuid.log"}
|
|
else
|
|
log_target="$LOG_TARGET"
|
|
fi
|
|
touch "$log_target"
|
|
if [[ ! -f "$log_target" ]]; then
|
|
echo "Failed: Unable to create log file \"$log_target\""
|
|
exit 1
|
|
fi
|
|
log_abs_target=$(readlink -f "$log_target")
|
|
|
|
# Run install scripts
|
|
install() {
|
|
echo "Running \"$(basename "$0")\" at \"$(date)\""
|
|
echo "Running as \"$(whoami)\" on \"$(hostname)\""
|
|
|
|
for script in $install_dir/*.sh; do
|
|
script_name=$(basename $script)
|
|
printf "\n\n<<< $script_name:\n"
|
|
source $script
|
|
printf "\n>>> $script_name\n"
|
|
unset script_name
|
|
done
|
|
}
|
|
echo "install: Logging to \"$log_abs_target\""
|
|
install 2>&1 | tee "$log_abs_target"
|
|
|
|
# Clean up
|
|
unset uuid dir install_dir log_dir log_abs_target log_target
|
|
echo "Thank you!"
|