version: '3'

vars:
  VERSION:
    sh: git describe --tags --exact-match 2>/dev/null || echo "dev"
  # Base ldflags for version injection
  LDFLAGS_BASE: "-X github.com/host-uk/core/pkg/cli.AppVersion={{.VERSION}}"
  # Development build: includes debug info
  LDFLAGS: "{{.LDFLAGS_BASE}}"
  # Release build: strips debug info and symbol table for smaller binary
  LDFLAGS_RELEASE: "-s -w {{.LDFLAGS_BASE}}"

tasks:
  # --- CLI Management ---
  cli:build:
    desc: "Build core CLI to ./bin/core (dev build with debug info)"
    cmds:
      - go build -ldflags '{{.LDFLAGS}}' -o ./bin/core .

  cli:build:release:
    desc: "Build core CLI for release (smaller binary, no debug info)"
    cmds:
      - go build -ldflags '{{.LDFLAGS_RELEASE}}' -o ./bin/core .

  cli:install:
    desc: "Install core CLI to system PATH (dev build)"
    cmds:
      - go install -ldflags '{{.LDFLAGS}}' .

  cli:install:release:
    desc: "Install core CLI for release (smaller binary)"
    cmds:
      - go install -ldflags '{{.LDFLAGS_RELEASE}}' .

  # --- Development ---
  test:
    desc: "Run all tests"
    cmds:
      - core test

  test:verbose:
    desc: "Run all tests with verbose output"
    cmds:
      - core test --verbose

  test:run:
    desc: "Run specific test (use: task test:run -- TestName)"
    cmds:
      - core test --run {{.CLI_ARGS}}

  cov:
    desc: "Run tests with coverage report"
    cmds:
      - core go cov

  fmt:
    desc: "Format Go code"
    cmds:
      - core go fmt

  lint:
    desc: "Run linter"
    cmds:
      - core go lint

  mod:tidy:
    desc: "Run go mod tidy"
    cmds:
      - core go mod tidy

  # --- Quality Assurance ---
  qa:
    desc: "Run QA: fmt, vet, lint, test"
    cmds:
      - core go qa

  qa:quick:
    desc: "Quick QA: fmt, vet, lint only"
    cmds:
      - core go qa quick

  qa:full:
    desc: "Full QA: + race, vuln, security"
    cmds:
      - core go qa full

  qa:fix:
    desc: "QA with auto-fix"
    cmds:
      - core go qa --fix

  # --- Build ---
  build:
    desc: "Build project with auto-detection"
    cmds:
      - core build

  build:ci:
    desc: "Build for CI (all targets, checksums)"
    cmds:
      - core build --ci

  # --- Environment ---
  doctor:
    desc: "Check development environment"
    cmds:
      - core doctor

  doctor:verbose:
    desc: "Check environment with details"
    cmds:
      - core doctor --verbose

  # --- Code Review ---
  review:
    desc: "Run CodeRabbit review"
    cmds:
      - coderabbit review --prompt-only

  check:
    desc: "Tidy, test, and review"
    cmds:
      - task: mod:tidy
      - task: test
      - task: review

  # --- i18n ---
  i18n:generate:
    desc: "Regenerate i18n key constants"
    cmds:
      - go generate ./pkg/i18n/...

  i18n:validate:
    desc: "Validate i18n key usage"
    cmds:
      - go run ./internal/tools/i18n-validate ./...

  # --- Multi-repo (when in workspace) ---
  dev:health:
    desc: "Check health of all repos"
    cmds:
      - core dev health

  dev:work:
    desc: "Full workflow: status, commit, push"
    cmds:
      - core dev work

  dev:status:
    desc: "Show status of all repos"
    cmds:
      - core dev work --status
