name: Rust on: push: branches: - main tags: - "*" pull_request: workflow_dispatch: permissions: contents: read jobs: checks: name: Rust checks runs-on: ubuntu-latest steps: - uses: dtolnay/rust-toolchain@stable with: components: clippy, rustfmt - uses: davidB/rust-cargo-make@v1 - uses: actions/checkout@v6 - name: Run format run: cargo make format - name: Run check run: cargo make check - name: Run check doc run: cargo make check-doc - name: Run clippy run: cargo make clippy - name: Run test run: cargo make test checks_min_ver: name: Rust checks on the minimum supported version runs-on: ubuntu-latest steps: - uses: dtolnay/rust-toolchain@stable with: toolchain: 1.88.0 - uses: davidB/rust-cargo-make@v1 - uses: actions/checkout@v6 - name: Run check on the minimum supported version run: cargo +1.88.0 make check publish: name: Publish runs-on: ubuntu-latest if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} needs: [checks, checks_min_ver] steps: - uses: actions/checkout@v6 with: ref: main - uses: dtolnay/rust-toolchain@stable - name: Run cargo login run: cargo login ${CRATES_IO_TOKEN} env: CRATES_IO_TOKEN: ${{ secrets.CRATES_IO_TOKEN }} - name: Run build run: cargo build --package tapo --release --verbose - name: Run cargo publish if: ${{ startsWith(github.ref, 'refs/tags/v') }} run: cargo publish --package tapo