diff --git a/scripts/launchme.sh b/scripts/launchme.sh index b66c74f..4cab417 100755 --- a/scripts/launchme.sh +++ b/scripts/launchme.sh @@ -11,7 +11,7 @@ # .claude/ directory. # # Options: -# --platform Platform to build for (default: claude-code) +# --platform Platform to build for (interactive selection if omitted) # --target Override the vault destination path # ============================================================================= @@ -24,7 +24,7 @@ source "$SCRIPT_DIR/lib.sh" resolve_paths "${BASH_SOURCE[0]}" # ── Parse args ───────────────────────────────────────────────────────────── -PLATFORM="claude-code" +PLATFORM="" TARGET_OVERRIDE="" while [[ $# -gt 0 ]]; do case "$1" in @@ -35,6 +35,42 @@ while [[ $# -gt 0 ]]; do done [[ -n "$TARGET_OVERRIDE" ]] && VAULT_DIR="$TARGET_OVERRIDE" +# ── Platform selection (interactive if not specified) ────────────────────── +if [[ -z "$PLATFORM" ]]; then + # Discover available platforms from adapters/ directories + AVAILABLE=() + for d in "$REPO_DIR/adapters/"*/; do + [[ -f "${d}adapter.sh" ]] || continue + AVAILABLE+=("$(basename "$d")") + done + if [[ ${#AVAILABLE[@]} -eq 0 ]]; then + die "No adapters found in adapters/" + fi + echo "" + echo -e " ${BOLD}Select your agent platform:${NC}" + echo "" + for i in "${!AVAILABLE[@]}"; do + echo -e " ${BOLD}$((i+1)))${NC} ${AVAILABLE[$i]}" + done + echo "" + if ! read -r -p " > " PLATFORM_CHOICE 2>/dev/null; then PLATFORM_CHOICE=""; fi + # Accept either number or name + if [[ "$PLATFORM_CHOICE" =~ ^[0-9]+$ ]] && (( PLATFORM_CHOICE >= 1 && PLATFORM_CHOICE <= ${#AVAILABLE[@]} )); then + PLATFORM="${AVAILABLE[$((PLATFORM_CHOICE-1))]}" + else + # Try matching by name + for p in "${AVAILABLE[@]}"; do + if [[ "$p" == "$PLATFORM_CHOICE" ]]; then + PLATFORM="$p" + break + fi + done + fi + [[ -n "$PLATFORM" ]] || die "Invalid selection: $PLATFORM_CHOICE" + echo "" + info "Selected platform: $PLATFORM" +fi + # ── Banner ──────────────────────────────────────────────────────────────────── print_banner "Setup " echo -e " Repo: ${BOLD}${REPO_DIR}${NC}" diff --git a/scripts/updateme.sh b/scripts/updateme.sh index 9efe29d..2ae2ce0 100755 --- a/scripts/updateme.sh +++ b/scripts/updateme.sh @@ -9,7 +9,7 @@ # bash scripts/updateme.sh # # Options: -# --platform Platform to build for (default: claude-code) +# --platform Platform to update (auto-detected if omitted) # --target Override the vault destination path # ============================================================================= @@ -22,7 +22,7 @@ source "$SCRIPT_DIR/lib.sh" resolve_paths "${BASH_SOURCE[0]}" # ── Parse args ───────────────────────────────────────────────────────────── -PLATFORM="claude-code" +PLATFORM="" TARGET_OVERRIDE="" while [[ $# -gt 0 ]]; do case "$1" in @@ -36,6 +36,38 @@ done # ── Banner ──────────────────────────────────────────────────────────────────── print_banner "Update " +# ── Auto-detect platform if not specified ──────────────────────────────────── +if [[ -z "$PLATFORM" ]]; then + DETECTED=() + [[ -d "$VAULT_DIR/.claude/agents" ]] && DETECTED+=("claude-code") + [[ -d "$VAULT_DIR/.opencode/agents" ]] && DETECTED+=("opencode") + [[ -d "$VAULT_DIR/.gemini/agents" ]] && DETECTED+=("gemini-cli") + + if [[ ${#DETECTED[@]} -eq 0 ]]; then + die "No installed platform detected in $VAULT_DIR — run launchme.sh first" + elif [[ ${#DETECTED[@]} -eq 1 ]]; then + PLATFORM="${DETECTED[0]}" + info "Detected platform: $PLATFORM" + else + echo -e " ${BOLD}Multiple platforms detected:${NC}" + echo "" + for i in "${!DETECTED[@]}"; do + echo -e " ${BOLD}$((i+1)))${NC} ${DETECTED[$i]}" + done + echo "" + if ! read -r -p " Which platform to update? > " PLATFORM_CHOICE 2>/dev/null; then PLATFORM_CHOICE=""; fi + if [[ "$PLATFORM_CHOICE" =~ ^[0-9]+$ ]] && (( PLATFORM_CHOICE >= 1 && PLATFORM_CHOICE <= ${#DETECTED[@]} )); then + PLATFORM="${DETECTED[$((PLATFORM_CHOICE-1))]}" + else + for p in "${DETECTED[@]}"; do + [[ "$p" == "$PLATFORM_CHOICE" ]] && PLATFORM="$p" && break + done + fi + [[ -n "$PLATFORM" ]] || die "Invalid selection: $PLATFORM_CHOICE" + info "Selected platform: $PLATFORM" + fi +fi + # ── Check vault has been set up ─────────────────────────────────────────────── case "$PLATFORM" in claude-code) _SETUP_CHECK="$VAULT_DIR/.claude/agents" ;;