this repo has no description
at main 1.2 kB view raw
1#!/usr/bin/env bash 2set -euo pipefail 3 4ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 5source "$ROOT/lib.sh" 6 7usage() { 8 cat <<EOF 9Usage: $(basename "$0") [module-names...] 10 11Examples: 12 ./run.sh # all modules 13 ./run.sh brew casks # specific modules 14 ./run.sh dock # single module 15 16Modules: 17EOF 18 for mod in "$ROOT/modules"/*.sh; do 19 echo " $(basename "$mod" .sh)" 20 done 21} 22 23if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then 24 usage 25 exit 0 26fi 27 28# Collect modules to run 29if [[ $# -eq 0 ]]; then 30 # Run all modules in order 31 mapfile -t modules < <(find "$ROOT/modules" -name '*.sh' | sort) 32else 33 # Run specified modules only 34 modules=() 35 for name in "$@"; do 36 found=false 37 for module in "$ROOT/modules"/*"$name"*.sh; do 38 if [[ -f "$module" ]]; then 39 modules+=("$module") 40 found=true 41 fi 42 done 43 if [[ "$found" == "false" ]]; then 44 warn "Module not found: $name" 45 exit 1 46 fi 47 done 48fi 49 50# Execute modules 51log "Starting macOS setup" 52for module in "${modules[@]}"; do 53 log "━━━ Running: $(basename "$module" .sh) ━━━" 54 "$module" 55 echo 56done 57 58log "Setup complete!"