hackrfone 0.4.0

Rust library for the HackRF One software defined radio.
Documentation
on:
  push:
    branches:
      - main
    tags:
      - "v*"
  pull_request:
  schedule:
    - cron: "17 3 * * 2"

name: CI

jobs:
  build:
    runs-on: ubuntu-latest
    env: { "RUSTFLAGS": "-D warnings" }
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo build
      - run: cargo build --features num-complex
      - run: cargo build --all-features

  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo test --all-features

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - run: cargo clippy --all-features -- --deny warnings

  format:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: rustfmt
      - run: cargo +nightly fmt -- --check

  doc:
    runs-on: ubuntu-latest
    env: { "RUSTDOCFLAGS": "-D warnings" }
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo doc --no-default-features
      - run: cargo doc --all-features

  rustdoc:
    runs-on: ubuntu-latest
    env: { "RUSTDOCFLAGS": "-D warnings --cfg docsrs" }
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@nightly
      - run: cargo +nightly rustdoc --all-features

  release:
    name: crates.io release
    if: startsWith(github.ref, 'refs/tags/v')
    needs: [build, test, clippy, format, doc, rustdoc]
    runs-on: ubuntu-latest
    environment: release
    permissions:
      id-token: write
    steps:
      - uses: actions/checkout@v6
      - uses: rust-lang/crates-io-auth-action@v1
        id: auth
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo publish --no-verify
        env:
          CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}