name: "CodeQL"

on:
  schedule:
    - cron: '0 0 * * *'
  workflow_dispatch:

jobs:
  codeql:
    name: 🐛 CodeQL
    runs-on: ubuntu-22.04
    permissions:
      actions: read
      contents: read
      security-events: write

    steps:
    - name: 🧰 Checkout
      uses: actions/checkout@v3
      with:
        submodules: recursive

    - name: ✋ Initialize CodeQL
      uses: github/codeql-action/init@v2
      with:
        languages: 'cpp'

    - name: 📜 Restore ccache
      uses: actions/cache@v3
      with:
        path: |
          ~/.cache/ccache
        key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ github.run_id }}
        restore-keys: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build
      
    - name: 📜 Restore CMakeCache
      uses: actions/cache@v3
      with:
        path: |
          build/CMakeCache.txt
        key: ${{ runner.os }}-${{ secrets.CACHE_VERSION }}-build-${{ hashFiles('**/CMakeLists.txt') }}
      
    - name: ⬇️ Install dependencies
      run: |
        sudo apt update
        sudo bash dist/get_deps_debian.sh

    - name: 🛠️ Build
      run: |
        mkdir -p build
        cd build
        CC=gcc-12 CXX=g++-12 cmake              \
          -DCMAKE_BUILD_TYPE=$BUILD_TYPE        \
          -DCMAKE_INSTALL_PREFIX="$PWD/install" \
          -DCMAKE_C_COMPILER_LAUNCHER=ccache    \
          -DCMAKE_CXX_COMPILER_LAUNCHER=ccache  \
          -DCMAKE_C_FLAGS="-fuse-ld=lld"        \
          -DCMAKE_CXX_FLAGS="-fuse-ld=lld"      \
          ..
        make -j 4 install

    - name: 🗯️ Perform CodeQL Analysis
      uses: github/codeql-action/analyze@v2