mirror of
https://github.com/m-housh/dotfiles.git
synced 2026-02-13 22:02:34 +00:00
60 lines
1.3 KiB
Bash
Executable File
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 {}" \;
|