mirror of
https://github.com/m-housh/dotfiles.git
synced 2026-02-14 14:12:41 +00:00
86 lines
1.9 KiB
Bash
Executable File
86 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
declare file
|
|
declare -a yayflags
|
|
|
|
THIS_FILE=${BASH_SOURCE[0]}
|
|
LOG_LABEL=${LOG_LABEL:-$(basename $THIS_FILE)}
|
|
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
|
DEV_ENV=${DEV_ENV:-""}
|
|
|
|
MODE=${RUN_MODE:-"install"}
|
|
DRY_RUN=${LOG_ENABLE_DRY_RUN:-"0"}
|
|
GREP_STR=${RUN_GREP_STR:-""}
|
|
|
|
log() {
|
|
logging log --source "$THIS_FILE" --echo "$@"
|
|
}
|
|
|
|
run_before_or_after() {
|
|
local dir file run
|
|
dir=${1:-""}
|
|
run=${2:-""}
|
|
|
|
file=$(find "$dir" -mindepth 1 -maxdepth 1 -executable -name "$(basename "$run")" | head -1)
|
|
if [[ -n "$file" ]]; then
|
|
log " running $(basename "$dir") script: '$file'"
|
|
[[ $DRY_RUN == "0" ]] && source "$file" "$mode"
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
local line pkg
|
|
|
|
log "RUN: file: $file"
|
|
|
|
if [[ -z $GREP_STR ]] || [[ $file =~ $GREP_STR ]]; then
|
|
|
|
log "${MODE}ing packages from: $file"
|
|
|
|
run_before_or_after "$DEV_ENV/runs/before" "$file"
|
|
|
|
# Loop over lines in the file and install the packages.
|
|
while IFS= read -r line; do
|
|
# Skip lines that begin with '#' (comments)
|
|
if [[ ! $line =~ ^# ]]; then
|
|
# Remove any inline comments.
|
|
pkg=${line%% \#*}
|
|
if [[ -n $pkg ]]; then
|
|
log " pkg: '$pkg'"
|
|
[[ $DRY_RUN == "0" ]] && yay "${yayflags[@]}" "$pkg"
|
|
fi
|
|
fi
|
|
done <"$file"
|
|
|
|
run_before_or_after "$DEV_ENV/runs/after" "$file"
|
|
else
|
|
log "Grep filtered out: '$file'"
|
|
fi
|
|
}
|
|
|
|
############################## MAIN ##############################
|
|
|
|
# Setup logging file and label.
|
|
source "$SCRIPTS/hypr/logging"
|
|
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
|
|
|
file=${1:-""}
|
|
yayflags=("-S" "--noconfirm" "--needed")
|
|
|
|
[[ -z "$DEV_ENV" ]] &&
|
|
log --error "env var DEV_ENV needs to be present" && exit 1
|
|
[[ ! -r $file ]] &&
|
|
log --error "File not readable." && exit 1
|
|
|
|
# Change yay flags if mode is 'uninstall'
|
|
[[ $MODE == "uninstall" ]] && yayflags=("-Rns")
|
|
|
|
# Ensure yay is installed before proceeding.
|
|
[[ $DRY_RUN == "0" ]] && . "$DEV_ENV/runs/before/yay"
|
|
|
|
main
|