#!/usr/bin/env bash # Adapted from https://github.com/ThePrimeagen/dev/blob/master/run # # Runs scripts in the `./runs` directory, which will install or uninstall # packages. It either runs a single script given an argument (filename in runs) # or all scripts in the runs directory. # if [ -z "$DEV_ENV" ]; then echo "env var DEV_ENV needs to be present" exit 1 fi # if i just did DEV_ENV=$(pwd) ./run then this is needed for the rest of the # scripts export DEV_ENV="$DEV_ENV" grep="" dry_run="0" uninstall="0" while [[ $# -gt 0 ]]; do echo "ARG: \"$1\"" # Handle a --dry or --dry-run argument if [[ "$1" =~ ^--dry ]]; then dry_run="1" # Handle an --uninstall argument elif [[ "$1" =~ ^--u ]]; then uninstall="1" # Handle an --install argument (default) elif [[ ! "$1" =~ ^--i ]]; then grep="$1" fi shift done log() { if [[ $dry_run == "1" ]]; then echo "[DRY_RUN]: $1" else echo "$1" fi } run() { local script=$1 local flag=$2 log "running script: $script $flag" local actual_flags="-S --noconfirm" if [[ $flag == "--uninstall" ]]; then actual_flags="-Rns" fi log "ok, here's the actual script:: $s $actual_flags" if [[ $dry_run == "0" ]]; then $script $actual_flags fi } ############################## MAIN ############################## log "RUN: env: $env -- grep: $grep" runs_dir=$(find $DEV_ENV/runs -mindepth 1 -maxdepth 1 -executable) for s in $runs_dir; do if basename $s | grep -vq "$grep"; then log "grep \"$grep\" filtered out $s" continue fi if [[ $uninstall == "1" ]]; then run $s --uninstall else run $s --install fi done