| 1 | name: CI |
| 2 | |
| 3 | on: |
| 4 | push: |
| 5 | branches: [master] |
| 6 | pull_request: |
| 7 | |
| 8 | # A newer push to the same branch or PR supersedes the running check. |
| 9 | concurrency: |
| 10 | group: ci-${{ github.ref }} |
| 11 | cancel-in-progress: true |
| 12 | |
| 13 | env: |
| 14 | CARGO_TERM_COLOR: always |
| 15 | |
| 16 | jobs: |
| 17 | check: |
| 18 | name: fmt, clippy, test |
| 19 | runs-on: ubuntu-latest |
| 20 | # Arch has current dav1d and libheif, the two system libraries the default features need. |
| 21 | container: archlinux:latest |
| 22 | steps: |
| 23 | - name: Install system dependencies |
| 24 | run: | |
| 25 | pacman -Syu --noconfirm --needed base-devel git pkgconf rustup \ |
| 26 | dav1d libheif libxkbcommon wayland |
| 27 | rustup default stable |
| 28 | rustup component add rustfmt clippy |
| 29 | - uses: actions/checkout@v7 |
| 30 | - uses: Swatinem/rust-cache@v2 |
| 31 | - run: cargo fmt --check |
| 32 | - run: cargo clippy --all-targets --locked -- -D warnings |
| 33 | - run: cargo test --locked |
| 34 | - name: Build without C dependencies |
| 35 | run: cargo clippy --all-targets --locked --no-default-features --features jxl,svg,raw -- -D warnings |
| 36 | - name: Man page and completions render |
| 37 | run: | |
| 38 | cargo run --locked -q -- man | grep -q '^.SH KEYS' |
| 39 | cargo run --locked -q -- completions zsh | grep -q '^#compdef remage' |