embassy-embedded-time 0.1.1

Implementation of embedded-time Clocks using embassy-time
Documentation
name: Continuous Integration

on:
  push:
  pull_request:
  release:
    types: [ published ]

env:
  CARGO_TERM_COLOR: always

jobs:
  style:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
          components: rustfmt

      - name: Style Check
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check

  clippy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          target: thumbv7em-none-eabihf
          override: true
          components: clippy

      - name: Clippy Check
        uses: actions-rs/cargo@v1
        with:
          command: clippy

  documentation:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5

      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          target: thumbv7em-none-eabihf
          override: true

      - name: Cargo Doc
        uses: actions-rs/cargo@v1
        with:
          command: doc

  audit:
    runs-on: ubuntu-latest
    permissions:
      checks: write
    steps:
      - uses: actions/checkout@v5
      - run: cargo generate-lockfile
      - name: Cargo Audit
        uses: rustsec/audit-check@v2
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

  compile:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        toolchain:
          - stable
          - beta

    steps:
      - uses: actions/checkout@v5

      - name: Install Rust ${{ matrix.toolchain }}
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          target: thumbv7em-none-eabihf
          override: true

      - name: Cargo Check
        uses: actions-rs/cargo@v1
        with:
          command: check
          args: --verbose

      - name: Cargo Build [No-Features]
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --no-default-features

      - name: Cargo Build
        uses: actions-rs/cargo@v1
        with:
          command: build

      - name: Cargo Build [Release]
        uses: actions-rs/cargo@v1
        with:
          command: build
          args: --release

  test:
    runs-on: ubuntu-22.04
    steps:
      - uses: actions/checkout@v5

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          override: true
          toolchain: stable
          profile: minimal

      - name: Cargo Test
        uses: actions-rs/cargo@v1
        with:
          command: test

  publish:
    runs-on: ubuntu-latest
    needs: [ style, clippy, documentation, audit, compile, test ]
    if: github.event_name == 'release'
    steps:
      - uses: actions/checkout@v5

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          override: true
          toolchain: stable
          profile: minimal

      - name: Cargo Publish
        uses: actions-rs/cargo@v1
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
        with:
          command: publish