| name: Rust |
| |
| on: [push, pull_request] |
| |
| jobs: |
| |
| codestyle: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Setup Rust Toolchain |
| uses: ./.github/actions/setup-builder |
| with: |
| # Note that `nightly` is required for `license_template_path`, as |
| # it's an unstable feature. |
| rust-version: nightly |
| - run: cargo +nightly fmt -- --check --config-path <(echo 'license_template_path = "HEADER"') |
| |
| lint: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Setup Rust Toolchain |
| uses: ./.github/actions/setup-builder |
| - run: cargo clippy --all-targets --all-features -- -D warnings |
| |
| compile: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Setup Rust Toolchain |
| uses: ./.github/actions/setup-builder |
| - run: cargo check --all-targets --all-features |
| |
| docs: |
| runs-on: ubuntu-latest |
| env: |
| RUSTDOCFLAGS: "-Dwarnings" |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Setup Rust Toolchain |
| uses: ./.github/actions/setup-builder |
| - run: cargo doc --document-private-items --no-deps --workspace --all-features |
| |
| compile-no-std: |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Setup Rust Toolchain |
| uses: ./.github/actions/setup-builder |
| with: |
| targets: 'thumbv6m-none-eabi' |
| - run: cargo check --no-default-features --target thumbv6m-none-eabi |
| |
| test: |
| strategy: |
| matrix: |
| rust: [stable, beta, nightly] |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| - name: Setup Rust Toolchain |
| uses: ./.github/actions/setup-builder |
| with: |
| rust-version: ${{ matrix.rust }} |
| - name: Install Tarpaulin |
| uses: actions-rs/install@v0.1 |
| with: |
| crate: cargo-tarpaulin |
| version: 0.14.2 |
| use-tool-cache: true |
| - name: Test |
| run: cargo test --all-features |
| |
| test-coverage: |
| runs-on: ubuntu-latest |
| steps: |
| - name: Checkout |
| uses: actions/checkout@v4 |
| - name: Setup Rust Toolchain |
| uses: ./.github/actions/setup-builder |
| with: |
| rust-version: stable |
| - name: Install Tarpaulin |
| uses: actions-rs/install@v0.1 |
| with: |
| crate: cargo-tarpaulin |
| version: 0.14.2 |
| use-tool-cache: true |
| - name: Coverage |
| run: cargo tarpaulin -o Lcov --output-dir ./coverage |
| - name: Coveralls |
| uses: coverallsapp/github-action@master |
| with: |
| github-token: ${{ secrets.GITHUB_TOKEN }} |
| |
| publish-crate: |
| if: startsWith(github.ref, 'refs/tags/v0') |
| runs-on: ubuntu-latest |
| needs: [test] |
| steps: |
| - uses: actions/checkout@v4 |
| - name: Setup Rust Toolchain |
| uses: ./.github/actions/setup-builder |
| - name: Publish |
| shell: bash |
| run: | |
| cargo publish --token ${{ secrets.CRATES_TOKEN }} |