name: "CodeQL"

on:
    push:
        branches: [master]
    pull_request:
        # The branches below must be a subset of the branches above
        branches: [master]
    schedule:
        - cron: '42 8 * * 3'

permissions:
    contents: read # to fetch code (actions/checkout)

jobs:
    CodeQL-Build:

        permissions:
            contents: read # to fetch code (actions/checkout)
            security-events: write # to upload SARIF results (github/codeql-action/analyze)

        strategy:
          fail-fast: false
          matrix:
            include:
               - language: python
                 os: ubuntu-latest
               - language: c
                 os: ubuntu-latest
               - language: c
                 os: windows-latest
               - language: actions
                 os: ubuntu-latest

        runs-on: ${{ matrix.os }}

        steps:

        - name: Checkout repository
          uses: actions/checkout@v7.0.1
          with:
              # We must fetch at least the immediate parents so that if this is
              # a pull request then we can checkout the head.
              fetch-depth: 2
              persist-credentials: false

        # Initializes the CodeQL tools for scanning.
        - name: Initialize CodeQL
          uses: github/codeql-action/init@v4.37.3
          with:
              languages: ${{ matrix.language }}
              trap-caching: false

        - name: Install calibre dependencies
          if: matrix.language == 'c'
          run:
              python setup/unix-ci.py install

        - name: Bootstrap calibre
          if: matrix.language == 'c'
          run:
              python setup/unix-ci.py bootstrap

        - name: Perform CodeQL Analysis
          uses: github/codeql-action/analyze@v4.37.3
