#!/usr/bin/env bash
set -euo pipefail

TASKHUB_BASE_URL="${TASKHUB_BASE_URL:-http://pad.kvlabs.com.br}"
TASKHUB_TOKEN="${TASKHUB_TOKEN:-}"
TARGET_DIR="${TASKHUB_TARGET_DIR:-$HOME/.local/bin}"
TARGET="$TARGET_DIR/taskhub"

if [ -z "$TASKHUB_TOKEN" ]; then
  echo "Set TASKHUB_TOKEN before running this installer."
  exit 1
fi

mkdir -p "$TARGET_DIR"

cat > "$TARGET" <<'EOF'
#!/usr/bin/env bash
set -euo pipefail

BASE_URL="${TASKHUB_BASE_URL:-http://pad.kvlabs.com.br}"
TOKEN="${TASKHUB_TOKEN:-}"

if [ -z "$TOKEN" ]; then
  echo "Set TASKHUB_TOKEN before using the taskhub helper."
  exit 1
fi

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

case "$cmd" in
  pull)
    sector="$1"
    project="$2"
    qs="$(python3 - "$sector" "$project" <<'PY'
import sys
from urllib.parse import urlencode

sector = sys.argv[1].strip()
project = sys.argv[2].strip()
params = {}
if sector:
    params['sector'] = sector
if project:
    params['project'] = project
print(urlencode(params))
PY
)"
    url="$BASE_URL/api/context"
    [ -n "$qs" ] && url="$url?$qs"
    curl -fsSL -H "Authorization: Bearer $TOKEN" "$url"
    ;;
  export)
    curl -fsSL -H "Authorization: Bearer $TOKEN" "$BASE_URL/api/export" "$@"
    ;;
  push)
    sector="$1"
    project="$2"
    slug="$3"
    file="$4"
    title="${5:-$slug}"
    kind="${6:-custom}"
    base_hash="${7:-}"
    content="$(cat "$file")"
    payload="$(python3 - "$sector" "$project" "$slug" "$title" "$kind" "$content" "$base_hash" <<'PY'
import json
import sys

sector, project, slug, title, kind, content, base_hash = sys.argv[1:8]
print(json.dumps({
    'sector': sector,
    'project': project,
    'slug': slug,
    'title': title,
    'kind': kind,
    'content': content,
    'base_hash': base_hash,
}, ensure_ascii=False))
PY
)"
    curl -fsS -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json"       -d "$payload" "$BASE_URL/api/push"
    ;;
  install-shell)
    shell_rc="$HOME/.bashrc"
    [ -n "${ZSH_VERSION:-}" ] && shell_rc="$HOME/.zshrc"
    line='export TASKHUB_BASE_URL="'"$BASE_URL"'"; export TASKHUB_TOKEN="'"$TOKEN"'"; export PATH="$HOME/.local/bin:$PATH"'
    grep -Fqx "$line" "$shell_rc" 2>/dev/null || echo "$line" >> "$shell_rc"
    echo "Added TaskHub env to $shell_rc"
    ;;
  *)
    cat <<USAGE
TaskHub CLI
  taskhub pull
  taskhub export
  taskhub push <sector> <project> <slug> <file> [title] [kind] [base_hash]
  taskhub install-shell
USAGE
    ;;
esac
EOF

chmod +x "$TARGET"
echo "Installed: $TARGET"
echo "Run: $TARGET install-shell"
