-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit d651af9
Showing
53 changed files
with
5,231 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,172 @@ | ||
on: [push, pull_request] | ||
|
||
name: CI | ||
|
||
env: | ||
CARGO_OUTDATED: 0.14.0 | ||
CARGO_AUDIT: 0.18.3 | ||
|
||
jobs: | ||
fmt: | ||
name: Format check | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
- name: Setup Rust toolchain | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
profile: minimal | ||
toolchain: stable | ||
override: true | ||
- name: Install rustfmt | ||
run: rustup component add rustfmt | ||
- name: Perform format check | ||
uses: actions-rs/cargo@v1 | ||
with: | ||
command: fmt | ||
args: --all -- --check | ||
|
||
lints: | ||
name: Lints | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
- name: Setup Rust toolchain | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
toolchain: stable | ||
components: clippy | ||
override: true | ||
- name: Cache cargo tools | ||
id: cargo-tools-cache | ||
uses: actions/cache@v3 | ||
with: | ||
path: cargo-tools | ||
key: lint-tools-${{ env.CARGO_OUTDATED }}-${{ env.CARGO_AUDIT }} | ||
- name: Cache dependencies | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
~/.cargo/.crates.toml | ||
~/.cargo/.crates2.json | ||
~/.cargo/bin | ||
~/.cargo/registry/index | ||
~/.cargo/registry/cache | ||
target | ||
key: lint-${{ runner.os }}-${{ hashFiles('Cargo.lock') }} | ||
- name: Install cargo tools if not cached | ||
if: steps.cargo-tools-cache.outputs.cache-hit != 'true' | ||
run: | | ||
cargo install cargo-outdated --version ${{ env.CARGO_OUTDATED }} --root cargo-tools --target-dir cargo-tools-build | ||
cargo install cargo-audit --version ${{ env.CARGO_AUDIT }} --root cargo-tools --target-dir cargo-tools-build | ||
- name: Clippy | ||
run: cargo clippy --no-deps -- -D warnings | ||
- name: Outdated dependencies | ||
# TODO: add support for githubActions format in cargo-outdated directly? | ||
shell: python | ||
run: | | ||
import json | ||
import subprocess | ||
import os | ||
env = os.environ.copy() | ||
env["PATH"] = os.getcwd() + "/cargo-tools/bin:" + env["PATH"] | ||
ps = subprocess.Popen(['cargo', 'outdated', '--format', 'json'], stdout=subprocess.PIPE, env=env) | ||
output = json.load(ps.stdout) | ||
outdated = output['dependencies'] | ||
for dep in outdated: | ||
msg = "{}: project: {}, compat: {}, latest: {}, kind: {}".format(dep['name'], dep['project'], dep['compat'], dep['latest'], dep['kind']) | ||
print("::warning title=Outdated dependency '{}'::{}".format(dep['name'], msg)) | ||
- name: Audit | ||
run: | | ||
PATH="$PATH:$PWD/cargo-tools/bin" cargo audit | ||
test-linux: | ||
name: Test on Linux | ||
needs: fmt | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
- name: Setup Rust toolchain | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
profile: minimal | ||
toolchain: stable | ||
override: true | ||
- name: Cache dependencies | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
~/.cargo/.crates.toml | ||
~/.cargo/.crates2.json | ||
~/.cargo/bin | ||
~/.cargo/registry/index | ||
~/.cargo/registry/cache | ||
target | ||
key: test-${{ runner.os }}-${{ hashFiles('Cargo.lock') }} | ||
- name: Test | ||
run: cargo test --locked -- --nocapture | ||
|
||
test-windows: | ||
name: Test on Windows | ||
needs: fmt | ||
runs-on: windows-latest | ||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
- name: Setup Rust toolchain | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
profile: minimal | ||
toolchain: stable | ||
override: true | ||
- name: Cache dependencies | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
~/.cargo/.crates.toml | ||
~/.cargo/.crates2.json | ||
~/.cargo/bin | ||
~/.cargo/registry/index | ||
~/.cargo/registry/cache | ||
target | ||
key: test-${{ runner.os }}-${{ hashFiles('Cargo.lock') }} | ||
- name: Test | ||
run: cargo test --locked -j 1 -- --nocapture # must test with one thread otherwise they attempt to overwrite each others exe | ||
|
||
msrv: | ||
name: MSRV check | ||
needs: fmt | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout sources | ||
uses: actions/checkout@v3 | ||
- name: Extract MSRV | ||
id: get-msrv | ||
run: echo msrv=$(yq .package.rust-version Cargo.toml -oy) | tee -a "$GITHUB_OUTPUT" | ||
- name: Setup Rust toolchain | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
profile: minimal | ||
toolchain: ${{ steps.get-msrv.outputs.msrv }} | ||
override: true | ||
- name: Cache dependencies | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
~/.cargo/.crates.toml | ||
~/.cargo/.crates2.json | ||
~/.cargo/bin | ||
~/.cargo/registry/index | ||
~/.cargo/registry/cache | ||
target | ||
key: msrv-${{ runner.os }}-${{ hashFiles('Cargo.lock') }} | ||
- name: Perform MSRV check | ||
uses: actions-rs/cargo@v1 | ||
with: | ||
command: check | ||
args: --locked |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
/target | ||
/target-doc | ||
/scratch |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"rust-analyzer.cargo.features": "smol", | ||
"rust-analyzer.showUnlinkedFileNotification": false | ||
} |
Oops, something went wrong.