#!/usr/bin/env bash set -euo pipefail source "$(dirname "$0")/../lib/common.sh" usage() { cat </dev/null) && { SELECTED+=("$req") } || { warn "Unknown app: $req (skipping)" } done # ── Mode 2: --all ───────────────────────────────────────────── elif [ "$ALL" -eq 1 ]; then for cat in "${CATEGORIES[@]}"; do for app in "${CAT_APPS[$cat]}"; do SELECTED+=("$app") done done # ── Mode 3: interactive TUI ─────────────────────────────────── else section "Optional Applications" echo "Select apps to install (y/n for each):" echo for cat in "${CATEGORIES[@]}"; do display="${CAT_NAMES[$cat]:-$cat}" echo " $display" for app in "${CAT_APPS[$cat]}"; do read -rp " Install ${app}? [y/N]: " yn if [[ "$yn" =~ ^[Yy] ]]; then SELECTED+=("$app") fi done echo done fi # ── Install selected apps ────────────────────────────────────── [ "${#SELECTED[@]}" -eq 0 ] && { warn "No apps selected"; exit 0; } echo section "Installing ${SELECTED[*]}" timer_start count=1 total=${#SELECTED[@]} for app in "${SELECTED[@]}"; do cat=$(find_app_category "$app") step "$count" "$total" "$app" bash "$APPS_DIR/$cat/$app.sh" count=$((count + 1)) echo done echo echo "${GREEN}════════════════════════════════════════════${RESET}" echo "${GREEN} Apps installed ($(timer_stop))${RESET}" echo "${GREEN}════════════════════════════════════════════${RESET}"