ruotp 0.0.1

RFC-complaint one-time password algorithms written in Rust
Documentation
name: CI

on:
    push:
        branches:
            - master
        tags:
            - v*.*.*

    pull_request:
        branches:
            - master

concurrency:
    group: ${{ github.workflow }}-${{ github.ref }}
    cancel-in-progress: true

jobs:
    lint:
        name: Lint
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v4

            - name: Install rust toolchain
              uses: actions-rs/toolchain@v1
              with:
                  toolchain: stable
                  override: true
                  components: rustfmt, clippy

            - name: Cargo fmt
              run: cargo fmt -- --check

            - name: Clippy
              run: cargo clippy --all-features

            - name: Check semver
              uses: obi1kenobi/cargo-semver-checks-action@v2
    publish:
        name: Publish
        runs-on: ubuntu-latest
        if: ${{ github.event_name == 'push' && github.ref_type == 'tag' && startsWith(github.ref_name, 'v') }}
        needs:
            - lint
        steps:
            - uses: actions/checkout@v4

            - name: Install rust toolchain
              uses: actions-rs/toolchain@v1
              with:
                  toolchain: stable
                  override: true
                  components: rustfmt, clippy

            - name: Publish
              env:
                  CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN  }}
              run: cargo publish --all-features

            - name: Release drafter
              uses: release-drafter/release-drafter@v5
              env:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
              with:
                  publish: true
                  name: ${{ github.ref_name }}
                  tag: ${{ github.ref_name }}