coset 0.4.2

Set of types for supporting COSE
Documentation
name: CI
permissions:
  contents: read
on:
  pull_request:
    paths-ignore:
      - README.md
  push:
    branches: main
    paths-ignore:
      - README.md

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
          - beta
          - nightly-2025-04-01
    steps:
      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
      - uses: dtolnay/rust-toolchain@a3ac054b2e7d62f514aa1bd57e3508c522fe772d # 1.68.2
        with:
          toolchain: ${{ matrix.rust }}
          components: rustfmt
      - run: cargo +${{ matrix.rust }} build --release --workspace
      - run: cargo +${{ matrix.rust }} build --release --workspace --features=std

  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
          - beta
          - nightly-2025-04-01
    steps:
      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
        with:
          submodules: true
      - uses: dtolnay/rust-toolchain@a3ac054b2e7d62f514aa1bd57e3508c522fe772d # 1.68.2
        with:
          toolchain: ${{ matrix.rust }}
          components: rustfmt
      - run: cargo +${{ matrix.rust }} test --workspace -- --nocapture
      - run: cargo +${{ matrix.rust }} test --workspace --features=std -- --nocapture

  examples:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
          - beta
          - nightly-2025-04-01
    steps:
      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
        with:
          submodules: true
      - uses: dtolnay/rust-toolchain@a3ac054b2e7d62f514aa1bd57e3508c522fe772d # 1.68.2
        with:
          toolchain: ${{ matrix.rust }}
          components: rustfmt
      - run: |
          for eg in `ls examples/*.rs | xargs basename --suffix=.rs`; do
            cargo +${{ matrix.rust }} run --example ${eg};
            cargo +${{ matrix.rust }} run --features=std --example ${eg};
          done

  no_std:
    name: Build for a no_std target
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
          - beta
          - nightly-2025-04-01
    steps:
      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
      - uses: dtolnay/rust-toolchain@a3ac054b2e7d62f514aa1bd57e3508c522fe772d # 1.68.2
        with:
          toolchain: ${{ matrix.rust }}
          components: rustfmt
          targets: thumbv6m-none-eabi
      - run: cargo +${{ matrix.rust }} build --release --workspace --target thumbv6m-none-eabi

  msrv:
    name: Rust ${{matrix.rust}} MSRV
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        rust: [1.81.0, 1.82.0]
    steps:
      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
        with:
          submodules: true
      - uses: dtolnay/rust-toolchain@a3ac054b2e7d62f514aa1bd57e3508c522fe772d # 1.68.2
        with:
          toolchain: ${{ matrix.rust }}
          components: rustfmt
      - run: rustc --version
      - run: cargo +${{ matrix.rust }} build --release --workspace
      - run: cargo +${{ matrix.rust }} build --release --workspace --all-features

  formatting:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
      - uses: actions/setup-go@6edd4406fa81c3da01a34fa6f6343087c207a568 # v3.5.0
      - run: go install github.com/campoy/embedmd@97c13d6
      - uses: ruby/setup-ruby@c04af2bb7258bb6a03df1d3c1865998ac9390972 # v1.194.0
        with:
          ruby-version: '2.7'
          bundler-cache: true
      - run: gem install mixlib-shellout -v 3.3.8
      - run: gem install mdl -v 0.14.0
      - uses: dtolnay/rust-toolchain@a3ac054b2e7d62f514aa1bd57e3508c522fe772d # 1.68.2
        with:
          toolchain: nightly-2025-04-01
          components: rustfmt
      - run: cargo +nightly-2025-04-01 fmt --all -- --check
      - run: scripts/check-format.sh

  clippy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
      - uses: dtolnay/rust-toolchain@a3ac054b2e7d62f514aa1bd57e3508c522fe772d # 1.68.2
        with:
          toolchain: stable
          components: rustfmt, clippy
      - run: cargo +stable clippy --all-features --all-targets -- -Dwarnings
      - run: git diff --exit-code

  doc:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
      - uses: dtolnay/rust-toolchain@a3ac054b2e7d62f514aa1bd57e3508c522fe772d # 1.68.2
        with:
          toolchain: stable
      - run: RUSTDOCFLAGS="-Dwarnings" cargo doc --no-deps --document-private-items

  udeps:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
      - uses: dtolnay/rust-toolchain@a3ac054b2e7d62f514aa1bd57e3508c522fe772d # 1.68.2
        with:
          toolchain: nightly-2025-04-01
          components: rustfmt
      - run: cargo +nightly-2025-04-01 install --locked --version 0.1.59 cargo-udeps
      - run: cargo +nightly-2025-04-01 udeps

  deny:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
      - uses: dtolnay/rust-toolchain@a3ac054b2e7d62f514aa1bd57e3508c522fe772d # 1.68.2
        with:
          toolchain: stable
          components: rustfmt
      - run: cargo install --locked --version 0.19.0 cargo-deny
      - run: cargo deny check

  coverage:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
        with:
          submodules: true
          fetch-depth: 0
      - uses: dtolnay/rust-toolchain@a3ac054b2e7d62f514aa1bd57e3508c522fe772d # 1.68.2
        with:
          toolchain: stable
          components: rustfmt
      - uses: actions-rs/install@69ec87709ffb5b19a7b5ddbf610cb221498bb1eb # v0.1.2
        with:
          crate: cargo-tarpaulin
          version: 0.30.0
          use-tool-cache: true
      - run: cargo tarpaulin --verbose --ignore-tests --all-features --timeout=600 --out Xml
      - name: Upload to codecov.io
        run: |
          bash <(curl -s https://codecov.io/bash)