name: CodeQL

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    # Every Saturday 6:41 in JST
    - cron: '41 21 * * 5'
  workflow_dispatch:

permissions:
  security-events: write

jobs:
  analyze-go:
    name: Analyze Go
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-go@v6
        with:
          go-version: '1.26'
          check-latest: true
      - uses: github/codeql-action/init@v4
        with:
          config-file: ./.github/codeql/codeql-config.yaml
          languages: go
      - name: Build Go sources
        run: |
          set -x
          go build -v ./cmd/actionlint
          GOOS=js GOARCH=wasm go build -v -o ./playground/main.wasm ./playground
      - uses: github/codeql-action/analyze@v4
        with:
          category: "/language:go"
  analyze-ts:
    name: Analyze TypeScript
    runs-on: ubuntu-latest
    defaults:
      run:
        working-directory: ./playground
    steps:
      - uses: actions/checkout@v6
      - uses: actions/setup-node@v6
        with:
          node-version: "lts/*"
          cache: npm
          cache-dependency-path: ./playground/package-lock.json
      - uses: github/codeql-action/init@v4
        with:
          config-file: ./.github/codeql/codeql-config.yaml
          languages: javascript-typescript
          source-root: ./playground
      - name: Build playground
        run: make build
      - uses: github/codeql-action/analyze@v4
        with:
          category: "/language:javascript-typescript"
