name: "CodeQL"

on:
  push:
    branches: ["master"]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: ["master"]
  schedule:
    # runs every day at 4:23 AM UTC
    - cron: "23 4 * * *"

permissions:
  contents: read

jobs:
  codeql_cpp:
    name: C++
    runs-on: ubuntu-22.04
    permissions:
      actions: read
      contents: read
      security-events: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Setup Build Agent
        uses: ./.github/actions/setup-build-agent
        with:
          target: codeql
          cache-key: linux-gcc-x86_64-codeql

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v2
        with:
          languages: cpp
          config-file: ./src/configs/codeql.yml

      - name: Build Library
        run: ./src/scripts/ci_build.py codeql

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v2
        with:
          category: cpp

  codeql_py:
    name: Python
    runs-on: ubuntu-22.04
    permissions:
      actions: read
      contents: read
      security-events: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v2
        with:
          languages: python
          config-file: ./src/configs/codeql.yml

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v2
        with:
          category: python
