dtg-credentials 0.7.0

Decentralized Trust Graph (DTG) Credentials Library
Documentation
name: CI

# This repository had no automated checks. Two releases' worth of a credential
# library - including `authority::verify_chain`, which is the part that decides
# whether a holder acquired authority they were never granted - merged on local
# runs alone. That is the gap this closes.

on:
  push:
    branches: [main]
  pull_request:

env:
  CARGO_TERM_COLOR: always

jobs:
  fmt:
    name: Format
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - run: cargo fmt --all --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - uses: Swatinem/rust-cache@v2
      # affinidi-tdk (a dev-dependency) reaches the OS keyring, which links
      # dbus and pcsclite. Only the jobs that build dev-dependencies need these
      # — `cargo check` and `cargo package` do not, and stay lean.
      - name: System dependencies
        run: sudo apt-get update && sudo apt-get install -y libpcsclite-dev libdbus-1-dev
      - run: cargo clippy --all-targets --all-features -- -D warnings

  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      # affinidi-tdk (a dev-dependency) reaches the OS keyring, which links
      # dbus and pcsclite. Only the jobs that build dev-dependencies need these
      # — `cargo check` and `cargo package` do not, and stay lean.
      - name: System dependencies
        run: sudo apt-get update && sudo apt-get install -y libpcsclite-dev libdbus-1-dev
      - run: cargo test --all-features

  # The signing backend is optional and `default = ["affinidi-signing"]`, so the
  # default build never exercises the feature-off path. A consumer who disables
  # default features is the one who finds out.
  no-default-features:
    name: No default features
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      # affinidi-tdk (a dev-dependency) reaches the OS keyring, which links
      # dbus and pcsclite. Only the jobs that build dev-dependencies need these
      # — `cargo check` and `cargo package` do not, and stay lean.
      - name: System dependencies
        run: sudo apt-get update && sudo apt-get install -y libpcsclite-dev libdbus-1-dev
      - run: cargo test --no-default-features

  msrv:
    name: Minimum Supported Rust Version
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: dtolnay/rust-toolchain@1.95.0
      - run: cargo check --all-features

  # A crate that cannot be packaged cannot be released, and finding that out at
  # tag time means the tag is already wrong. `--locked` is deliberate: it is what
  # the publish job uses, so a lockfile that has drifted fails here first.
  package:
    name: Package
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - run: cargo package --locked