Skip to content

Commit 938ea2f

Browse files
committed
feat: enhance environment variable forwarding in DDEV container execution
1 parent 3cc18bf commit 938ea2f

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

booster/tools/git-hooks/shared/runner.sh

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,37 @@ elif command -v ddev >/dev/null 2>&1; then
2424

2525
if [ -n "$project_name" ] && command -v docker >/dev/null 2>&1; then
2626
# Use docker exec -t for TTY support and colors
27-
exec docker exec -t "$container_name" "$@"
27+
# Forward a conservative whitelist of environment variables from the host
28+
# into the container so ZX hooks and wrappers can honour skip flags and
29+
# verbosity settings without exposing unrelated host environment values.
30+
# Whitelist derived from hook/utility usage: SKIP_PRECOMMIT, SKIP_COMMITMSG,
31+
# SKIP_RECTOR, SKIP_ECS, SKIP_PHPSTAN, SKIP_PSALM, SKIP_DEPTRAC,
32+
# PRECOMMIT_VERBOSE, COMMITMSG_VERBOSE, FORCE_COLOR, LC_ALL, LANG,
33+
whitelist=(
34+
"SKIP_PRECOMMIT"
35+
"SKIP_COMMITMSG"
36+
"SKIP_RECTOR"
37+
"SKIP_ECS"
38+
"SKIP_PHPSTAN"
39+
"SKIP_PSALM"
40+
"SKIP_DEPTRAC"
41+
"PRECOMMIT_VERBOSE"
42+
"COMMITMSG_VERBOSE"
43+
)
44+
45+
env_flags=()
46+
for var in "${whitelist[@]}"; do
47+
# Only forward if variable is set in the host environment
48+
if [ -n "${!var+x}" ]; then
49+
env_flags+=("-e" "${var}=${!var}")
50+
fi
51+
done
52+
53+
if [ ${#env_flags[@]} -gt 0 ]; then
54+
exec docker exec -t "${env_flags[@]}" "$container_name" "$@"
55+
else
56+
exec docker exec -t "$container_name" "$@"
57+
fi
2858
fi
2959
fi
3060
else

0 commit comments

Comments
 (0)