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 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.