generated from ddev/ddev-addon-template
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathpre-commit
More file actions
executable file
·152 lines (134 loc) · 5.6 KB
/
pre-commit
File metadata and controls
executable file
·152 lines (134 loc) · 5.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#!/usr/bin/env bash
#ddev-generated
# @todo: Lots of repetition below in performance settings,
# they are easy to copy over to other hooks like that but
# the file is getting bigger. Decide if they should be in
# a loop.
#
# Checks for wrong performance settings
#
FILES_PATTERN='system\.performance\.yml$'
# Abort commit if you are disabling CSS/JS aggregation
FORBIDDEN='preprocess: false'
STAGED_FILES=$(git diff --cached --name-only | grep -E "$FILES_PATTERN")
if [ -n "$STAGED_FILES" ]; then
echo "$STAGED_FILES" | xargs grep --color --with-filename -n "$FORBIDDEN" \
&& echo "COMMIT REJECTED Found \"$FORBIDDEN\" references. Please remove them before committing." \
&& echo "You MUST not disable CSS/JS aggregation!" \
&& exit 1
fi
# Abort commit if you are disabling browser caching
FORBIDDEN='max_age: 0'
STAGED_FILES=$(git diff --cached --name-only | grep -vE "(^|/)tests(/|$)" | grep -E "$FILES_PATTERN")
if [ -n "$STAGED_FILES" ]; then
echo "$STAGED_FILES" | xargs grep --color --with-filename -n "$FORBIDDEN" \
&& echo "COMMIT REJECTED Found \"$FORBIDDEN\" references. Please remove them before committing." \
&& echo "You MUST not disable browser caching!" \
&& exit 1
fi
# Abort commit if you are enabling GZIPping of CSS/JS assets
FORBIDDEN='gzip: true'
STAGED_FILES=$(git diff --cached --name-only | grep -vE "(^|/)tests(/|$)" | grep -E "$FILES_PATTERN")
if [ -n "$STAGED_FILES" ]; then
echo "$STAGED_FILES" | xargs grep --color --with-filename -n "$FORBIDDEN" \
&& echo "COMMIT REJECTED Found \"$FORBIDDEN\" references. Please remove them before committing." \
&& echo "You MUST not enable CSS/JS GZIP in AdvAgg!" \
&& exit 1
fi
# Abort commit if you are **enabling** modules that should not be enabled
FILES_PATTERN='core\.extension\.yml$'
FORBIDDEN_PATTERNS=('devel: 0' 'devel_php: 0' 'drush_endpoint: 0')
if [ -f ".ddev/.env" ]; then
source ".ddev/.env"
# Also include page_cache in forbidden modules for Platform (Upsun)
if [ "$DDEV_UPSTREAM_PROVIDER" = "platform" ]; then
# Do NOT remove the empty space before the module name for this one!
# It will match dynamic_page_cache too if you do so.
FORBIDDEN_PATTERNS+=( ' page_cache: 0')
fi
fi
STAGED_FILES=$(git diff --cached --name-only | grep -E "$FILES_PATTERN")
if [ -n "$STAGED_FILES" ]; then
for FORBIDDEN_PATTERN in "${FORBIDDEN_PATTERNS[@]}"; do
echo "$STAGED_FILES" | xargs grep --color --with-filename -n "$FORBIDDEN_PATTERN" \
&& echo "COMMIT REJECTED Found \"$FORBIDDEN_PATTERN\" references. Please remove them before committing." \
&& echo "Use --no-verify to bypass this check" \
&& exit 1
done
fi
#
# Abort commit if Upsun route cache is enabled while behind a CDN
#
EXT_FILE=$(find . -path "*/config/sync/core.extension.yml" ! -path "*/.git/*" 2>/dev/null | head -1)
ROUTES_FILE=".platform/routes.yaml"
if [[ -f "$EXT_FILE" && -f "$ROUTES_FILE" ]]; then
CDN_NAME=""
for cdn_mod in fastly cloudflare; do
if grep -qE "^\s+${cdn_mod}:" "$EXT_FILE"; then
CDN_NAME="$cdn_mod"
fi
done
if [[ -n "$CDN_NAME" ]]; then
if ! grep -qE "enabled:\s*false" "$ROUTES_FILE"; then
echo
echo "COMMIT REJECTED: CDN module '$CDN_NAME' is enabled but Upsun route cache is not disabled."
echo "Set 'enabled: false' under 'cache:' in .platform/routes.yaml."
echo "Use --no-verify to bypass this check."
echo
exit 1
fi
fi
fi
#
# Abort commit if you are **committing** forbidden modules/files
#
STAGED_FILES=$(git diff --cached --name-only)
FORBIDDEN_FOLDERS=("devel_php")
for folder in "${FORBIDDEN_FOLDERS[@]}"; do
if echo "$STAGED_FILES" | grep -q "/$folder/"; then
echo
echo "COMMIT REJECTED: files in $folder are staged."
echo "Please unstage them before committing."
echo
exit 1
fi
done
#
# Abort commit if you are using a development version of the annertech-ddev addon
#
MANIFEST_FILE=".ddev/addon-metadata/annertech-ddev/manifest.yaml"
STAGED_FILES=$(git diff --cached --name-only | grep -E "$MANIFEST_FILE")
if [ -n "$STAGED_FILES" ]; then
# Extract version value (trims spaces and quotes)
VERSION=$(grep -E '^version:' "$MANIFEST_FILE" | awk -F': ' '{print $2}' | tr -d '"' | xargs)
# Check if version is missing or empty
if [[ -z "$VERSION" ]]; then
echo "It looks like you are using a development version of the annertech-ddev addon"
echo "Please install a published version using: 'ddev add-on get annertech/annertech-ddev'"
exit 1
fi
fi
#
# Abort commit if you are using an incompatible or unexpected ddev-drupal-solr addon
#
SOLR_MANIFEST_FILE=".ddev/addon-metadata/solr/manifest.yaml"
STAGED_FILES=$(git diff --cached --name-only | grep -F "$SOLR_MANIFEST_FILE")
if [ -n "$STAGED_FILES" ]; then
SOLR_VERSION=$(grep -E '^version:' "$SOLR_MANIFEST_FILE" | awk -F': ' '{print $2}' | tr -d '"' | xargs)
SOLR_REPO=$(grep -E '^repository:' "$SOLR_MANIFEST_FILE" | awk -F': ' '{print $2}' | tr -d '"' | xargs)
if [[ "$SOLR_REPO" != "ddev/ddev-drupal-solr" ]]; then
echo "COMMIT REJECTED: Unexpected Solr addon repository: '$SOLR_REPO'"
echo "Expected: 'ddev/ddev-drupal-solr'"
echo "Install the correct addon with: 'ddev add-on get ddev/ddev-drupal-solr --version v1.2.3'"
exit 1
fi
if [[ "$SOLR_VERSION" != "v1.2.3" ]]; then
echo "COMMIT REJECTED: ddev-drupal-solr version '$SOLR_VERSION' is not supported."
echo "Only v1.2.3 is compatible. Install it with: 'ddev add-on get ddev/ddev-drupal-solr --version v1.2.3'"
exit 1
fi
fi
#
# All good, commit continues
#
exit 0