fix(ci): format properly checks written code only + minor optimisations
C++ / fmt (pull_request) Successful in 5s
JS/TS / fmt & lint (pull_request) Successful in 16s
Python / fmt & lint (pull_request) Successful in 34s
C++ / build & lint (pull_request) Failing after 2m18s
Python / test & nuitka build (pull_request) Failing after 1m35s
Rust / clippy & fmt (pull_request) Successful in 42s

This commit is contained in:
2026-11-02 01:23:05 +01:00
parent 9d6cd909a5
commit dd64d6947d
+44 -29
View File
@@ -11,6 +11,16 @@ jobs:
CARGO_HOME: ${{ github.workspace }}/.cargo CARGO_HOME: ${{ github.workspace }}/.cargo
steps: steps:
- name: Install node for actions
run: |
apk add --no-cache nodejs git
- name: Install rust components
run: |
rustup component add clippy rustfmt
cargo clippy --version
rustfmt --version
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
@@ -25,41 +35,46 @@ jobs:
restore-keys: | restore-keys: |
rust-${{ runner.os }}-cargo- rust-${{ runner.os }}-cargo-
- name: Install tools
run: |
apk add --no-cache git
rustup component add clippy rustfmt
- name: Clippy (with compile check) - name: Clippy (with compile check)
run: | run: |
if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then manifests=$(find . \( -name .cargo -o -name .git -o -name target \) -prune -o -name Cargo.toml -print)
status=0 if [ -z "$manifests" ]; then
for manifest in $(find . -name "Cargo.toml"); do if [ -n "$(find . \( -name .cargo -o -name target \) -prune -o -name '*.rs' -print -quit)" ]; then
cargo clippy --manifest-path "$manifest" -- -D warnings && \ echo "Rust files found but no Cargo.toml"
echo "$manifest: Clippy passed" || \ exit 1
{ echo "$manifest: Clippy failed"; status=1; } fi
done
exit $status
elif [ -n "$(find . -name "*.rs" -print -quit)" ]; then
echo "Rust files found but no Cargo.toml"
exit 1
else
echo "No Rust project found" echo "No Rust project found"
exit 0
fi fi
status=0
for manifest in $manifests; do
if (cd "$(dirname "$manifest")" && cargo clippy --all-targets --locked -- -D warnings); then
echo "$manifest: Clippy passed"
else
echo "$manifest: Clippy failed"
status=1
fi
done
exit $status
- name: Format check - name: Format check
run: | run: |
if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then manifests=$(find . \( -name .cargo -o -name .git -o -name target \) -prune -o -name Cargo.toml -print)
status=0 if [ -z "$manifests" ]; then
for manifest in $(find . -name "Cargo.toml"); do if [ -n "$(find . \( -name .cargo -o -name target \) -prune -o -name '*.rs' -print -quit)" ]; then
cargo fmt --manifest-path "$manifest" --check && \ echo "Rust files found but no Cargo.toml"
echo "$manifest: formatting OK" || \ exit 1
{ echo "$manifest: needs formatting"; status=1; } fi
done
exit $status
elif [ -n "$(find . -name "*.rs" -print -quit)" ]; then
echo "Rust files found but no Cargo.toml"
exit 1
else
echo "No Rust project found" echo "No Rust project found"
exit 0
fi fi
status=0
for manifest in $manifests; do
if (cd "$(dirname "$manifest")" && cargo fmt --check); then
echo "$manifest: formatting OK"
else
echo "$manifest: needs formatting"
status=1
fi
done
exit $status