name: Install Smoke

on:
  push:
    branches: [main]
  pull_request:
  workflow_dispatch:

concurrency:
  group: install-smoke-${{ github.event.pull_request.number || github.sha }}
  cancel-in-progress: true

jobs:
  docs-scope:
    runs-on: ubuntu-latest
    outputs:
      docs_only: ${{ steps.check.outputs.docs_only }}
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Detect docs-only changes
        id: check
        uses: ./.github/actions/detect-docs-changes

  install-smoke:
    needs: [docs-scope]
    if: needs.docs-scope.outputs.docs_only != 'true'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout CLI
        uses: actions/checkout@v4

      - name: Setup pnpm (corepack retry)
        run: |
          set -euo pipefail
          corepack enable
          for attempt in 1 2 3; do
            if corepack prepare pnpm@10.23.0 --activate; then
              pnpm -v
              exit 0
            fi
            echo "corepack prepare failed (attempt $attempt/3). Retrying..."
            sleep $((attempt * 10))
          done
          exit 1

      - name: Install pnpm deps (minimal)
        run: pnpm install --ignore-scripts --frozen-lockfile

      - name: Run installer docker tests
        env:
          CLAWDBOT_INSTALL_URL: https://openclaw.ai/install.sh
          CLAWDBOT_INSTALL_CLI_URL: https://openclaw.ai/install-cli.sh
          CLAWDBOT_NO_ONBOARD: "1"
          CLAWDBOT_INSTALL_SMOKE_SKIP_CLI: "1"
          CLAWDBOT_INSTALL_SMOKE_SKIP_NONROOT: ${{ github.event_name == 'pull_request' && '1' || '0' }}
          CLAWDBOT_INSTALL_SMOKE_SKIP_PREVIOUS: "1"
        run: pnpm test:install:smoke
