diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..079b914 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,50 @@ +name: Rust + +on: + push: + branches: [ main ] + pull_request: + +permissions: + id-token: write + contents: read + checks: write + pull-requests: write + +env: + CARGO_INCREMENTAL: 0 + +jobs: + rust: + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v4.1.0 + with: + submodules: recursive + + - name: Get Rust toolchain + id: toolchain + run: | + awk -F'[ ="]+' '$1 == "channel" { print "toolchain=" $2 }' rust-toolchain >> "$GITHUB_OUTPUT" + + - uses: dtolnay/rust-toolchain@v1 + with: + toolchain: ${{ steps.toolchain.outputs.toolchain }} + components: clippy, rustfmt + + - name: cache dependencies + uses: Swatinem/rust-cache@v2.7.0 + + - name: reviewdog / clippy + uses: sksat/action-clippy@v0.4.0 + with: + reporter: github-pr-review + + - name: format + run: | + cargo fmt --all -- --check + + - name: unit test + run: | + cargo test