diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..897248d --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,85 @@ +name: CI + +on: + push: + branches: + - main + - main-v[0-9].** + tags: + - v[0-9].** + + pull_request: + types: + - opened + - reopened + - synchronize + - auto_merge_enabled + + merge_group: + types: + - checks_requested + +jobs: + format: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@master + with: + components: rustfmt + toolchain: nightly-2024-01-04 + - uses: Swatinem/rust-cache@v2 + - run: scripts/rust_fmt.sh --check + + clippy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: dtolnay/rust-toolchain@master + with: + components: clippy + toolchain: nightly-2024-01-04 + - uses: Swatinem/rust-cache@v2 + - run: scripts/clippy.sh + + run-tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@master + with: + profile: minimal + toolchain: nightly-2024-01-04 + - uses: Swatinem/rust-cache@v2 + - run: cargo +nightly-2024-01-04 test --release + + udeps: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@master + name: "Rust Toolchain Setup" + with: + toolchain: nightly-2024-01-04 + - uses: Swatinem/rust-cache@v2 + id: "cache-cargo" + - if: ${{ steps.cache-cargo.outputs.cache-hit != 'true' }} + name: "Download and run cargo-udeps" + run: | + wget -O - -c https://github.com/est31/cargo-udeps/releases/download/v0.1.35/cargo-udeps-v0.1.35-x86_64-unknown-linux-gnu.tar.gz | tar -xz + cargo-udeps-*/cargo-udeps udeps + env: + RUSTUP_TOOLCHAIN: nightly-2024-01- + + all-tests: + runs-on: ubuntu-latest + needs: + - clippy + - format + - run-tests + - udeps + steps: + - name: Decide whether all the needed jobs succeeded or failed + uses: re-actors/alls-green@v1.2.2 + with: + jobs: ${{ toJSON(needs) }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b33870a --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +*.egg-info +/data +/logs +build +dist +target +*/.vscode/* diff --git a/scripts/clippy.sh b/scripts/clippy.sh new file mode 100755 index 0000000..a17c7e7 --- /dev/null +++ b/scripts/clippy.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +cargo +nightly-2024-01-04 clippy "$@" --all-targets --all-features -- -D warnings -D future-incompatible \ + -D nonstandard-style -D rust-2018-idioms -D unused diff --git a/scripts/rust_fmt.sh b/scripts/rust_fmt.sh new file mode 100755 index 0000000..e4223f9 --- /dev/null +++ b/scripts/rust_fmt.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +cargo +nightly-2024-01-04 fmt --all -- "$@"