Added interactive platform choice in launchme, and platform auto-detection in updateme.

This commit is contained in:
nunziati
2026-04-10 20:50:59 +02:00
parent 0e66ce3efa
commit 823a55ddba
2 changed files with 72 additions and 4 deletions

View File

@@ -11,7 +11,7 @@
# .claude/ directory.
#
# Options:
# --platform <name> Platform to build for (default: claude-code)
# --platform <name> Platform to build for (interactive selection if omitted)
# --target <path> 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}"

View File

@@ -9,7 +9,7 @@
# bash scripts/updateme.sh
#
# Options:
# --platform <name> Platform to build for (default: claude-code)
# --platform <name> Platform to update (auto-detected if omitted)
# --target <path> 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" ;;