name: Rust

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

env:
  CARGO_TERM_COLOR: always

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - uses: actions-rust-lang/setup-rust-toolchain@v1


      - name: Install ubuntu dependcies
        run: |
          sudo apt update
          sudo apt install -y librust-gdk4-sys-dev \
            libglib2.0-dev libgtk-layer-shell-dev libgtk-layer-shell0 gir1.2-gtklayershell-0.1 \
            libgtk-4-dev gobject-introspection libgirepository1.0-dev gtk-doc-tools python3 valac \
            git cmake gcc meson ninja-build

      - name: Install gt4k layer shell
        run: |
          git clone https://github.com/wmww/gtk4-layer-shell
          cd gtk4-layer-shell
          meson setup -Dexamples=true -Ddocs=true -Dtests=true build
          ninja -C build
          sudo ninja -C build install
          sudo ldconfig

      - name: Formatting
        run: cargo fmt --all -- --check
      - name: Clippy warnings
        run: cargo clippy -- -D warnings
      - name: Build
        run: cargo build --verbose
      - name: Run tests
        run: cargo test -- --show-output
