name: ci
on:
push:
branches: [ main ]
pull_request:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Install
uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 with:
toolchain: stable
components: rustfmt, clippy
- name: Fmt
run: cargo fmt --all -- --check
- name: Clippy
run: cargo clippy --workspace --all-targets --all-features -- -D warnings
- name: Tests
run: cargo test --workspace --all-features
- name: Docs
run: cargo doc --workspace --all-features --no-deps
env:
RUSTDOCFLAGS: -D warnings
features:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Install
uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 with:
toolchain: stable
- uses: taiki-e/install-action@5b4d68e2e660441203ab128a23676f1e4faf1532 with:
tool: cargo-hack
- name: Each feature alone
run: cargo hack check --each-feature --no-dev-deps -p plurimus
- name: Core alone builds its examples
run: cargo check -p plurimus --no-default-features --examples
msrv:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Read MSRV from the workspace manifest
id: msrv
run: |
version=$(cargo metadata --format-version 1 --no-deps \
| jq -er '.packages[] | select(.name == "plurimus") | .rust_version')
echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Install
uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 with:
toolchain: ${{ steps.msrv.outputs.version }}
- name: Check
run: cargo check --workspace --all-features
markdown:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- name: Format
run: npx -y prettier@3.6.2 --check '**/*.md'
- name: Lint
run: npx -y markdownlint-cli2@0.18.1 '**/*.md'
typos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- uses: crate-ci/typos@8a48f81b6c64dcfea44b3633223084c4be58ac5f
deny:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- uses: EmbarkStudios/cargo-deny-action@3c6349835b2b7b196a839186cb8b78e02f7b5f25
semver:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
- uses: obi1kenobi/cargo-semver-checks-action@6b69fcf40e9b5fb17adeb57e4b6ecd020649a239 with:
feature-group: all-features