-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.ahoy.yml
More file actions
314 lines (265 loc) · 11.6 KB
/
.ahoy.yml
File metadata and controls
314 lines (265 loc) · 11.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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
#
# Ahoy configuration file.
# http://www.ahoycli.com/
#
# Provides development experience shortcuts to work with the stack.
# Any command can be copy-pasted directly into terminal and ran without using
# Ahoy.
#
# Do not add values directly into this file. Use .env file instead.
# Run `ahoy up cli` to apply environment variables changes to containers.
---
ahoyapi: v2
commands:
build:
usage: Build or rebuild the project.
cmd: |
ahoy confirm "All containers, build files and database will be removed. Proceed?" && export AHOY_CONFIRM_RESPONSE=y && export AHOY_CONFIRM_WAIT_SKIP=1 || exit 0
ahoy reset # Reset the project.
ahoy up --build --force-recreate # Start the stack.
ahoy composer install # Install Composer dependencies.
ahoy fei # Install front-end dependencies.
ahoy fe # Build front-end assets.
VORTEX_SHOW_LOGIN=0 ahoy provision # Provision the site.
VORTEX_SHOW_LOGIN=1 ahoy info # Show information and a login link.
info:
usage: Show information about this project.
cmd: |
COMPOSE_PROJECT_NAME=${COMPOSE_PROJECT_NAME:-${PWD##*/}} \
VORTEX_HOST_DB_PORT=$(docker compose port database 3306 2>/dev/null | cut -d : -f 2) \
VORTEX_HOST_SOLR_PORT=$(docker compose port solr 8983 2>/dev/null | cut -d : -f 2) \
VORTEX_HOST_SELENIUM_VNC_PORT=$(docker compose port chrome 7900 2>/dev/null | cut -d : -f 2) \
VORTEX_HOST_HAS_SEQUELACE=$(uname -a | grep -i -q darwin && mdfind -name 'Sequel Ace' 2>/dev/null | grep -q "Ace" && echo 1 || true) \
ahoy cli ./scripts/vortex/info.sh "$@"
db:
usage: Open DB in Sequel Ace.
cmd: |
uname -a | grep -i -q darwin && test -d "${VORTEX_HOST_SEQUELACE_PATH:-/Applications/Sequel Ace.app}" && \
VORTEX_HOST_DB_PORT=$(docker compose port database 3306 2>/dev/null | cut -d : -f 2) && \
open "mysql://${DATABASE_USERNAME:-drupal}:${DATABASE_PASSWORD:-drupal}@127.0.0.1:${VORTEX_HOST_DB_PORT}/drupal" -a "Sequel Ace" \
|| echo "Not a supported OS or Sequel Ace is not installed."
# ----------------------------------------------------------------------------
# Container commands.
# ----------------------------------------------------------------------------
up:
usage: Build and start containers.
cmd: |
docker compose up --detach "$@"
if docker compose logs | grep -q "\[Error\]"; then exit 1; fi
down:
usage: Stop and remove containers, images, volumes and networks.
cmd: |
ahoy confirm "Running this command will remove your current database. Are you sure?" || exit 0
if [ -f "docker-compose.yml" ]; then docker compose down --remove-orphans --volumes > /dev/null 2>&1; fi
start:
usage: Start existing containers.
cmd: docker compose start "$@"
stop:
usage: Stop running containers.
cmd: docker compose stop "$@"
restart:
usage: Restart stopped or running containers.
cmd: docker compose restart "$@"
logs:
usage: Show container logs for services.
cmd: docker compose logs "$@"
# Drop into a shell if no arguments are supplied, otherwise run the command.
# Environment variables are passed from the host and filtered by prefix.
# Use \" (slash followed by a double quote) to escape double quotes in
# arguments that contain spaces.
cli:
usage: Start a shell or run a command inside the CLI service container.
cmd: |
if [ "${#}" -ne 0 ]; then
docker compose exec $(env | cut -f1 -d= | grep "TERM\|COMPOSE_\|GITHUB_\|PACKAGE_\|DOCKER_\|DRUPAL_\|VORTEX_" | sed 's/^/-e /') cli bash -c "$*"
else
docker compose exec $(env | cut -f1 -d= | grep "TERM\|COMPOSE_\|GITHUB_\|PACKAGE_\|DOCKER_\|DRUPAL_\|VORTEX_" | sed 's/^/-e /') cli bash
fi
composer:
usage: Run Composer commands in the CLI service container.
cmd: |
ahoy cli " \
if [ -n \"${PACKAGE_TOKEN:-}\" ]; then export COMPOSER_AUTH='{\"github-oauth\": {\"github.com\": \"${PACKAGE_TOKEN-}\"}}'; fi && \
COMPOSER_MEMORY_LIMIT=-1 composer --ansi $@"
drush:
usage: Run Drush commands in the CLI service container.
cmd: ahoy cli "vendor/bin/drush -l \${VORTEX_LOCALDEV_URL} $*"
flush-redis:
usage: Flush Redis cache.
cmd: docker compose exec redis redis-cli flushall
# ----------------------------------------------------------------------------
# Application commands.
# ----------------------------------------------------------------------------
login:
usage: Unblock user 1 and generate a one time login link.
cmd: ahoy cli ./scripts/vortex/login.sh
download-db:
usage: Download database. Run with "--fresh" option to force fresh database backup.
aliases: [fetch-db]
cmd: |
case " $* " in *" --fresh "*) export VORTEX_DOWNLOAD_DB_FRESH=1;; esac
./scripts/vortex/download-db.sh
reload-db:
usage: Reload the database container using local database image.
cmd: |
ahoy confirm "Running this command will replace your current database. Are you sure?" || exit 0
docker compose rm --force --stop --volumes database
docker compose build database
ahoy up
provision:
usage: Provision a site from the database dump or profile.
cmd: |
ahoy confirm "Running this command will remove your current database. Are you sure?" || exit 0
[ -n "${VORTEX_DB_IMAGE}" ] && AHOY_CONFIRM_RESPONSE=y ahoy reload-db
ahoy cli ./scripts/vortex/provision.sh
[ "${VORTEX_SHOW_LOGIN:-1}" = "1" ] && ahoy login || true
export-db:
usage: Export database dump or database image (if VORTEX_DB_IMAGE variable is set).
cmd: ./scripts/vortex/export-db.sh "$@"
import-db:
usage: Import database from dump.
cmd: VORTEX_PROVISION_POST_OPERATIONS_SKIP=1 VORTEX_PROVISION_DB="$@" ahoy cli ./scripts/vortex/provision.sh
pull-db:
usage: Download database image with the latest nightly dump. Run "ahoy reload-db" to reload DB in the running stack.
cmd: \[ -n "${VORTEX_DB_IMAGE}" \] && docker pull ${VORTEX_DB_IMAGE} || true
reset:
usage: Remove containers, all build files. Use with `hard` to reset repository to the last commit.
cmd: |
ahoy confirm "All containers and build files will be removed. Proceed?" || exit 0
AHOY_CONFIRM_RESPONSE=y ahoy down || true
./scripts/vortex/reset.sh "$@"
fei:
usage: Install front-end assets.
cmd: |
ahoy cli "yarn install --frozen-lockfile"
ahoy cli "yarn --cwd=${WEBROOT}/themes/custom/${DRUPAL_THEME} install --frozen-lockfile"
fe:
usage: Build front-end assets.
cmd: ahoy cli "cd ${WEBROOT}/themes/custom/${DRUPAL_THEME} && yarn run build"
fed:
usage: Build front-end assets for development.
cmd: ahoy cli "cd ${WEBROOT}/themes/custom/${DRUPAL_THEME} && yarn run build-dev"
few:
usage: Watch front-end assets during development.
cmd: |
ahoy cli "pkill -9 -f grunt" || true
ahoy cli "cd ${WEBROOT}/themes/custom/${DRUPAL_THEME} && yarn run watch"
lint:
usage: Lint back-end and front-end code.
cmd: |
ahoy lint-be
ahoy lint-fe
ahoy lint-tests
lint-be:
usage: Lint back-end code.
cmd: |
ahoy cli vendor/bin/phpcs
ahoy cli vendor/bin/phpstan
ahoy cli vendor/bin/rector --dry-run
lint-fe:
usage: Lint front-end code.
cmd: |
ahoy cli vendor/bin/twig-cs-fixer lint
ahoy cli "yarn run lint"
ahoy cli "yarn run --cwd=\${WEBROOT}/themes/custom/\${DRUPAL_THEME} lint"
lint-tests:
usage: Lint tests code.
cmd: |
ahoy cli vendor/bin/gherkinlint lint tests/behat/features
lint-fix:
usage: Fix lint issues of back-end and front-end code.
cmd: |
ahoy lint-be-fix
ahoy lint-fe-fix
lint-be-fix:
usage: Fix lint issues of back-end code.
cmd: |
ahoy cli vendor/bin/rector
ahoy cli vendor/bin/phpcbf
lint-fe-fix:
usage: Fix lint issues of front-end code.
cmd: |
ahoy cli vendor/bin/twig-cs-fixer lint --fix
ahoy cli "yarn run lint-fix"
ahoy cli "yarn run --cwd=\${WEBROOT}/themes/custom/\${DRUPAL_THEME} lint-fix"
test:
usage: Run all PHPUnit tests.
cmd: ahoy cli vendor/bin/phpunit "$@"
test-unit:
usage: Run PHPUnit unit tests.
cmd: ahoy cli vendor/bin/phpunit --testsuite=unit "$@"
test-kernel:
usage: Run PHPUnit kernel tests.
cmd: ahoy cli vendor/bin/phpunit --testsuite=kernel "$@"
test-functional:
usage: Run PHPUnit functional tests.
cmd: ahoy cli vendor/bin/phpunit --testsuite=functional "$@"
test-functional-javascript:
aliases: [test-js]
usage: Run PHPUnit functional JavaScript tests.
cmd: ahoy cli vendor/bin/phpunit --testsuite=functional-javascript "$@"
test-bdd:
usage: Run BDD tests.
aliases: [test-behat]
cmd: ahoy cli php -d memory_limit=-1 vendor/bin/behat --colors "$@"
debug:
usage: Enable PHP Xdebug.
cmd: |
ahoy cli php -v | grep -q Xdebug && echo "Debug configuration is already enabled. Use 'ahoy up' to disable." || \
(XDEBUG_ENABLE=true ahoy up cli php nginx && sleep 1 && ahoy cli php -v | grep -q Xdebug && echo "Enabled debug configuration. Use 'ahoy up' to disable.")
deploy:
usage: Run remote deployment procedures.
cmd: |
ahoy confirm "Deployment usually runs in CI. Are you sure you want to proceed with manual deployment? (Run as ahoy deploy [type1,[type2..]], where [type] is 'code', 'container_registry', 'webhook')" || exit 0
./scripts/vortex/deploy.sh "$@"
doctor:
usage: Find problems with current project setup.
cmd: ./scripts/vortex/doctor.sh "$@"
update-vortex:
usage: Update project from the Vortex template repository.
cmd: ./scripts/vortex/update-vortex.sh $@
local:
usage: Custom local commands. See `ahoy local help`.
optional: true
imports: [.ahoy.local.yml]
# ----------------------------------------------------------------------------
# Utilities.
# ----------------------------------------------------------------------------
# Internal utility command to confirm actions before running them.
# Accepts a message as an argument and waits for user confirmation.
# Will proceed only if the user types 'y' or 'true'.
# If AHOY_CONFIRM_RESPONSE is set, it will use that value without prompting
# the user, and will print the prompt with an answer. It will also give a
# 3 seconds delay before proceeding to allow the user to cancel the operation.
# If AHOY_CONFIRM_WAIT_SKIP is also set to '1', it will skip the wait and
# proceed immediately.
confirm:
cmd: |
if [ -z "${AHOY_CONFIRM_RESPONSE}" ]; then
read -r -p "$( echo -e "\033[31m>> $1\033[0m \033[2m[y/N]\033[0m " )" AHOY_CONFIRM_RESPONSE
if [ "${AHOY_CONFIRM_RESPONSE}" != "y" ] && [ "${AHOY_CONFIRM_RESPONSE}" != "true" ]; then
echo "The operation was canceled."
exit 1
fi
else
if [ "${AHOY_CONFIRM_WAIT_SKIP}" != "1" ]; then
echo -e "\033[31m>> $1\033[0m \033[2m[y/N] ${AHOY_CONFIRM_RESPONSE}\033[0m"
echo "Waiting for 3 seconds... Press Ctrl+C to cancel."
sleep 3
fi
fi
hide: true
# Override entrypoint to alter default behavior of Ahoy.
# 1. Exit the script if any statement returns a non-true return value.
# 2. Read variables from .env file (while respecting existing values) to load
# and pass updated environment variables' values into already running
# containers.
entrypoint:
- bash
- -c
- -e
- |
t=$(mktemp) && export -p > "$t" && set -a && . ./.env && if [ -f ./.env.local ];then . ./.env.local;fi && set +a && . "$t" && rm "$t" && unset t
bash -e -c "$0" "$@"
- '{{cmd}}'
- '{{name}}'