name: Lint & Format (Rust) on: pull_request: jobs: lint-format: runs-on: alpine container: node:20-alpine steps: - name: Checkout uses: actions/checkout@v4 - name: Install tools run: | apk add --no-cache \ git \ cargo \ rust \ rustfmt \ rust-clippy - name: Format check continue-on-error: true run: | if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then find . -name "Cargo.toml" -print0 | while IFS= read -r -d '' manifest; do cargo fmt --manifest-path "$manifest" --check done elif [ -n "$(find . -name "*.rs" -print -quit)" ]; then echo "Rust files found but no Cargo.toml" exit 1 else echo "No Rust project found" fi - name: Clippy run: | if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then find . -name "Cargo.toml" -print0 | while IFS= read -r -d '' manifest; do cargo clippy --manifest-path "$manifest" -- -D warnings done elif [ -n "$(find . -name "*.rs" -print -quit)" ]; then echo "Rust files found but no Cargo.toml" exit 1 else echo "No Rust project found" fi