From b2294dc518ee239c82bb55ed234b263b5b668ea3 Mon Sep 17 00:00:00 2001 From: Lutz Reinhardt Date: Thu, 29 Jan 2026 12:10:11 +0000 Subject: [PATCH 1/2] Bump versions of pre-commit feature and hooks --- .devcontainer/devcontainer.json | 2 +- .pre-commit-config.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 86a8d7d..a9e09bd 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -9,7 +9,7 @@ "moby": "false" // does not work with Debian Trixie based images }, "ghcr.io/devcontainers-extra/features/pre-commit:2": { - "version": "4.2.0" + "version": "4.5.1" } }, "postCreateCommand": "${containerWorkspaceFolder}/.devcontainer/post_create_command.sh", diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 69e4bd9..3933893 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: cef0300fd0fc4d2a87a85fa2093c6b283ea36f4b # v5.0.0 + rev: 3e8a8703264a2f4a69428a0aa4dcb512790b2c8c # v6.0.0 hooks: - id: check-yaml - id: end-of-file-fixer From b0ec72394a6a27f275311d4179e43a2091dd6acf Mon Sep 17 00:00:00 2001 From: Lutz Reinhardt Date: Thu, 29 Jan 2026 12:27:47 +0000 Subject: [PATCH 2/2] Add pre-commit feature to devcontainer It supports to spot easy to detect issues before committing code and reduce the number of failed CI runs and review cycles. Ensure the S-CORE depends on the pre-commit feature so that it is always because it installs scripts using it. --- .../.devcontainer/devcontainer-lock.json | 5 +++++ .../.devcontainer/devcontainer.json | 1 - .../s-core-local/devcontainer-feature.json | 8 +++++++- .../s-core-local/enable_pre_commit_hooks.sh | 12 ++++++++++++ .../.devcontainer/s-core-local/tests/test_default.sh | 3 +++ 5 files changed, 27 insertions(+), 2 deletions(-) create mode 100755 src/s-core-devcontainer/.devcontainer/s-core-local/enable_pre_commit_hooks.sh diff --git a/src/s-core-devcontainer/.devcontainer/devcontainer-lock.json b/src/s-core-devcontainer/.devcontainer/devcontainer-lock.json index 4f1a4f3..7e98f7e 100644 --- a/src/s-core-devcontainer/.devcontainer/devcontainer-lock.json +++ b/src/s-core-devcontainer/.devcontainer/devcontainer-lock.json @@ -5,6 +5,11 @@ "resolved": "ghcr.io/devcontainers-community/features/llvm@sha256:4f464ab97a59439286a55490b55ba9851616f6f76ac3025e134127ac08ad79e2", "integrity": "sha256:4f464ab97a59439286a55490b55ba9851616f6f76ac3025e134127ac08ad79e2" }, + "ghcr.io/devcontainers-extra/features/pre-commit:2": { + "version": "2.0.18", + "resolved": "ghcr.io/devcontainers-extra/features/pre-commit@sha256:6e0bb2ce80caca1d94f44dab5d0653d88a1c00984e590adb7c6bce012d0ade6e", + "integrity": "sha256:6e0bb2ce80caca1d94f44dab5d0653d88a1c00984e590adb7c6bce012d0ade6e" + }, "ghcr.io/devcontainers/features/common-utils": { "version": "2.5.4", "resolved": "ghcr.io/devcontainers/features/common-utils@sha256:00fd45550f578d9d515044d9e2226e908dbc3d7aa6fcb9dee4d8bdb60be114cf", diff --git a/src/s-core-devcontainer/.devcontainer/devcontainer.json b/src/s-core-devcontainer/.devcontainer/devcontainer.json index 0aa99bc..2625a78 100644 --- a/src/s-core-devcontainer/.devcontainer/devcontainer.json +++ b/src/s-core-devcontainer/.devcontainer/devcontainer.json @@ -48,7 +48,6 @@ "./s-core-local" ], "remoteUser": "vscode", - "customizations": { "vscode": { "extensions": [ diff --git a/src/s-core-devcontainer/.devcontainer/s-core-local/devcontainer-feature.json b/src/s-core-devcontainer/.devcontainer/s-core-local/devcontainer-feature.json index e05ea5a..adf1c5e 100644 --- a/src/s-core-devcontainer/.devcontainer/s-core-local/devcontainer-feature.json +++ b/src/s-core-devcontainer/.devcontainer/s-core-local/devcontainer-feature.json @@ -3,12 +3,18 @@ "id": "s-core-local", "version": "1.0.0", "description": "Tools which are not available as already existing development container feature", + "dependsOn": { + "ghcr.io/devcontainers-extra/features/pre-commit:2": { + "version": "4.5.1" + } + }, "onCreateCommand": "/devcontainer/features/s-core-local/on_create_command.sh", "postCreateCommand": { // The repos in S-CORE may use different Bazel versions. This ensures that the required version is installed. // Should be removed once we provide versions of the devcontainer. "Install matching Bazel version": "bash /devcontainer/features/s-core-local/install_matching_bazel_version.sh", - "Setup persistent bash history": "bash /devcontainer/features/s-core-local/setup_command_history.sh" + "Setup persistent bash history": "bash /devcontainer/features/s-core-local/setup_command_history.sh", + "Enable pre-commit hooks": "bash /devcontainer/features/s-core-local/enable_pre_commit_hooks.sh" }, "mounts": [ { diff --git a/src/s-core-devcontainer/.devcontainer/s-core-local/enable_pre_commit_hooks.sh b/src/s-core-devcontainer/.devcontainer/s-core-local/enable_pre_commit_hooks.sh new file mode 100755 index 0000000..b6c884a --- /dev/null +++ b/src/s-core-devcontainer/.devcontainer/s-core-local/enable_pre_commit_hooks.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +PRE_COMMIT_CONFIG_FILE=".pre-commit-config.yaml" + +if [[ -f "${PRE_COMMIT_CONFIG_FILE}" ]] +then + echo "Pre-commit configuration found (${PRE_COMMIT_CONFIG_FILE})" + $PIPX_BIN_DIR/pre-commit install +else + echo "No pre-commit configuration found (${PRE_COMMIT_CONFIG_FILE})" + echo "Skipping pre-commit hook's installation" +fi diff --git a/src/s-core-devcontainer/.devcontainer/s-core-local/tests/test_default.sh b/src/s-core-devcontainer/.devcontainer/s-core-local/tests/test_default.sh index a34d5fa..e610554 100755 --- a/src/s-core-devcontainer/.devcontainer/s-core-local/tests/test_default.sh +++ b/src/s-core-devcontainer/.devcontainer/s-core-local/tests/test_default.sh @@ -4,6 +4,9 @@ set -euo pipefail # Read tool versions + metadata into environment variables . /devcontainer/features/s-core-local/versions.sh +# pre-commit, it is available via $PATH in login shells, but not in non-login shells +check "validate pre-commit is working and has the correct version" bash -c "$PIPX_BIN_DIR/pre-commit --version | grep '4.5.1'" + # Common tooling # For an unknown reason, dot -V reports on Ubuntu Noble a version 2.43.0, while the package has a different version. # Hence, we have to work around that.