#!/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 if [ -L "$0" ]; then dir=$(dirname $(readlink -f "$0")) else dir=$(dirname "$0") fi 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!"