name: Rust on: [push, pull_request] jobs: codestyle: runs-on: ubuntu-latest steps: - name: Set up Rust uses: hecrj/setup-rust-action@v1 with: components: rustfmt # Note that `nightly` is required for `license_template_path`, as # it's an unstable feature. rust-version: nightly - uses: actions/checkout@v2 - run: cargo +nightly fmt -- --check --config-path <(echo 'license_template_path = "HEADER"') lint: runs-on: ubuntu-latest steps: - name: Set up Rust uses: hecrj/setup-rust-action@v1 with: components: clippy - uses: actions/checkout@v2 - run: cargo clippy --all-targets --all-features -- -D warnings compile: runs-on: ubuntu-latest steps: - name: Set up Rust uses: hecrj/setup-rust-action@v1 - uses: actions/checkout@master - run: cargo check --all-targets --all-features docs: runs-on: ubuntu-latest env: RUSTDOCFLAGS: "-Dwarnings" steps: - name: Set up Rust uses: hecrj/setup-rust-action@v1 - uses: actions/checkout@master - run: cargo doc --document-private-items --no-deps --workspace --all-features compile-no-std: runs-on: ubuntu-latest steps: - name: Set up Rust uses: hecrj/setup-rust-action@v1 with: targets: 'thumbv6m-none-eabi' - uses: actions/checkout@master - run: cargo check --no-default-features --target thumbv6m-none-eabi test: strategy: matrix: rust: [stable, beta, nightly] runs-on: ubuntu-latest steps: - name: Setup Rust uses: hecrj/setup-rust-action@v1 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: Checkout uses: actions/checkout@v2 - name: Test run: cargo test --all-features test-coverage: runs-on: ubuntu-latest steps: - name: Setup Rust uses: hecrj/setup-rust-action@v1 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: Checkout uses: actions/checkout@v2 - 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: - name: Set up Rust uses: hecrj/setup-rust-action@v1 - uses: actions/checkout@v2 - name: Publish shell: bash run: | cargo publish --token ${{ secrets.CRATES_TOKEN }}