name: Continuous integration

env:
  # Stops the `debconf: unable to initialize frontend: {Dialog, Readline, Teletype}` errors
  # See https://stackoverflow.com/a/34774096
  DEBIAN_FRONTEND: noninteractive

on:
  push:
    branches: [master]
  pull_request:

jobs:
  fmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - name: install toolchain
        run: rustup toolchain install 1.90.0 --component rustfmt
      - name: fmt
        run: cargo fmt --all --check

  clippy:
    name: Clippy Check
    runs-on: ubuntu-24.04
    steps:
      - name: install system dependencies
        run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libdav1d-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev
      - uses: actions/checkout@v6
      - name: install toolchain
        run: rustup toolchain install 1.90.0 --component clippy
      - name: clippy
        run: cargo clippy --all-features

  test:
    name: Test
    runs-on: ubuntu-24.04
    steps:
      - name: install system dependencies
        run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libdav1d-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev
      - uses: actions/checkout@v6
      - name: install toolchain
        run: rustup show
      - name: test
        run: cargo test --all-features

  check-features:
    name: Check features
    runs-on: ubuntu-24.04
    steps:
      - name: install system dependencies
        run: sudo apt-get update && sudo apt-get install lld cmake libclang-dev libdav1d-dev libexpat1-dev libfontconfig-dev libfreetype-dev libpipewire-0.3-dev libpulse-dev pkg-config libxkbcommon-dev libudev-dev libinput-dev libwayland-dev just
      - uses: actions/checkout@v6
      - name: install toolchain
        run: rustup show
      - name: check features
        run: just check-features
