From 6145ad302338bcb0c20e14e6016ee8fc190405e9 Mon Sep 17 00:00:00 2001 From: Techassi Date: Mon, 29 Jun 2026 13:26:49 +0200 Subject: [PATCH] refactor: Use prek workspaces prek supports nested configs (called workspace mode) which enables us to use indivudal, crate specific config files. Those hooks are only triggered if there are changes in the subdirectoy. Currently, most of these configs are copy+pasted and we ideally want some kind of central config + input based on the prek project/workspace member to avoid this duplicated code. This was already raised as an issue upstream. --- .pre-commit-config.yaml | 121 ------------------ crates/containerdebug/.pre-commit-config.yaml | 23 ++++ crates/k8s-version/.pre-commit-config.yaml | 47 +++++++ .../stackable-certs/.pre-commit-config.yaml | 47 +++++++ .../.pre-commit-config.yaml | 47 +++++++ .../.pre-commit-config.yaml | 47 +++++++ .../stackable-shared/.pre-commit-config.yaml | 47 +++++++ .../.pre-commit-config.yaml | 47 +++++++ .../.pre-commit-config.yaml | 47 +++++++ .../.pre-commit-config.yaml | 47 +++++++ .../stackable-webhook/.pre-commit-config.yaml | 47 +++++++ 11 files changed, 446 insertions(+), 121 deletions(-) create mode 100644 crates/containerdebug/.pre-commit-config.yaml create mode 100644 crates/k8s-version/.pre-commit-config.yaml create mode 100644 crates/stackable-certs/.pre-commit-config.yaml create mode 100644 crates/stackable-operator-derive/.pre-commit-config.yaml create mode 100644 crates/stackable-operator/.pre-commit-config.yaml create mode 100644 crates/stackable-shared/.pre-commit-config.yaml create mode 100644 crates/stackable-telemetry/.pre-commit-config.yaml create mode 100644 crates/stackable-versioned-macros/.pre-commit-config.yaml create mode 100644 crates/stackable-versioned/.pre-commit-config.yaml create mode 100644 crates/stackable-webhook/.pre-commit-config.yaml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7c79212aa..f35c6f3ad 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -47,127 +47,6 @@ repos: stages: [pre-commit, pre-merge-commit, manual] pass_filenames: false - - id: cargo-doc - name: cargo-doc - language: system - entry: cargo doc --no-deps --document-private-items - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - - id: cargo-doc-no-default-features - name: cargo-doc-no-default-features - language: system - entry: cargo doc --no-deps --no-default-features --document-private-items - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - - id: cargo-doc-all-features - name: cargo-doc-all-features - language: system - entry: cargo doc --no-deps --all-features --document-private-items - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - # As long as we run tests for every contained crate (to test turning off all features), - # we don't need to re-run them here - # - id: cargo-test - # name: cargo-test - # language: system - # entry: cargo test --workspace - # stages: [pre-commit, pre-merge-commit] - # pass_filenames: false - # files: \.rs$|Cargo\.(toml|lock) - # - id: cargo-test-no-default-features - # name: cargo-test-no-default-features - # language: system - # entry: cargo test --no-default-features --workspace - # stages: [pre-commit, pre-merge-commit] - # pass_filenames: false - # files: \.rs$|Cargo\.(toml|lock) - - - id: cargo-test-all-features - name: cargo-test-all-features - language: system - entry: cargo test --all-features --workspace - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - - id: cargo-test-k8s-version-no-default-features - name: cargo-test-k8s-version-no-default-features - language: system - entry: cargo test --no-default-features --package k8s-version - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - - id: cargo-test-stackable-certs-no-default-features - name: cargo-test-stackable-certs-no-default-features - language: system - entry: cargo test --no-default-features --package stackable-certs - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - - id: cargo-test-stackable-operator-no-default-features - name: cargo-test-stackable-operator-no-default-features - language: system - entry: cargo test --no-default-features --package stackable-operator - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - - id: cargo-test-stackable-operator-derive-no-default-features - name: cargo-test-stackable-operator-derive-no-default-features - language: system - entry: cargo test --no-default-features --package stackable-operator-derive - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - - id: cargo-test-stackable-shared-no-default-features - name: cargo-test-stackable-shared-no-default-features - language: system - entry: cargo test --no-default-features --package stackable-shared - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - - id: cargo-test-stackable-telemetry-no-default-features - name: cargo-test-stackable-telemetry-no-default-features - language: system - entry: cargo test --no-default-features --package stackable-telemetry - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - - id: cargo-test-stackable-versioned-no-default-features - name: cargo-test-stackable-versioned-no-default-features - language: system - entry: cargo test --no-default-features --package stackable-versioned - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - - id: cargo-test-stackable-versioned-macros-no-default-features - name: cargo-test-stackable-versioned-macros-no-default-features - language: system - entry: cargo test --no-default-features --package stackable-versioned-macros - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - - id: cargo-test-stackable-webhook-no-default-features - name: cargo-test-stackable-webhook-no-default-features - language: system - entry: cargo test --no-default-features --package stackable-webhook - stages: [pre-commit, pre-merge-commit] - pass_filenames: false - files: \.rs$|Cargo\.(toml|lock) - - id: cargo-rustfmt name: cargo-rustfmt language: system diff --git a/crates/containerdebug/.pre-commit-config.yaml b/crates/containerdebug/.pre-commit-config.yaml new file mode 100644 index 000000000..277613e0c --- /dev/null +++ b/crates/containerdebug/.pre-commit-config.yaml @@ -0,0 +1,23 @@ +# We ideally want something like: https://github.com/j178/prek/issues/1869 +--- +default_language_version: + node: system + +repos: + - repo: local + hooks: + - id: cargo-test-no-default-features + name: cargo-test-no-default-features + language: system + entry: cargo test --no-default-features --package containerdebug + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml + + - id: cargo-test-all-features + name: cargo-test-no-default-features + language: system + entry: cargo test --all-features --package containerdebug + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml diff --git a/crates/k8s-version/.pre-commit-config.yaml b/crates/k8s-version/.pre-commit-config.yaml new file mode 100644 index 000000000..da8f2d785 --- /dev/null +++ b/crates/k8s-version/.pre-commit-config.yaml @@ -0,0 +1,47 @@ +# We ideally want something like: https://github.com/j178/prek/issues/1869 +--- +default_language_version: + node: system + +repos: + - repo: local + hooks: + - id: cargo-doc + name: cargo-doc + language: system + entry: cargo doc --no-deps --document-private-items --package k8s-version + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-no-default-features + name: cargo-doc-no-default-features + language: system + entry: cargo doc --no-deps --no-default-features --document-private-items --package k8s-version + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-all-features + name: cargo-doc-all-features + language: system + entry: cargo doc --no-deps --all-features --document-private-items --package k8s-version + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-test-no-default-features + name: cargo-test-no-default-features + language: system + entry: cargo test --no-default-features --package k8s-version + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml + + - id: cargo-test-all-features + name: cargo-test-no-default-features + language: system + entry: cargo test --all-features --package k8s-version + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml diff --git a/crates/stackable-certs/.pre-commit-config.yaml b/crates/stackable-certs/.pre-commit-config.yaml new file mode 100644 index 000000000..8b2cee7e7 --- /dev/null +++ b/crates/stackable-certs/.pre-commit-config.yaml @@ -0,0 +1,47 @@ +# We ideally want something like: https://github.com/j178/prek/issues/1869 +--- +default_language_version: + node: system + +repos: + - repo: local + hooks: + - id: cargo-doc + name: cargo-doc + language: system + entry: cargo doc --no-deps --document-private-items --package stackable-certs + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-no-default-features + name: cargo-doc-no-default-features + language: system + entry: cargo doc --no-deps --no-default-features --document-private-items --package stackable-certs + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-all-features + name: cargo-doc-all-features + language: system + entry: cargo doc --no-deps --all-features --document-private-items --package stackable-certs + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-test-no-default-features + name: cargo-test-no-default-features + language: system + entry: cargo test --no-default-features --package stackable-certs + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml + + - id: cargo-test-all-features + name: cargo-test-no-default-features + language: system + entry: cargo test --all-features --package stackable-certs + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml diff --git a/crates/stackable-operator-derive/.pre-commit-config.yaml b/crates/stackable-operator-derive/.pre-commit-config.yaml new file mode 100644 index 000000000..62daaf59d --- /dev/null +++ b/crates/stackable-operator-derive/.pre-commit-config.yaml @@ -0,0 +1,47 @@ +# We ideally want something like: https://github.com/j178/prek/issues/1869 +--- +default_language_version: + node: system + +repos: + - repo: local + hooks: + - id: cargo-doc + name: cargo-doc + language: system + entry: cargo doc --no-deps --document-private-items --package stackable-operator-derive + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-no-default-features + name: cargo-doc-no-default-features + language: system + entry: cargo doc --no-deps --no-default-features --document-private-items --package stackable-operator-derive + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-all-features + name: cargo-doc-all-features + language: system + entry: cargo doc --no-deps --all-features --document-private-items --package stackable-operator-derive + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-test-no-default-features + name: cargo-test-no-default-features + language: system + entry: cargo test --no-default-features --package stackable-operator-derive + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml + + - id: cargo-test-all-features + name: cargo-test-no-default-features + language: system + entry: cargo test --all-features --package stackable-operator-derive + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml diff --git a/crates/stackable-operator/.pre-commit-config.yaml b/crates/stackable-operator/.pre-commit-config.yaml new file mode 100644 index 000000000..f434f7c27 --- /dev/null +++ b/crates/stackable-operator/.pre-commit-config.yaml @@ -0,0 +1,47 @@ +# We ideally want something like: https://github.com/j178/prek/issues/1869 +--- +default_language_version: + node: system + +repos: + - repo: local + hooks: + - id: cargo-doc + name: cargo-doc + language: system + entry: cargo doc --no-deps --document-private-items --package stackable-operator + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-no-default-features + name: cargo-doc-no-default-features + language: system + entry: cargo doc --no-deps --no-default-features --document-private-items --package stackable-operator + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-all-features + name: cargo-doc-all-features + language: system + entry: cargo doc --no-deps --all-features --document-private-items --package stackable-operator + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-test-no-default-features + name: cargo-test-no-default-features + language: system + entry: cargo test --no-default-features --package stackable-operator + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml + + - id: cargo-test-all-features + name: cargo-test-no-default-features + language: system + entry: cargo test --all-features --package stackable-operator + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml diff --git a/crates/stackable-shared/.pre-commit-config.yaml b/crates/stackable-shared/.pre-commit-config.yaml new file mode 100644 index 000000000..3b535536c --- /dev/null +++ b/crates/stackable-shared/.pre-commit-config.yaml @@ -0,0 +1,47 @@ +# We ideally want something like: https://github.com/j178/prek/issues/1869 +--- +default_language_version: + node: system + +repos: + - repo: local + hooks: + - id: cargo-doc + name: cargo-doc + language: system + entry: cargo doc --no-deps --document-private-items --package stackable-shared + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-no-default-features + name: cargo-doc-no-default-features + language: system + entry: cargo doc --no-deps --no-default-features --document-private-items --package stackable-shared + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-all-features + name: cargo-doc-all-features + language: system + entry: cargo doc --no-deps --all-features --document-private-items --package stackable-shared + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-test-no-default-features + name: cargo-test-no-default-features + language: system + entry: cargo test --no-default-features --package stackable-shared + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml + + - id: cargo-test-all-features + name: cargo-test-no-default-features + language: system + entry: cargo test --all-features --package stackable-shared + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml diff --git a/crates/stackable-telemetry/.pre-commit-config.yaml b/crates/stackable-telemetry/.pre-commit-config.yaml new file mode 100644 index 000000000..e4752e1e0 --- /dev/null +++ b/crates/stackable-telemetry/.pre-commit-config.yaml @@ -0,0 +1,47 @@ +# We ideally want something like: https://github.com/j178/prek/issues/1869 +--- +default_language_version: + node: system + +repos: + - repo: local + hooks: + - id: cargo-doc + name: cargo-doc + language: system + entry: cargo doc --no-deps --document-private-items --package stackable-telemetry + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-no-default-features + name: cargo-doc-no-default-features + language: system + entry: cargo doc --no-deps --no-default-features --document-private-items --package stackable-telemetry + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-all-features + name: cargo-doc-all-features + language: system + entry: cargo doc --no-deps --all-features --document-private-items --package stackable-telemetry + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-test-no-default-features + name: cargo-test-no-default-features + language: system + entry: cargo test --no-default-features --package stackable-telemetry + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml + + - id: cargo-test-all-features + name: cargo-test-no-default-features + language: system + entry: cargo test --all-features --package stackable-telemetry + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml diff --git a/crates/stackable-versioned-macros/.pre-commit-config.yaml b/crates/stackable-versioned-macros/.pre-commit-config.yaml new file mode 100644 index 000000000..0312f9149 --- /dev/null +++ b/crates/stackable-versioned-macros/.pre-commit-config.yaml @@ -0,0 +1,47 @@ +# We ideally want something like: https://github.com/j178/prek/issues/1869 +--- +default_language_version: + node: system + +repos: + - repo: local + hooks: + - id: cargo-doc + name: cargo-doc + language: system + entry: cargo doc --no-deps --document-private-items --package stackable-versioned-macros + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-no-default-features + name: cargo-doc-no-default-features + language: system + entry: cargo doc --no-deps --no-default-features --document-private-items --package stackable-versioned-macros + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-all-features + name: cargo-doc-all-features + language: system + entry: cargo doc --no-deps --all-features --document-private-items --package stackable-versioned-macros + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-test-no-default-features + name: cargo-test-no-default-features + language: system + entry: cargo test --no-default-features --package stackable-versioned-macros + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml + + - id: cargo-test-all-features + name: cargo-test-no-default-features + language: system + entry: cargo test --all-features --package stackable-versioned-macros + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml diff --git a/crates/stackable-versioned/.pre-commit-config.yaml b/crates/stackable-versioned/.pre-commit-config.yaml new file mode 100644 index 000000000..15062b9e6 --- /dev/null +++ b/crates/stackable-versioned/.pre-commit-config.yaml @@ -0,0 +1,47 @@ +# We ideally want something like: https://github.com/j178/prek/issues/1869 +--- +default_language_version: + node: system + +repos: + - repo: local + hooks: + - id: cargo-doc + name: cargo-doc + language: system + entry: cargo doc --no-deps --document-private-items --package stackable-versioned + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-no-default-features + name: cargo-doc-no-default-features + language: system + entry: cargo doc --no-deps --no-default-features --document-private-items --package stackable-versioned + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-all-features + name: cargo-doc-all-features + language: system + entry: cargo doc --no-deps --all-features --document-private-items --package stackable-versioned + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-test-no-default-features + name: cargo-test-no-default-features + language: system + entry: cargo test --no-default-features --package stackable-versioned + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml + + - id: cargo-test-all-features + name: cargo-test-no-default-features + language: system + entry: cargo test --all-features --package stackable-versioned + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml diff --git a/crates/stackable-webhook/.pre-commit-config.yaml b/crates/stackable-webhook/.pre-commit-config.yaml new file mode 100644 index 000000000..43067dc27 --- /dev/null +++ b/crates/stackable-webhook/.pre-commit-config.yaml @@ -0,0 +1,47 @@ +# We ideally want something like: https://github.com/j178/prek/issues/1869 +--- +default_language_version: + node: system + +repos: + - repo: local + hooks: + - id: cargo-doc + name: cargo-doc + language: system + entry: cargo doc --no-deps --document-private-items --package stackable-webhook + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-no-default-features + name: cargo-doc-no-default-features + language: system + entry: cargo doc --no-deps --no-default-features --document-private-items --package stackable-webhook + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-doc-all-features + name: cargo-doc-all-features + language: system + entry: cargo doc --no-deps --all-features --document-private-items --package stackable-webhook + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: \.rs$|Cargo\.(toml|lock) + + - id: cargo-test-no-default-features + name: cargo-test-no-default-features + language: system + entry: cargo test --no-default-features --package stackable-webhook + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml + + - id: cargo-test-all-features + name: cargo-test-no-default-features + language: system + entry: cargo test --all-features --package stackable-webhook + stages: [pre-commit, pre-merge-commit] + pass_filenames: false + files: .*\.rs$|Cargo\.toml