#!/usr/bin/env bash
# Mock clawhub 0.8.0 for E2E testing
# State dir: $MOCK_CLAWHUB_STATE (must be set by test fixture)
set -euo pipefail

STATE="${MOCK_CLAWHUB_STATE:-.mock_clawhub_state}"
SKILLS_DIR="$STATE/skills"
mkdir -p "$SKILLS_DIR"

CMD="${1:-}"
shift || true

case "$CMD" in
  install)
    NAME="${1:-}"
    shift || true
    FORCE=false
    WORKDIR=""
    while [[ $# -gt 0 ]]; do
      case "$1" in
        --force) FORCE=true; shift ;;
        --hub) shift; shift ;;
        --workdir) shift; WORKDIR="$1"; shift ;;
        *) shift ;;
      esac
    done
    if [[ -z "$NAME" ]]; then
      echo "error: missing skill name" >&2; exit 1
    fi
    TARGET="${WORKDIR:-$SKILLS_DIR}"
    mkdir -p "$TARGET/$NAME"
    cat > "$TARGET/$NAME/SKILL.md" <<SKILLEOF
---
name: $NAME
version: 1.0.0
---
Mock skill installed by mock clawhub.
SKILLEOF
    echo "Installed $NAME"
    exit 0
    ;;
  uninstall)
    NAME="${1:-}"
    shift || true
    YES=false
    while [[ $# -gt 0 ]]; do
      case "$1" in
        --yes) YES=true; shift ;;
        *) shift ;;
      esac
    done
    if [[ -z "$NAME" ]]; then
      echo "error: missing skill name" >&2; exit 1
    fi
    if [[ "$YES" != "true" ]]; then
      echo "error: Pass --yes (no input)" >&2; exit 1
    fi
    rm -rf "$SKILLS_DIR/$NAME"
    echo "Uninstalled $NAME"
    exit 0
    ;;
  list)
    if [[ "${1:-}" == "--json" ]]; then
      echo "error: unknown flag: --json" >&2; exit 1
    fi
    for d in "$SKILLS_DIR"/*/; do
      [[ -d "$d" ]] || continue
      NAME=$(basename "$d")
      VERSION="1.0.0"
      echo "$NAME  $VERSION  enabled"
    done
    exit 0
    ;;
  *)
    echo "error: unknown command: $CMD" >&2
    exit 1
    ;;
esac
