name: Lint
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
lint:
name: Lint and Format
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Cache cargo registry
uses: actions/cache@v5
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-registry-
- name: Cache cargo index
uses: actions/cache@v5
with:
path: ~/.cargo/git
key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-index-
- name: Cache cargo build
uses: actions/cache@v5
with:
path: target
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-build-target-
- name: Check Rust formatting
run: cargo fmt -- --check
- name: Setup database for sqlx
run: |
cargo install sqlx-cli --no-default-features --features sqlite
mkdir -p db/sqlite
DATABASE_URL=sqlite:db/sqlite/dev.db sqlx database create
DATABASE_URL=sqlite:db/sqlite/dev.db sqlx migrate run --source torc-server/migrations
- name: Run Clippy
run: cargo clippy --all --all-targets --all-features -- -D warnings
- name: Check Rust-owned OpenAPI artifacts
run: |
cargo test --lib --no-default-features --features openapi-codegen
bash api/check_openapi_codegen_parity.sh
- name: Install dprint
run: |
curl -fsSL https://dprint.dev/install.sh | sh
echo "$HOME/.dprint/bin" >> $GITHUB_PATH
- name: Check markdown formatting
run: ~/.dprint/bin/dprint check
- name: Run shellcheck
run: |
find . -name '*.sh' -not -path './target/*' -not -path './.venv/*' -not -path '*/\.venv/*' | xargs shellcheck