name: CI
on:
  push:
    branches: [main]
  pull_request:

jobs:
  agent-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-go@v5
        with:
          go-version: '1.22'

      - name: Test agent
        run: go test ./...
        working-directory: products/02-iac-drift-detection/agent

      - name: Vet
        run: go vet ./...
        working-directory: products/02-iac-drift-detection/agent

  saas-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-node@v4
        with:
          node-version: '22'

      - name: Install deps
        run: npm ci
        working-directory: products/02-iac-drift-detection/saas

      - name: Type check
        run: npx tsc --noEmit
        working-directory: products/02-iac-drift-detection/saas

      - name: Test
        run: npm test
        working-directory: products/02-iac-drift-detection/saas

  agent-build:
    runs-on: ubuntu-latest
    needs: agent-test
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4

      - uses: actions/setup-go@v5
        with:
          go-version: '1.22'

      - name: Build agent binaries
        run: |
          GOOS=linux GOARCH=amd64 go build -o dist/drift-linux-amd64 ./cmd/drift
          GOOS=darwin GOARCH=arm64 go build -o dist/drift-darwin-arm64 ./cmd/drift
          GOOS=windows GOARCH=amd64 go build -o dist/drift-windows-amd64.exe ./cmd/drift
        working-directory: products/02-iac-drift-detection/agent
