-
-
Notifications
You must be signed in to change notification settings - Fork 19
/
.ahoy.yml
298 lines (250 loc) Β· 10.9 KB
/
.ahoy.yml
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
#
# 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.
#;
#; Comments starting with '#:' provide explicit documentation and will be
#; automatically removed during installation or update of Vortex if an option
#; is selected.
#;
#; Comments starting with '#;<' and '#;>' are internal Vortex comments
#; and will be removed during installation or update of Vortex.
---
ahoyapi: v2
commands:
build:
usage: Build or rebuild the project.
cmd: |
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.
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 && mdfind -name 'Sequel Ace' 2>/dev/null |grep -q "Ace" \
&& VORTEX_HOST_DB_PORT="$(docker port $(docker compose ps -q database 2>/dev/null) 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 -d "$@"
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?" &&
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 "$@"
pull:
usage: Pull latest container images.
cmd: if [ ! -z "$(docker image ls -q)" ]; then docker image ls --format \"{{.Repository}}:{{.Tag}}\" | grep uselagoon/ | grep -v none | xargs -n1 docker pull -q | cat; fi
cli:
usage: Start a shell or run a command inside the CLI service container.
# 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.
cmd: |
if [ "${#}" -ne 0 ]; then
docker compose exec $(env | cut -f1 -d= | grep "TERM\|COMPOSE_\|GITHUB_\|DOCKER_\|DRUPAL_\|VORTEX_" | sed 's/^/-e /') -T cli bash -c "$*"
else
docker compose exec $(env | cut -f1 -d= | grep "TERM\|COMPOSE_\|GITHUB_\|DOCKER_\|DRUPAL_\|VORTEX_" | sed 's/^/-e /') cli bash
fi
composer:
usage: Run Composer commands in the CLI service container.
cmd: |
ahoy cli " \
if [ -n \"${GITHUB_TOKEN:-}\" ]; then export COMPOSER_AUTH='{\"github-oauth\": {\"github.com\": \"${GITHUB_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} $*"
#;< REDIS
flush-redis:
usage: Flush Redis cache.
cmd: docker compose exec redis redis-cli flushall
#;> REDIS
# ----------------------------------------------------------------------------
# Application commands.
# ----------------------------------------------------------------------------
login:
usage: Login to a website.
# Unblock user 1 and generate a one time login link.
cmd: ahoy cli ./scripts/vortex/login.sh
#;< !PROVISION_USE_PROFILE
download-db:
usage: Download database.
aliases: ['fetch-db']
cmd: ./scripts/vortex/download-db.sh
#;> !PROVISION_USE_PROFILE
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?" &&
docker compose rm --force --stop --volumes database && \
ahoy up -- --build database && \
ahoy up wait_dependencies && \
sleep 15 && \
ahoy provision && \
VORTEX_SHOW_LOGIN=1 ahoy info
provision:
usage: Provision a site from the database dump or profile.
cmd: ahoy cli ./scripts/vortex/provision.sh
export-db:
usage: Export database dump or database image (if VORTEX_DB_IMAGE variable is set).
cmd: ./scripts/vortex/export-db.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?" &&
AHOY_CONFIRM_RESPONSE=y ahoy down && ./scripts/vortex/reset.sh "$@"
fei:
usage: Install front-end assets.
cmd: ahoy cli "npm --prefix ${VORTEX_WEBROOT}/themes/custom/${DRUPAL_THEME} install"
fe:
usage: Build front-end assets.
cmd: ahoy cli "cd ${VORTEX_WEBROOT}/themes/custom/${DRUPAL_THEME} && npm run build"
fed:
usage: Build front-end assets for development.
cmd: ahoy cli "cd ${VORTEX_WEBROOT}/themes/custom/${DRUPAL_THEME} && npm run build-dev"
few:
usage: Watch front-end assets during development.
cmd: |
ahoy cli "pkill -9 -f grunt" || true
ahoy cli "cd ${VORTEX_WEBROOT}/themes/custom/${DRUPAL_THEME} && npm 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 --clear-cache --dry-run
ahoy cli vendor/bin/phpmd . text phpmd.xml
lint-fe:
usage: Lint front-end code.
cmd: |
ahoy cli vendor/bin/twig-cs-fixer lint
ahoy cli "npm run --prefix \${VORTEX_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 --clear-cache
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 "npm run --prefix \${VORTEX_WEBROOT}/themes/custom/\${DRUPAL_THEME} lint-fix"
test:
usage: Run all tests.
cmd: ahoy test-unit && ahoy test-kernel && ahoy test-functional && ahoy test-bdd
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-bdd:
usage: Run BDD tests.
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 || XDEBUG_ENABLE=true ahoy up cli php nginx && 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')" &&
./scripts/vortex/deploy.sh "$@"
github-labels:
usage: Update project's GitHub labels.
cmd: ./scripts/vortex/github-labels.sh "$@"
doctor:
usage: Find problems with current project setup.
cmd: ./scripts/vortex/doctor.sh "$@"
update-vortex:
usage: Update Vortex stack.
cmd: |
ahoy confirm "Some committed files may become overwritten. Proceed?" &&
./scripts/vortex/update-vortex.sh $@
local:
usage: Custom local commands. See `ahoy local help`.
optional: true
imports:
- .ahoy.local.yml
# ----------------------------------------------------------------------------
# Utilities.
# ----------------------------------------------------------------------------
confirm:
cmd: |
if [ -z "${AHOY_CONFIRM_RESPONSE}" ]; then
read -r -p ">> $1 [y/N] " AHOY_CONFIRM_RESPONSE
[ "${AHOY_CONFIRM_RESPONSE}" = "y" ] || [ "${AHOY_CONFIRM_RESPONSE}" = true ] || ( echo "The operation was canceled." && exit 1 )
else
echo ">> $1 [y/N] ${AHOY_CONFIRM_RESPONSE}" \
&& if [ "${AHOY_CONFIRM_WAIT_SKIP}" != "1" ]; then echo "Waiting for 3 seconds... Press Ctrl+C to cancel."; sleep 3; fi
fi
hide: true
# Override entrypoint to alter default behaviour of Ahoy.
entrypoint:
- bash
- -c
# Exit the script if any statement returns a non-true return value.
- -e
# Read variables from .env file, respecting existing values.
# - Used to load and pass updated environment variables' values into already
# running containers.
# - Use `ahoy up cli` in cases when changes require container restart.
- |
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}}'