version: '3' tasks: composer: desc: Install composer dependencies summary: | Runs composer install with the COMPOSER_NO_DEV environment variable to control whether dev dependencies are included. Set COMPOSER_NO_DEV=1 for production builds (no dev dependencies). Set COMPOSER_NO_DEV=0 for development builds (includes dev dependencies). When not set, composer uses its default behavior (dev dependencies included) and the status check only verifies that dependencies are installed. See https://getcomposer.org/doc/03-cli.md#composer-no-dev cmds: - | export COMPOSER_NO_DEV={{.COMPOSER_NO_DEV}} composer install --optimize-autoloader sources: - composer.json - composer.lock generates: - ./vendor/composer/installed.json - ./vendor/autoload.php status: - > {{if eq .COMPOSER_NO_DEV "1"}} test -f ./vendor/composer/installed.json && grep -q '"dev": false' ./vendor/composer/installed.json {{else if eq .COMPOSER_NO_DEV "0"}} test -f ./vendor/composer/installed.json && grep -q '"dev": true' ./vendor/composer/installed.json {{else}} test -f ./vendor/composer/installed.json {{end}} composer:development: desc: "Install composer dependencies (alias for composer with COMPOSER_NO_DEV=0)" cmds: - task: composer vars: COMPOSER_NO_DEV: "0" composer:production: desc: "Install composer dependencies without devDependencies (alias for composer with COMPOSER_NO_DEV=1)" cmds: - task: composer vars: COMPOSER_NO_DEV: "1" install: desc: "Runs the site installer" cmds: - ./vendor/bin/drush --yes site:install --existing-config {{.CLI_ARGS}} import-db: desc: "Imports a database fetched with a *:fetch-db command" env: DB_DIR: '{{default "/var/www/html/files/db" .DB_DIR}}' cmds: - echo "🚮 Dropping existing database" - ./vendor/bin/drush {{ .site }} sql:drop --yes - echo "📰 Importing database" - gunzip --keep --force $DB_DIR/db.sql.gz - ./vendor/bin/drush {{ .site }} sql:query --file=$DB_DIR/db.sql - defer: rm -f $DB_DIR/db.sql export-db: desc: "Exports a database fetched with a *:fetch-db command" env: DB_DIR: '{{default "/var/www/html/files/db" .DB_DIR}}' cmds: - echo "➡ Exporting database" - ./vendor/bin/drush {{.site }} sql:dump --gzip --result-file=$DB_DIR/db.sql update: desc: Run Drupal update tasks after deploying new code deps: [composer] cmds: # See https://www.drush.org/12.x/deploycommand/ # See https://architecture.lullabot.com/adr/20260313-drupal-build-steps/ - ./vendor/bin/drush {{.site}} --yes deploy - | # drush config:status --format=json is outputting notices in Pantheon even with the json format, # so we need to tail the last line. config_status_output=$(./vendor/bin/drush {{.site}} config:status --format=json --state=Different | tail -n1) if [[ $config_status_output != '[]' ]]; then echo "Config export does not match database." ./vendor/bin/drush {{.site}} config:status exit 1; fi maintenance:on: desc: Turn on Maintenance Mode cmds: - ./vendor/bin/drush {{.site}} --yes state:set system.maintenance_mode 1 --input-format=integer maintenance:off: desc: Turn off Maintenance Mode cmds: - ./vendor/bin/drush {{.site}} --yes state:set system.maintenance_mode 0 --input-format=integer - ./vendor/bin/drush {{.site}} --yes cache:rebuild