name: Rust on: push: branches: [ "main" ] pull_request: branches: [ "main" ] env: CARGO_TERM_COLOR: always jobs: fmt: name: Formatting runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: cargo fmt run: cargo fmt --check ci: name: ${{ matrix.job }} ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - ubuntu-latest - windows-latest - macos-latest - macos-15-intel job: - build - check - clippy - test steps: - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 - name: Install Linux deps if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install libx11-dev libxtst-dev libadwaita-1-dev libgtk-4-dev - name: Install macOS dependencies if: runner.os == 'macOS' run: brew install gtk4 libadwaita imagemagick - name: Install Windows Dependencies - create gtk dir if: runner.os == 'Windows' run: mkdir C:\gtk-build\gtk\x64\release - name: Install Windows Dependencies - install gtk from cache uses: actions/cache@v3 if: runner.os == 'Windows' id: cache with: path: c:/gtk-build/gtk/x64/release/** key: gtk-windows-build restore-keys: gtk-windows-build - name: Install Windows Dependencies - update PATH if: runner.os == 'Windows' run: | echo "PKG_CONFIG=C:\gtk-build\gtk\x64\release\bin\pkgconf.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append echo "C:\pkg-config-lite-0.28-1\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append echo "C:\gtk-build\gtk\x64\release\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append echo $env:GITHUB_PATH echo $env:PATH - name: Install Windows dependencies - build gtk if: runner.os == 'Windows' && steps.cache.outputs.cache-hit != 'true' run: | # choco install msys2 # choco install visualstudio2022-workload-vctools # choco install pkgconfiglite py -m venv .venv .venv\Scripts\activate.ps1 py -m pip install gvsbuild gvsbuild build --msys-dir=C:\msys64 gtk4 libadwaita librsvg - name: cargo build if: matrix.job == 'build' run: cargo build - name: cargo check if: matrix.job == 'check' run: cargo check --workspace --all-targets --all-features - name: cargo test if: matrix.job == 'test' run: cargo test --workspace --all-features - name: cargo clippy if: matrix.job == 'clippy' run: cargo clippy --workspace --all-targets --all-features -- -D warnings - uses: clechasseur/rs-clippy-check@v4 if: matrix.job == 'clippy' with: args: --workspace --all-targets --all-features