diff --git a/.gitea/workflows/cpp.yml b/.gitea/workflows/cpp.yml index 90eb487..b1158ab 100644 --- a/.gitea/workflows/cpp.yml +++ b/.gitea/workflows/cpp.yml @@ -20,28 +20,10 @@ jobs: -exec clang-format -i --style=file {} + git diff --exit-code && echo "clang-format: passed" - build: + build & lint: runs-on: alpine container: image: git.aramjonghu.dev/aramjonghu/zshell-ci:latest - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Configure - run: cmake -B build -G Ninja -DENABLE_MODULES=plugin -DCMAKE_BUILD_TYPE=Release - - - name: Build - run: ninja -C build - - clang-tidy: - runs-on: alpine - container: - image: git.aramjonghu.dev/aramjonghu/zshell-ci:latest - steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.gitea/workflows/js-ts.yml b/.gitea/workflows/js-ts.yml index 639adaf..ce8672f 100644 --- a/.gitea/workflows/js-ts.yml +++ b/.gitea/workflows/js-ts.yml @@ -4,7 +4,7 @@ on: pull_request: jobs: - fmt: + fmt & lint: runs-on: alpine container: node:26-alpine @@ -24,20 +24,6 @@ jobs: else echo "No JS/TS files found" fi - - lint: - runs-on: alpine - container: node:26-alpine - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Install tools - run: | - apk add --no-cache \ - git - - name: ESLint run: | if [ -n "$(find . \( -iname "*.js" -o -iname "*.jsx" -o -iname "*.ts" -o -iname "*.tsx" -o -iname "*.mjs" -o -iname "*.cjs" \) -print -quit)" ]; then diff --git a/.gitea/workflows/python.yml b/.gitea/workflows/python.yml index 06377a8..ac44cd9 100644 --- a/.gitea/workflows/python.yml +++ b/.gitea/workflows/python.yml @@ -7,7 +7,7 @@ on: pull_request: jobs: - static: + fmt & lint: runs-on: debian container: node:26-trixie-slim @@ -33,7 +33,7 @@ jobs: . .venv/bin/activate ruff check . - verify: + test & nuitka build: if: always() runs-on: debian container: node:26-trixie-slim @@ -64,4 +64,4 @@ jobs: - name: Nuitka module check run: | . .venv/bin/activate - nuitka --module --include-package=zshell cli/src/zshell/ \ No newline at end of file + nuitka --module --include-package=zshell cli/src/zshell/ diff --git a/.gitea/workflows/rust.yml b/.gitea/workflows/rust.yml index da2d4bf..a1e9e38 100644 --- a/.gitea/workflows/rust.yml +++ b/.gitea/workflows/rust.yml @@ -3,8 +3,9 @@ name: Rust on: pull_request: +# jobs can be separated if we integrate tests jobs: - build: + build, clippy & fmt: runs-on: alpine container: node:26-alpine env: @@ -34,7 +35,9 @@ jobs: apk add --no-cache \ git \ cargo \ - rust + rust \ + rust-clippy \ + rustfmt - name: Cargo check run: | @@ -50,90 +53,6 @@ jobs: else echo "No Rust project found" fi - - fmt: - runs-on: alpine - container: node:26-alpine - env: - CARGO_HOME: ${{ github.workspace }}/.cargo - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Cache cargo packages - uses: actions/cache@v4 - env: - cache-name: cache-cargo-packages - with: - path: | - .cargo/registry - .cargo/git - target - key: rust-fmt-${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - rust-${{ runner.os }}-build-${{ env.cache-name }}- - rust-${{ runner.os }}-build- - rust- - - - name: Install tools - run: | - apk add --no-cache \ - git \ - cargo \ - rust \ - rustfmt - - - name: Format check - run: | - if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then - status=0 - for manifest in $(find . -name "Cargo.toml"); do - cargo fmt --manifest-path "$manifest" --check && \ - echo "$manifest: formatting OK" || \ - { echo "$manifest: needs formatting"; status=1; } - 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" - fi - - clippy: - runs-on: alpine - container: node:26-alpine - env: - CARGO_HOME: ${{ github.workspace }}/.cargo - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Cache cargo packages - uses: actions/cache@v4 - env: - cache-name: cache-cargo-packages - with: - path: | - .cargo/registry - .cargo/git - target - key: rust-clippy-${{ runner.os }}-${{ env.cache-name }}-${{ hashFiles('**/Cargo.lock') }} - restore-keys: | - rust-${{ runner.os }}-build-${{ env.cache-name }}- - rust-${{ runner.os }}-build- - rust- - - - name: Install tools - run: | - apk add --no-cache \ - git \ - cargo \ - rust \ - rust-clippy - - name: Clippy run: | if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then @@ -150,3 +69,19 @@ jobs: else echo "No Rust project found" fi + - name: Format check + run: | + if [ -n "$(find . -name "Cargo.toml" -print -quit)" ]; then + status=0 + for manifest in $(find . -name "Cargo.toml"); do + cargo fmt --manifest-path "$manifest" --check && \ + echo "$manifest: formatting OK" || \ + { echo "$manifest: needs formatting"; status=1; } + 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" + fi