name: CI
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
jobs:
linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- uses: Swatinem/rust-cache@v2
- name: Cache cargo-tarpaulin 0.35.2
id: tarpaulin-cache
uses: actions/cache@v4
with:
path: ~/.cargo/bin/cargo-tarpaulin
key: cargo-tarpaulin-0.35.2-${{ runner.os }}
- name: Install cargo-tarpaulin 0.35.2
if: steps.tarpaulin-cache.outputs.cache-hit != 'true'
run: cargo install cargo-tarpaulin --version 0.35.2 --locked
- name: Cache cargo-deny 0.20.2
id: deny-cache
uses: actions/cache@v4
with:
path: ~/.cargo/bin/cargo-deny
key: cargo-deny-0.20.2-${{ runner.os }}
- name: Install cargo-deny 0.20.2
if: steps.deny-cache.outputs.cache-hit != 'true'
run: cargo install cargo-deny --version 0.20.2 --locked
- name: Cache ast-grep 0.44.1
id: astgrep-cache
uses: actions/cache@v4
with:
path: ~/.cargo/bin/ast-grep
key: ast-grep-0.44.1-${{ runner.os }}
- name: Install ast-grep 0.44.1
if: steps.astgrep-cache.outputs.cache-hit != 'true'
run: cargo install ast-grep --version 0.44.1 --locked
- run: make ci
- name: Doctests
run: cargo test --doc --workspace
macos:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- run: cargo build --locked
- run: make test