name: "CodeQL and Unit Tests"

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
  schedule:
    - cron: '21 0 * * 2'

jobs:
  analyze:
    name: 🐛 Analyze
    runs-on: ubuntu-latest
    permissions:
      actions: read
      contents: read
      security-events: write

    steps:
    - name: 🧰 Checkout
      uses: actions/checkout@v2
      with:
        fetch-depth: 0
        submodules: recursive

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

    - name: 📜 Restore cache
      uses: actions/cache@v2
      with:
        path: |
          ~/.ccache
          .flatpak-builder
        key: ${{ runner.os }}-build

    - name: ⬇️ Install dependencies
      run: |
        sudo apt update
        sudo bash dist/get_deps_debian.sh

    - name: 🛠️ Build
      run: |
        mkdir build
        cd build
        CC=gcc-10 CXX=g++-10 cmake \
          -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
          -DCMAKE_INSTALL_PREFIX="$PWD/install" \
          -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache \
          ..
        make -j 4 install

    - name: 🧪 Perform Unit Tests
      run: |
        cd build
        ctest

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