acpx 0.1.0

Simple Rust library and tooling for building on ACP.
Documentation
name: CI

on:
  push:
    branches: [main, "release/**"]
  pull_request:
    branches: [main]

env:
  CARGO_TERM_COLOR: always
  CARGO_INCREMENTAL: 0

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - uses: actions/setup-node@v4
        with:
          node-version: "lts/*"

      - uses: ./.github/actions/setup-rust
        with:
          components: rustfmt clippy
          tools: typos-cli cargo-nextest
          cache-key: test

      - run: typos
      - run: cargo fmt --all -- --check
      - run: npx --yes oxfmt@0.40.0 --no-error-on-unmatched-pattern --check "**/*.md" "**/*.toml" "**/*.yml" "**/*.yaml" "!CHANGELOG.md"
      - run: cargo clippy --all-targets --all-features -- -D warnings
      - run: RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features --locked
      - run: cargo nextest run --all --all-features --locked --no-tests pass
      - run: cargo test --doc --all-features --locked

  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - uses: ./.github/actions/setup-rust
        with:
          cache-key: build

      - run: cargo build --all --all-features --locked --release

  msrv:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - name: Determine MSRV
        id: msrv
        run: |
          rustup update stable && rustup default stable
          echo "value=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].rust_version')" >> "$GITHUB_OUTPUT"

      - uses: ./.github/actions/setup-rust
        with:
          toolchain: ${{ steps.msrv.outputs.value }}
          cache-key: msrv-${{ steps.msrv.outputs.value }}

      - run: cargo check --all-features --locked