From 5a4191bb60f4171c540cd6b2aa49531cd53bc709 Mon Sep 17 00:00:00 2001 From: Melfely Date: Tue, 8 Sep 2026 16:43:50 -0500 Subject: [PATCH] feat: Added lint.yml which tests for linting and build on multiple platforms --- .gitea/workflows/lint.yml | 109 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 .gitea/workflows/lint.yml diff --git a/.gitea/workflows/lint.yml b/.gitea/workflows/lint.yml new file mode 100644 index 0000000..fa1fd55 --- /dev/null +++ b/.gitea/workflows/lint.yml @@ -0,0 +1,109 @@ +name: Crossplatform Linting && Build + +on: + push: + branches: [ main, master ] + pull_request: + +jobs: + lint: + name: Linting + runs-on: ubuntu-latest + + steps: + - name: Checkout Project + uses: actions/checkout@v5 + + - name: Setup Rust + uses: dtolnay/rust-toolchain@1.90.0 + with: + targets: x86-64-pc-windows-gnu aarch64-apple-darwin aarch64-unknown-linux-gnu x86_64-unknown-linux-musl aarch64-unknown-linux-musl + + - name: Install cargo sort + uses: taiki-e/cache-cargo-install-action@caa6f48d18d42462f9c30df89e2b4f71a42b7c2c # v2.0.1 + with: + tool: cargo-sort@1.0.9 + + - name: Install cargo machete + uses: taiki-e/cache-cargo-install-action@caa6f48d18d42462f9c30df89e2b4f71a42b7c2c # v2.0.1 + with: + tool: cargo-machete@0.7.0 + + - name: Cache cargo dependencies + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ runner.os }}-cargo-lint-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + ${{ runner.os }}-cargo-lint- + + - name: Check formatting + run: cargo fmt --check + + - name: Check import sorting + run: cargo sort --grouped --check --check-format + + - name: Check for unused dependencies + run: cargo machete + + - name: Clippy for Linux x86 (GNU and MUSL) + run: cargo clippy --target x86-64-unknown-linux-gnu -- -D warnings + run: cargo clippy --target x86-64-unknown-linux-musl -- -D warnings + + - name: Clippy for Linux aarch64 (GNU and MUSL) + run: cargo clippy --target aarch-64-unknown-linux-gnu -- -D warnings + run: cargo clippy --target aarch-64-unknown-linux-musl -- -D warnings + + - name: Clippy for x86 Windows + run: cargo clippy --target x86-64-pc-windows-gnu -- -D warnings + + - name: Clippy for MacOS aarch64 + run: cargo clippy --target aarch64-apple-darwin -- -D warnings + + build: + name: Build + runs-on: ubuntu-latest + requires: lint + + steps: + - name: Checkout Project + uses: actions/checkout@v5 + + - name: Setup Rust + uses: dtolnay/rust-toolchain@1.90.0 + with: + targets: x86-64-pc-windows-gnu aarch64-apple-darwin aarch64-unknown-linux-gnu x86_64-unknown-linux-musl aarch64-unknown-linux-musl + + - name: Cache cargo dependencies + uses: actions/cache@v4 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ${{ runner.os }}-cargo-lint-${{ hashFiles('**/Cargo.lock') }} + restore-keys: | + ${{ runner.os }}-cargo-lint- + + - name: Build for Linux x86 (GNU and MUSL) + run: cargo build --target x86-64-unknown-linux-gnu --locked + run: cargo build --target x86-64-unknown-linux-musl --locked + + - name: Build for Linux aarch64 (GNU and MUSL) + run: cargo build --target aarch-64-unknown-linux-gnu --locked + run: cargo build --target aarch-64-unknown-linux-musl --locked + + - name: Build for x86 Windows + run: cargo build --target x86-64-pc-windows-gnu --locked + + - name: Build for MacOS aarch64 + run: cargo build --target aarch64-apple-darwin --locked + +