Files
dotfiles/run

60 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# Adapted from https://github.com/ThePrimeagen/dev/blob/master/run
#
# Installs packages declared in the 'runs' directory, will run scripts matching the
# file name in the 'runs/before' and 'runs/after', respectively, to handle setting up or
# tearing down based on the run mode.
#
set -e
set -o nounset
set -o pipefail
THIS_FILE=${BASH_SOURCE[0]}
LOG_LABEL=$(basename $THIS_FILE)
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
declare dry_run grepstr mode
log() {
logging log --source "$THIS_FILE" --echo "$@"
} && export -f log
############################## MAIN ##############################
# Setup logging file and label.
source "$SCRIPTS/hypr/logging"
setup-logging "$LOG_FILE" "$LOG_LABEL"
[ -z "$DEV_ENV" ] &&
log --error "env var DEV_ENV needs to be present" &&
exit 1
grepstr=""
dry_run="0"
mode="install"
while [[ $# -gt 0 ]]; do
if [[ "$1" =~ ^--dry ]]; then
dry_run="1"
elif [[ "$1" == "uninstall" ]]; then
mode="uninstall"
elif [[ ! "$1" == "install" ]]; then
grepstr="$1"
fi
shift
done
export DEV_ENV="$DEV_ENV"
export LOG_ENABLE_DRY_RUN="$dry_run"
export RUN_GREP_STR="$grepstr"
export RUN_MODE="$mode"
log "RUN: -- grep: '$grepstr'"
find "$DEV_ENV/runs" \
-mindepth 1 \
-maxdepth 1 \
-type f \
-exec bash -xc "$DEV_ENV/runs/utils/run-handler {}" \;