From 3b4a210245960a2112cc26aa6e8bde9be0c0b034 Mon Sep 17 00:00:00 2001 From: Maxi Wittich Date: Thu, 10 Sep 2026 14:02:07 +0200 Subject: [PATCH 1/2] Adding typos.toml and endable typos in ci --- .pre-commit-config.yaml | 9 ++++++ typos.toml | 67 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 typos.toml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ab3b2403c..8e3561665 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,6 +6,15 @@ default_language_version: node: system repos: + - repo: https://github.com/crate-ci/typos + rev: v1.50.1 + hooks: + - id: typos + # Drop the upstream default `--write-changes` so the hook reports and + # fails instead of rewriting files. Keep `--force-exclude` so the + # excludes in typos.toml still apply to the paths prek passes in. + args: ["--force-exclude"] + - repo: https://github.com/pre-commit/pre-commit-hooks rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # 6.0.0 hooks: diff --git a/typos.toml b/typos.toml new file mode 100644 index 000000000..050024fa1 --- /dev/null +++ b/typos.toml @@ -0,0 +1,67 @@ +# Configuration for typos (https://github.com/crate-ci/typos), run via the prek +# hook in .pre-commit-config.yaml. +# +# The core of this file is the shared block documented in +# stackabletech/operator-templating's README ("Spell checking"). Entries from +# that block which have no counterpart here -- Cargo.nix, generated CRDs, +# draw.io diagrams -- are left out rather than carried as dead config. +# +# typos has no layered configuration +# (https://github.com/crate-ci/typos/issues/193), so this file is the only one +# that applies to this repository. +# +# Before adding an entry here, consider an in-place marker instead. Use one when +# the word is correct at this one site and would still be a typo elsewhere: +# +# # spellchecker:disable-line at the end of the line it applies to +# # spellchecker:ignore-next-line on its own line, above the offending line +# # spellchecker:off / :on around a block +# +# Every entry below gets a one-line comment saying what the word is. + +[files] +# Bare `typos` skips hidden directories, but prek passes explicit paths and so +# does check them. Turn it off so a local run and the hook agree. +ignore-hidden = false + +extend-exclude = [ + # Required once ignore-hidden is off, or typos walks .git/objects. + ".git/", + # Upstream patches. The text belongs to the upstream project, and editing a + # patch breaks the context lines it applies against. Their filenames carry + # truncated commit subjects ("...-a-new-patch-updat.patch"), which trip the + # filename check as well. + "*.patch", + # Verbatim third-party licence texts, in 24 product directories. Excluded on + # purpose: these are not ours to correct. + "**/licenses/**", + # Base64-encoded CA certificates. + "stackable-base/stackable/ca-cert-blocklist/**", + # pip constraint files taken from upstream Airflow. They are lists of + # package names, not prose. + "airflow/stackable/constraints/**", +] + +[default] +# typos has no native suppression directive +# (https://github.com/crate-ci/typos/issues/316), so these regexes provide one. +# They cover `#`, `//`, ``, `;`, `/* */` and Jinja `{# #}` comments. +# +# Both failure modes are safe: an unterminated `:off` suppresses nothing rather +# than swallowing the rest of the file, and `disable-line` only matches when the +# marker ends the line, so trailing text defeats it instead of widening it. +extend-ignore-re = [ + "(?Rm)^.*(#|//||#\\}|\\*/)?\\s*$", + "(#|//||#\\}|\\*/)?\\s*\\n.*", + "(?s)(#|//||#\\}|\\*/|\")?.*?(#|//||#\\}|\\*/|\")?", +] + +[default.extend-words] +# Vertica, the database. `apache-airflow-providers-vertica` is a real package +# name; correcting it to "vertical" would break the Airflow image build. +vertica = "vertica" +# Maven profile activation flag, as in `mvn -Prelease` (hbase/hbase/Dockerfile). +# "Correcting" it to -Prerelease selects a profile that does not exist. This is a +# config entry rather than an in-place marker because the flag sits inside a shell +# line continuation, where a `#` comment would swallow the rest of the command. +Prelease = "Prelease" From c9d7aabccbe420837e73de0d9089e3649d73362b Mon Sep 17 00:00:00 2001 From: Maxi Wittich Date: Thu, 10 Sep 2026 14:05:56 +0200 Subject: [PATCH 2/2] Adding fixed typos and ignored lines where needed --- .github/workflows/preflight.yaml | 2 +- .scripts/update_feature_tracker_db.sh | 4 ++-- .scripts/update_readme_badges.sh | 8 ++++---- CHANGELOG.md | 2 +- airflow/Dockerfile | 2 +- airflow/README.md | 2 +- .../airflow-2/opa_auth_manager/opa_fab_auth_manager.py | 2 +- .../airflow-3/opa_auth_manager/opa_fab_auth_manager.py | 2 +- airflow/stackable/utils/entrypoint.sh | 4 ++-- hbase/README.md | 2 +- hbase/hbase/stackable/bin/hbase-entrypoint.sh | 2 +- opa/Dockerfile | 2 +- rust/boil/src/core/bakefile.rs | 2 +- rust/boil/src/core/image.rs | 4 ++-- rust/boil/src/main.rs | 2 +- rust/boil/src/utils.rs | 2 +- rustfmt.toml | 2 +- shared/statsd-exporter/Dockerfile | 2 +- spark-k8s/stackable/jmx/config.yaml | 2 +- stackable-base/Dockerfile | 2 +- superset/Dockerfile | 8 ++++---- trino-cli/upload_new_trino_version.sh | 2 ++ trino/trino/Dockerfile | 4 ++-- 23 files changed, 34 insertions(+), 32 deletions(-) diff --git a/.github/workflows/preflight.yaml b/.github/workflows/preflight.yaml index 803c5f7ff..d455390a8 100644 --- a/.github/workflows/preflight.yaml +++ b/.github/workflows/preflight.yaml @@ -7,7 +7,7 @@ # The primary reason for this is that it made the release process unnecessary # chaotic. The RH tech portal is notoriously unstable, and in cases where it # failed to respond, a way to re-run the preflight checks was necessary. -# But the preflight checks were trigerred only after a successful release +# But the preflight checks were triggered only after a successful release # workflow, which it's self was only triggered by a new tag. # # As you can imagine, retagging this repository just to force a new round diff --git a/.scripts/update_feature_tracker_db.sh b/.scripts/update_feature_tracker_db.sh index 1fc52be4f..074714d4e 100755 --- a/.scripts/update_feature_tracker_db.sh +++ b/.scripts/update_feature_tracker_db.sh @@ -196,7 +196,7 @@ main() { IMAGES=$(crane ls "${REPOSITORY_NAME}" | grep "stackable${RELEASE_VERSION}" | xargs -I '{}' echo "${REPOSITORY_NAME}":'{}') - # Linter complains about usless echo in $(echo $IMAGES) + # Linter complains about useless echo in $(echo $IMAGES) # but the "echo" is necessary to split IMAGES into multiple lines. # Otherwise IMAGE_NAME contains a long string with all images separated by # newline. @@ -209,7 +209,7 @@ main() { PRODUCT_IMAGE_DIGEST=$(product_image_digest "${IMAGE_NAME}") - echo "Updating compnents for image $IMAGE_NAME" + echo "Updating components for image $IMAGE_NAME" update_release_components "${RELEASE_VERSION}" "${PRODUCT_VERSION_ID}" "${REPOSITORY_NAME}" "${PRODUCT_IMAGE_DIGEST}" done diff --git a/.scripts/update_readme_badges.sh b/.scripts/update_readme_badges.sh index 4020f13f5..eecaffdf4 100755 --- a/.scripts/update_readme_badges.sh +++ b/.scripts/update_readme_badges.sh @@ -6,11 +6,11 @@ set -euo pipefail RELATIVE_PATH=$(realpath -s --relative-to "$PWD" "$0") -# START: Configurables +# START: Configurables # spellchecker:disable-line AUTO_GENERATED_COMMENT="autogenerated by $RELATIVE_PATH" GITHUB_ACTION_URL_PREFIX="https://github.com/stackabletech/docker-images/actions/workflows" COLS=4 -# END: Configurables +# END: Configurables # spellchecker:disable-line LINK_SHORTCUTS=() CURRENT_COLUMN=-1 @@ -74,8 +74,8 @@ echo "" >> "$LINKS_TMP" printf '%s\n' "${LINK_SHORTCUTS[@]}" >> "$LINKS_TMP" echo -n "" >> "$LINKS_TMP" -BADGES_CONTENT=$(sed ':a;N;$!ba;s/\n/\\n/g' "$BADGES_TMP") -LINKS_CONTENT=$(sed ':a;N;$!ba;s/\n/\\n/g' "$LINKS_TMP") +BADGES_CONTENT=$(sed ':a;N;$!ba;s/\n/\\n/g' "$BADGES_TMP") # spellchecker:disable-line +LINKS_CONTENT=$(sed ':a;N;$!ba;s/\n/\\n/g' "$LINKS_TMP") # spellchecker:disable-line README_TMP=$(mktemp) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7914b3be9..0546f4892 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -963,7 +963,7 @@ All notable changes to this project will be documented in this file. - trino: Remove unsupported version 428 ([#687]). - nifi: Remove unsupported version 1.23.2 ([#744]). - kafka: Remove unsupported version `3.5.2` ([#745]). -- airflow: Remove unsupprted version `2.7.2`, `2.7.3` and `2.8.3` ([#762]). +- airflow: Remove unsupported version `2.7.2`, `2.7.3` and `2.8.3` ([#762]). - superset: Remove version `2.1.1`, `3.0.1` and `3.0.3` ([#768]). - druid: Remove support for 27.0.0 ([#731]) - spark-k8s: Remove support for `3.4.1` and `3.5.0` ([#771]). diff --git a/airflow/Dockerfile b/airflow/Dockerfile index 5dd06c857..729da08a5 100644 --- a/airflow/Dockerfile +++ b/airflow/Dockerfile @@ -56,7 +56,7 @@ ARG CDXGEN_SPEC_VERSION # Requires implementation of https://github.com/apache/airflow/blob/main/scripts/docker/install_mysql.sh # The providers are split into separate lists to make it easier to manage # (and to compare to the online links). Default values are provided for -# backwards compatability. +# backwards compatibility. ARG AIRFLOW_EXTRAS_CORE="" ARG AIRFLOW_EXTRAS_META="" ARG AIRFLOW_EXTRAS_PROVIDER_APACHE="" diff --git a/airflow/README.md b/airflow/README.md index cec43b269..eec8967c5 100644 --- a/airflow/README.md +++ b/airflow/README.md @@ -20,7 +20,7 @@ Successfully pulled new constraints file: constraints-3.0.6-python3.12.txt ## Airflow providers/extras The providers are released independently of Airflow. -The list of provider packages are listed in the build configuration file, matching the groups used in the online documentation to make them easier to compare and manage (these will be concatentated into a single list in the Dockerfile). +The list of provider packages are listed in the build configuration file, matching the groups used in the online documentation to make them easier to compare and manage (these will be concatenated into a single list in the Dockerfile). The expected versions are listed in the constraints files, but these can change over time. To keep the installation tightly coupled to the associated constraints it is best to only use providers listed in the relevant constraints file. diff --git a/airflow/opa-auth-manager/airflow-2/opa_auth_manager/opa_fab_auth_manager.py b/airflow/opa-auth-manager/airflow-2/opa_auth_manager/opa_fab_auth_manager.py index b043dccf5..feab01cf2 100644 --- a/airflow/opa-auth-manager/airflow-2/opa_auth_manager/opa_fab_auth_manager.py +++ b/airflow/opa-auth-manager/airflow-2/opa_auth_manager/opa_fab_auth_manager.py @@ -94,7 +94,7 @@ def call_opa(self, url: str, json: dict, timeout: int) -> requests.Response: """ Send a POST request to OPA. - This function can be overriden in tests. + This function can be overridden in tests. :param url: URL for the OPA rule :param json: json to send in the body diff --git a/airflow/opa-auth-manager/airflow-3/opa_auth_manager/opa_fab_auth_manager.py b/airflow/opa-auth-manager/airflow-3/opa_auth_manager/opa_fab_auth_manager.py index 78e18595e..c77ad9878 100644 --- a/airflow/opa-auth-manager/airflow-3/opa_auth_manager/opa_fab_auth_manager.py +++ b/airflow/opa-auth-manager/airflow-3/opa_auth_manager/opa_fab_auth_manager.py @@ -133,7 +133,7 @@ def call_opa(self, url: str, json: dict, timeout: int) -> requests.Response: """ Send a POST request to OPA. - This function can be overriden in tests. + This function can be overridden in tests. :param url: URL for the OPA rule :param json: json to send in the body diff --git a/airflow/stackable/utils/entrypoint.sh b/airflow/stackable/utils/entrypoint.sh index e478d9601..fb0ce94a9 100644 --- a/airflow/stackable/utils/entrypoint.sh +++ b/airflow/stackable/utils/entrypoint.sh @@ -284,8 +284,8 @@ unset PIP_USER # check_uid_gid # STACKABLE PATCH END -# Set umask to 0002 to make all the directories created by the current user group-writeable -# This allows the same directories to be writeable for any arbitrary user the image will be +# Set umask to 0002 to make all the directories created by the current user group-writable +# This allows the same directories to be writable for any arbitrary user the image will be # run with, when the directory is created on a mounted volume and when that volume is later # reused with a different UID (but with GID=0) umask 0002 diff --git a/hbase/README.md b/hbase/README.md index 8ee6d1ad3..1960e8a1a 100644 --- a/hbase/README.md +++ b/hbase/README.md @@ -5,7 +5,7 @@ As of SDP release 25.3, HBase 2.6.x is fully supported. ## Phoenix HBase 2.6 support [was added](https://github.com/apache/phoenix/pull/1793) with [PHOENIX-7172](https://issues.apache.org/jira/browse/PHOENIX-7172) and released with Phoenix 5.2.1, which is included since SDP 25.3. -SDP 24.7 included Phoenix built from the master branch from commit [4afe457](https://github.com/apache/phoenix/tree/4afe4579bb3ab01725e4939746d0b7b807b438ac). +SDP 24.7 included Phoenix built from the master branch from commit [4afe457](https://github.com/apache/phoenix/tree/4afe4579bb3ab01725e4939746d0b7b807b438ac). ## HBase operator tools diff --git a/hbase/hbase/stackable/bin/hbase-entrypoint.sh b/hbase/hbase/stackable/bin/hbase-entrypoint.sh index f21d95de6..44763c1e0 100755 --- a/hbase/hbase/stackable/bin/hbase-entrypoint.sh +++ b/hbase/hbase/stackable/bin/hbase-entrypoint.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Entrypoint for HBase that ensures services are shutdown gracefuly +# Entrypoint for HBase that ensures services are shutdown gracefully # # Expects the following env vars: # - RUN_REGION_MOVER: if set to true, the region mover will be run before region server shutdown diff --git a/opa/Dockerfile b/opa/Dockerfile index 711b569df..1cee6eff0 100644 --- a/opa/Dockerfile +++ b/opa/Dockerfile @@ -88,7 +88,7 @@ tar -czf /stackable/opa-${NEW_VERSION}-src.tar.gz . rm .git git init git config user.email "fake.commiter@stackable.tech" -git config user.name "Fake commiter" +git config user.name "Fake committer" git commit --allow-empty --message "Fake commit, so that we can create a tag" git tag "v${NEW_VERSION}" go build -o opa -buildmode=exe diff --git a/rust/boil/src/core/bakefile.rs b/rust/boil/src/core/bakefile.rs index a47b59182..46b762146 100644 --- a/rust/boil/src/core/bakefile.rs +++ b/rust/boil/src/core/bakefile.rs @@ -285,7 +285,7 @@ impl Targets { } // Remove the last dependency as soon as we are done looking at that particular - // dependency (name+version combination). We do this because we are not decending + // dependency (name+version combination). We do this because we are not descending // down the chain for this particular dependency anymore, but instead move to the // next dependency at the same level of depth. Illustration: // diff --git a/rust/boil/src/core/image.rs b/rust/boil/src/core/image.rs index 37ec2bcbe..55775e4dc 100644 --- a/rust/boil/src/core/image.rs +++ b/rust/boil/src/core/image.rs @@ -37,13 +37,13 @@ impl FromStr for ImageSelector { type Err = ParseImageSelectorError; fn from_str(input: &str) -> Result { - // Get rid of any leading and traling whitespace + // Get rid of any leading and trailing whitespace let input = input.trim(); ensure!(!input.is_empty(), EmptyInputSnafu); let parts: Vec<_> = input.split('=').collect(); - // Ensure that the path/image name is not empty, doesn't contain '~', and is not abolute. + // Ensure that the path/image name is not empty, doesn't contain '~', and is not absolute. ensure!(!parts[0].is_empty(), InvalidFormatSnafu); ensure!(!parts[0].contains('~'), UnsupportedCharsSnafu); ensure!(!parts[0].starts_with('/'), AbsolutePathSnafu); diff --git a/rust/boil/src/main.rs b/rust/boil/src/main.rs index 29decd43b..42fa49043 100644 --- a/rust/boil/src/main.rs +++ b/rust/boil/src/main.rs @@ -14,7 +14,7 @@ mod core; mod models; mod utils; -/// This trait extends functionailty provided by [`snafu`]. +/// This trait extends functionality provided by [`snafu`]. /// /// [`snafu`] already provides various ways to extend [`Result`]s with additional context-sensitive /// information. This trait allows calling `if_context` on any type, which runs a predicate to diff --git a/rust/boil/src/utils.rs b/rust/boil/src/utils.rs index 4825c2b9a..a0dea971f 100644 --- a/rust/boil/src/utils.rs +++ b/rust/boil/src/utils.rs @@ -14,7 +14,7 @@ static SEMVER_PRERELEASE_FLOATING: LazyLock = LazyLock::new(|| { Regex::new("^dev(?:-.+)?$|^pr.+$").expect("static regular expression must compile") }); -// FIXME (@Techassi): We should pull this in from a central pice of code, like stackable-shared. +// FIXME (@Techassi): We should pull this in from a central piece of code, like stackable-shared. // stackable-shared needs to add a few features to be able to properly select _only_ what is needed // without pulling in too many unused deps. pub trait VersionExt { diff --git a/rustfmt.toml b/rustfmt.toml index 07217b21f..03d21a4f6 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -1,5 +1,5 @@ # This file includes unstable features, so you need to run "cargo +nightly fmt" to format your code. -# It's also ok to use the stable toolchain by simple running "cargo fmt", but using the nigthly formatter is prefered. +# It's also ok to use the stable toolchain by simple running "cargo fmt", but using the nightly formatter is preferred. # https://doc.rust-lang.org/nightly/edition-guide/rust-2024/rustfmt-style-edition.html style_edition = "2024" diff --git a/shared/statsd-exporter/Dockerfile b/shared/statsd-exporter/Dockerfile index 5b0210b4b..91283a6ad 100644 --- a/shared/statsd-exporter/Dockerfile +++ b/shared/statsd-exporter/Dockerfile @@ -53,7 +53,7 @@ go install "github.com/CycloneDX/cyclonedx-gomod/cmd/cyclonedx-gomod@v${CYCLONED rm .git git init git config user.email "fake.commiter@stackable.tech" - git config user.name "Fake commiter" + git config user.name "Fake committer" git commit --allow-empty --message "Fake commit, so that we can create a tag" git tag "v${PRODUCT_VERSION}" go build -o /statsd_exporter/statsd_exporter diff --git a/spark-k8s/stackable/jmx/config.yaml b/spark-k8s/stackable/jmx/config.yaml index 570da68b6..ad445d2c1 100644 --- a/spark-k8s/stackable/jmx/config.yaml +++ b/spark-k8s/stackable/jmx/config.yaml @@ -20,7 +20,7 @@ rules: app_id: "$1" # These come from the application driver - # Emulate timers for DAGScheduler like messagePRocessingTime + # Emulate timers for DAGScheduler like messageProcessingTime - pattern: "metrics<>Count" name: spark_driver_DAGScheduler_$2_total type: COUNTER diff --git a/stackable-base/Dockerfile b/stackable-base/Dockerfile index 497c290ac..c6e34598a 100644 --- a/stackable-base/Dockerfile +++ b/stackable-base/Dockerfile @@ -192,7 +192,7 @@ COPY --chown=${STACKABLE_USER_UID}:0 shared/checks/check-permissions-ownership.s ENV PATH="${PATH}:/stackable" -# These labels have mostly been superceded by the OpenContainer spec annotations below but it doesn't hurt to include them +# These labels have mostly been superseded by the OpenContainer spec annotations below but it doesn't hurt to include them # http://label-schema.org/rc1/ LABEL maintainer="info@stackable.tech" LABEL vendor="Stackable GmbH" diff --git a/superset/Dockerfile b/superset/Dockerfile index 97536fa49..bc9451e48 100644 --- a/superset/Dockerfile +++ b/superset/Dockerfile @@ -55,9 +55,9 @@ RUN microdnf update \ # Needed by ./configure to work out SQLite compilation flags, see snippet [1] at the end of file diffutils \ # According to https://stackoverflow.com/q/19530974 normally sqlite3 should be shipped with the Python - # distribution. However, while addig ARM support we noticed that this does not seem to be the case for the + # distribution. However, while adding ARM support we noticed that this does not seem to be the case for the # Python installation shipped in the ARM image variant. So I guess Make is used to find out the sqlite - # compilation flags (and propably to not build sqlite from source(?)), see snippet [1] at the end of file + # compilation flags (and probably to not build sqlite from source(?)), see snippet [1] at the end of file make \ gcc \ gcc-c++ \ @@ -122,7 +122,7 @@ EOF # Upgrade pip to the latest version # Also install uv to get support for build constraints -# DL3042 false-positive, --no-chache-dir is specified a few lines below. +# DL3042 false-positive, --no-cache-dir is specified a few lines below. # See https://github.com/hadolint/hadolint/issues/1042. # hadolint ignore=DL3042 RUN <