hyprswitch 3.3.2

A CLI/GUI that allows switching between windows in Hyprland
name: Rust

on:
  push:
    branches-ignore:
      - 'release-please-**'

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  CARGO_TERM_COLOR: always
  CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse

jobs:
  build:
    name: Build and Test
    runs-on: "ubuntu-latest"
    steps:
      - uses: actions/checkout@v4
      - name: install Rust stable
        uses: dtolnay/rust-toolchain@stable
      - name: Install gtk4-layer-shell
        working-directory: /tmp
        run: |
          sudo apt-get update
          sudo apt -y install git libglib2.0-dev libgraphene-1.0-dev meson ninja-build libwayland-dev libgtk-4-dev gobject-introspection libadwaita-1-dev libgirepository1.0-dev python3 valac
          git clone https://github.com/wmww/gtk4-layer-shell
          cd gtk4-layer-shell
          meson setup build
          ninja -C build
          sudo ninja -C build install
          sudo ldconfig
      - name: Load Rust Cache
        uses: Swatinem/rust-cache@v2
        with:
          prefix-key: rust-build
      - name: Build
        run: cargo build --release --all-features
      - name: Test
        run: cargo test --all-features

  clippy:
    name: Run Clippy
    runs-on: "ubuntu-latest"
    steps:
      - uses: actions/checkout@v4
      - name: install Rust stable
        uses: dtolnay/rust-toolchain@stable
      - name: Install gtk4-layer-shell
        working-directory: /tmp
        run: |
          sudo apt-get update
          sudo apt -y install git libglib2.0-dev libgraphene-1.0-dev meson ninja-build libwayland-dev libgtk-4-dev gobject-introspection libadwaita-1-dev libgirepository1.0-dev python3 valac
          git clone https://github.com/wmww/gtk4-layer-shell
          cd gtk4-layer-shell
          meson setup build
          ninja -C build
          sudo ninja -C build install
          sudo ldconfig
      - name: Load Rust Cache
        uses: Swatinem/rust-cache@v2
        with:
          prefix-key: rust-build
      - name: Run Clippy
        run: cargo clippy --all-targets --all-features
        env:
          RUSTFLAGS: "-Dwarnings"