name: CI
on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master
jobs:
  clang-format:
    name: Check clang-format
    runs-on: ubuntu-latest
    container: archlinux:latest
    steps:
      - name: Install dependencies
        run: |
          pacman -Syu --noconfirm git clang diffutils
          git config --global --add safe.directory $GITHUB_WORKSPACE
      - uses: actions/checkout@v4
      - uses: fcitx/github-actions@clang-format
  check:
    name: Build and test
    needs: clang-format
    runs-on: ubuntu-latest
    container: archlinux:latest
    strategy:
      fail-fast: false
      matrix:
        compiler: [gcc, clang]
        include:
          - compiler: gcc
            cxx_compiler: g++
          - compiler: clang
            cxx_compiler: clang++
    env:
      CC: ${{ matrix.compiler }}
      CXX: ${{ matrix.cxx_compiler }}
    steps:
      - name: Install dependencies
        run: |
          pacman -Syu --noconfirm base-devel clang cmake ninja extra-cmake-modules fmt libuv git lua
      - uses: actions/checkout@v4
        with:
          repository: fcitx/fcitx5
          path: fcitx5
      - name: Cache fcitx5 data files
        uses: actions/cache@v4
        with:
          path: 'fcitx5/**/*.tar.*'
          key: ${{ runner.os }}-${{ hashFiles('fcitx5/src/modules/spell/CMakeLists.txt')
            }}
      - name: Build and Install fcitx5
        uses: fcitx/github-actions@cmake
        with:
          path: fcitx5
          cmake-option: >-
            -DENABLE_KEYBOARD=Off -DENABLE_X11=Off -DENABLE_WAYLAND=Off -DENABLE_ENCHANT=Off
            -DENABLE_DBUS=Off -DENABLE_SERVER=Off -DENABLE_EMOJI=Off -DUSE_SYSTEMD=Off
      - uses: actions/checkout@v4
        with:
          path: fcitx5-lua
      - name: Init CodeQL
        uses: github/codeql-action/init@v3
        with:
          languages: cpp
          source-root: fcitx5-lua
      - name: Build and Install lua
        uses: fcitx/github-actions@cmake
        with:
          path: fcitx5-lua
      - name: Test
        run: |
          ctest --test-dir fcitx5-lua/build
      - name: CodeQL Analysis
        uses: github/codeql-action/analyze@v2
