diff --git a/.vortex/docs/.utils/variables/extra/acquia.variables.sh b/.vortex/docs/.utils/variables/extra/acquia.variables.sh
index ec9ff8a93..30dcee174 100755
--- a/.vortex/docs/.utils/variables/extra/acquia.variables.sh
+++ b/.vortex/docs/.utils/variables/extra/acquia.variables.sh
@@ -15,6 +15,9 @@ VORTEX_PURGE_CACHE_ACQUIA_SKIP=
# Skip Drupal site provisioning in Acquia environment.
VORTEX_PROVISION_ACQUIA_SKIP=
+# Skip sending of deployment notifications in Acquia environment.
+VORTEX_NOTIFY_ACQUIA_SKIP=
+
# NewRelic API key, usually of type 'USER'.
#
# @see https://www.vortextemplate.com/docs/deployment/notifications/newrelic
diff --git a/.vortex/docs/content/development/variables.mdx b/.vortex/docs/content/development/variables.mdx
index 90560aa08..d6b3124f0 100644
--- a/.vortex/docs/content/development/variables.mdx
+++ b/.vortex/docs/content/development/variables.mdx
@@ -322,6 +322,7 @@ The list below is automatically generated with [Shellvar](https://github.com/ale
| `VORTEX_LOGIN_CONTAINER_REGISTRY_USER` | The username to login into the container registry.
If not provided, the script will skip the login step. | `${VORTEX_CONTAINER_REGISTRY_USER}` | `.vortex/tooling/src/vortex-login-container-registry` |
| `VORTEX_LOGIN_UNBLOCK_ADMIN` | Flag to unblock admin. | `1` | `.vortex/tooling/src/vortex-login` |
| `VORTEX_LOGOUT_BLOCK_ADMIN` | Flag to block or unblock admin. | `1` | `.vortex/tooling/src/vortex-logout` |
+| `VORTEX_NOTIFY_ACQUIA_SKIP` | Skip sending of deployment notifications in Acquia environment. | `UNDEFINED` | `ACQUIA ENVIRONMENT` |
| `VORTEX_NOTIFY_BRANCH` | Notification git branch name. | `UNDEFINED` | `.vortex/tooling/src/vortex-notify` |
| `VORTEX_NOTIFY_CHANNELS` | The channels of the notifications.
A combination of comma-separated values: email,slack,newrelic,github,jira,webhook,diffy | `email` | `.env`, `.vortex/tooling/src/vortex-notify` |
| `VORTEX_NOTIFY_DIFFY_BRANCH` | Diffy notification git branch name. | `${VORTEX_NOTIFY_BRANCH}` | `.vortex/tooling/src/vortex-notify-diffy` |
diff --git a/.vortex/docs/content/hosting/acquia.mdx b/.vortex/docs/content/hosting/acquia.mdx
index b5be36a41..152aa70b1 100644
--- a/.vortex/docs/content/hosting/acquia.mdx
+++ b/.vortex/docs/content/hosting/acquia.mdx
@@ -43,6 +43,20 @@ pre-configured scripts in the [`hooks/`](https://github.com/drevops/vortex/tree/
directory that trigger on code deployments, code updates, and database copy
operations.
+Each hook is turned off by setting its skip variable to `1` in the Acquia UI:
+
+| Hook | Variable |
+|------------------------|--------------------------------------|
+| `provision.sh` | `VORTEX_PROVISION_ACQUIA_SKIP` |
+| `purge-cache.sh` | `VORTEX_PURGE_CACHE_ACQUIA_SKIP` |
+| `notify-deployment.sh` | `VORTEX_NOTIFY_ACQUIA_SKIP` |
+| `copy-db.sh` | `VORTEX_TASK_COPY_DB_ACQUIA_SKIP` |
+| `copy-files.sh` | `VORTEX_TASK_COPY_FILES_ACQUIA_SKIP` |
+
+A hook stops with an error when a value it requires is unset or empty, so a
+blank field in the Acquia UI aborts the hook rather than running it with a
+missing value.
+
### Environment detection
**Vortex** automatically detects when running on Acquia and loads appropriate
diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-db.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-db.sh
index 807bbf357..bf52a5e0d 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-db.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-db.sh
@@ -4,23 +4,23 @@
#
# Environment variables must be set in Acquia UI globally or for each environment.
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
-pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
-
-[ "${VORTEX_TASK_COPY_DB_ACQUIA_SKIP}" = "1" ] && echo "Skipping copying of database between Acquia environments." && exit 0
+[ "${VORTEX_TASK_COPY_DB_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping copying of database between Acquia environments." && exit 0
export VORTEX_PLATFORM=acquia
-export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}"
-export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}"
+export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}"
+export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}"
export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}"
export VORTEX_TASK_COPY_DB_ACQUIA_SRC="${VORTEX_TASK_COPY_DB_ACQUIA_SRC:-prod}"
export VORTEX_TASK_COPY_DB_ACQUIA_DST="${VORTEX_TASK_COPY_DB_ACQUIA_DST:-${target_env}}"
-export VORTEX_TASK_COPY_DB_ACQUIA_NAME="${VORTEX_TASK_COPY_DB_ACQUIA_NAME?not set}"
+export VORTEX_TASK_COPY_DB_ACQUIA_NAME="${VORTEX_TASK_COPY_DB_ACQUIA_NAME:?Missing required value.}"
+
+pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
./vendor/bin/vortex-task copy-db
diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-files.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-files.sh
index 8b76bc55e..b2f176078 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-files.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/copy-files.sh
@@ -4,23 +4,23 @@
#
# Environment variables must be set in Acquia UI globally or for each environment.
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
-pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
-
-[ "${VORTEX_TASK_COPY_FILES_ACQUIA_SKIP}" = "1" ] && echo "Skipping copying of files between Acquia environments." && exit 0
+[ "${VORTEX_TASK_COPY_FILES_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping copying of files between Acquia environments." && exit 0
export VORTEX_PLATFORM=acquia
-export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}"
-export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}"
+export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}"
+export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}"
export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}"
export VORTEX_TASK_COPY_FILES_ACQUIA_SRC="${VORTEX_TASK_COPY_FILES_ACQUIA_SRC:-prod}"
export VORTEX_TASK_COPY_FILES_ACQUIA_DST="${VORTEX_TASK_COPY_FILES_ACQUIA_DST:-${target_env}}"
+pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
+
./vendor/bin/vortex-task copy-files
popd >/dev/null || exit 1
diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/notify-deployment.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/notify-deployment.sh
index b09e5f992..3590e0c7d 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/notify-deployment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/notify-deployment.sh
@@ -3,24 +3,24 @@
# Acquia Cloud hook: Send deployment notifications.
#
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
-branch="${3}"
-ref="${4}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
+branch="${3:?Missing required branch name.}"
+ref="${4:?Missing required commit reference.}"
+
+[ "${VORTEX_NOTIFY_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping sending of deployment notifications in Acquia environment." && exit 0
# Custom domain name for the environment, including subdomain.
# Examples: "dev.example.com", "test.example.com", "www.example.com"
VORTEX_NOTIFY_ENVIRONMENT_DOMAIN="${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN:-}"
-pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
-
-url="https://${AH_SITE_NAME}.${AH_REALM:-prod}.acquia-sites.com"
-
if [ -n "${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN}" ]; then
url="https://${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN}"
+else
+ url="https://${AH_SITE_NAME:?Missing required value.}.${AH_REALM:-prod}.acquia-sites.com"
fi
export VORTEX_NOTIFY_PROJECT="${site}"
@@ -30,6 +30,8 @@ export VORTEX_NOTIFY_PR_NUMBER=""
export VORTEX_NOTIFY_LABEL="${branch}"
export VORTEX_NOTIFY_ENVIRONMENT_URL="${url}"
+pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
+
./vendor/bin/vortex-notify
popd >/dev/null || exit 1
diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/provision.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/provision.sh
index b6766313e..634b0e6f6 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/provision.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/provision.sh
@@ -3,11 +3,13 @@
# Acquia Cloud hook: Provision site.
#
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
+
+[ "${VORTEX_PROVISION_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping provisioning of the site in Acquia environment." && exit 0
pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/purge-cache.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/purge-cache.sh
index 02931d6bd..f2537f599 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/purge-cache.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_acquia/hooks/library/purge-cache.sh
@@ -4,23 +4,23 @@
#
# Environment variables must be set in Acquia UI globally or for each environment.
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
-pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
-
-[ "${VORTEX_PURGE_CACHE_ACQUIA_SKIP}" = "1" ] && echo "Skipping purging of cache in Acquia environment." && exit 0
+[ "${VORTEX_PURGE_CACHE_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping purging of cache in Acquia environment." && exit 0
export VORTEX_PLATFORM=acquia
-export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}"
-export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}"
+export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}"
+export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}"
export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}"
export VORTEX_TASK_PURGE_CACHE_ACQUIA_ENV="${VORTEX_TASK_PURGE_CACHE_ACQUIA_ENV:-${target_env}}"
export VORTEX_TASK_PURGE_CACHE_ACQUIA_DOMAINS_FILE="${VORTEX_TASK_PURGE_CACHE_ACQUIA_DOMAINS_FILE:-"/var/www/html/${site}.${target_env}/hooks/library/domains.txt"}"
+pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
+
./vendor/bin/vortex-task purge-cache
popd >/dev/null || exit 1
diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-db.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-db.sh
index 807bbf357..bf52a5e0d 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-db.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-db.sh
@@ -4,23 +4,23 @@
#
# Environment variables must be set in Acquia UI globally or for each environment.
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
-pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
-
-[ "${VORTEX_TASK_COPY_DB_ACQUIA_SKIP}" = "1" ] && echo "Skipping copying of database between Acquia environments." && exit 0
+[ "${VORTEX_TASK_COPY_DB_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping copying of database between Acquia environments." && exit 0
export VORTEX_PLATFORM=acquia
-export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}"
-export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}"
+export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}"
+export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}"
export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}"
export VORTEX_TASK_COPY_DB_ACQUIA_SRC="${VORTEX_TASK_COPY_DB_ACQUIA_SRC:-prod}"
export VORTEX_TASK_COPY_DB_ACQUIA_DST="${VORTEX_TASK_COPY_DB_ACQUIA_DST:-${target_env}}"
-export VORTEX_TASK_COPY_DB_ACQUIA_NAME="${VORTEX_TASK_COPY_DB_ACQUIA_NAME?not set}"
+export VORTEX_TASK_COPY_DB_ACQUIA_NAME="${VORTEX_TASK_COPY_DB_ACQUIA_NAME:?Missing required value.}"
+
+pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
./vendor/bin/vortex-task copy-db
diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-files.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-files.sh
index 8b76bc55e..b2f176078 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-files.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/copy-files.sh
@@ -4,23 +4,23 @@
#
# Environment variables must be set in Acquia UI globally or for each environment.
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
-pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
-
-[ "${VORTEX_TASK_COPY_FILES_ACQUIA_SKIP}" = "1" ] && echo "Skipping copying of files between Acquia environments." && exit 0
+[ "${VORTEX_TASK_COPY_FILES_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping copying of files between Acquia environments." && exit 0
export VORTEX_PLATFORM=acquia
-export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}"
-export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}"
+export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}"
+export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}"
export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}"
export VORTEX_TASK_COPY_FILES_ACQUIA_SRC="${VORTEX_TASK_COPY_FILES_ACQUIA_SRC:-prod}"
export VORTEX_TASK_COPY_FILES_ACQUIA_DST="${VORTEX_TASK_COPY_FILES_ACQUIA_DST:-${target_env}}"
+pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
+
./vendor/bin/vortex-task copy-files
popd >/dev/null || exit 1
diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/notify-deployment.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/notify-deployment.sh
index b09e5f992..3590e0c7d 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/notify-deployment.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/notify-deployment.sh
@@ -3,24 +3,24 @@
# Acquia Cloud hook: Send deployment notifications.
#
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
-branch="${3}"
-ref="${4}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
+branch="${3:?Missing required branch name.}"
+ref="${4:?Missing required commit reference.}"
+
+[ "${VORTEX_NOTIFY_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping sending of deployment notifications in Acquia environment." && exit 0
# Custom domain name for the environment, including subdomain.
# Examples: "dev.example.com", "test.example.com", "www.example.com"
VORTEX_NOTIFY_ENVIRONMENT_DOMAIN="${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN:-}"
-pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
-
-url="https://${AH_SITE_NAME}.${AH_REALM:-prod}.acquia-sites.com"
-
if [ -n "${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN}" ]; then
url="https://${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN}"
+else
+ url="https://${AH_SITE_NAME:?Missing required value.}.${AH_REALM:-prod}.acquia-sites.com"
fi
export VORTEX_NOTIFY_PROJECT="${site}"
@@ -30,6 +30,8 @@ export VORTEX_NOTIFY_PR_NUMBER=""
export VORTEX_NOTIFY_LABEL="${branch}"
export VORTEX_NOTIFY_ENVIRONMENT_URL="${url}"
+pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
+
./vendor/bin/vortex-notify
popd >/dev/null || exit 1
diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/provision.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/provision.sh
index b6766313e..634b0e6f6 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/provision.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/provision.sh
@@ -3,11 +3,13 @@
# Acquia Cloud hook: Provision site.
#
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
+
+[ "${VORTEX_PROVISION_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping provisioning of the site in Acquia environment." && exit 0
pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
diff --git a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/purge-cache.sh b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/purge-cache.sh
index 02931d6bd..f2537f599 100755
--- a/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/purge-cache.sh
+++ b/.vortex/installer/tests/Fixtures/handler_process/hosting_project_name___acquia/hooks/library/purge-cache.sh
@@ -4,23 +4,23 @@
#
# Environment variables must be set in Acquia UI globally or for each environment.
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
-pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
-
-[ "${VORTEX_PURGE_CACHE_ACQUIA_SKIP}" = "1" ] && echo "Skipping purging of cache in Acquia environment." && exit 0
+[ "${VORTEX_PURGE_CACHE_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping purging of cache in Acquia environment." && exit 0
export VORTEX_PLATFORM=acquia
-export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}"
-export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}"
+export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}"
+export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}"
export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}"
export VORTEX_TASK_PURGE_CACHE_ACQUIA_ENV="${VORTEX_TASK_PURGE_CACHE_ACQUIA_ENV:-${target_env}}"
export VORTEX_TASK_PURGE_CACHE_ACQUIA_DOMAINS_FILE="${VORTEX_TASK_PURGE_CACHE_ACQUIA_DOMAINS_FILE:-"/var/www/html/${site}.${target_env}/hooks/library/domains.txt"}"
+pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
+
./vendor/bin/vortex-task purge-cache
popd >/dev/null || exit 1
diff --git a/.vortex/tooling/tests/unit/hook-copy-db.bats b/.vortex/tooling/tests/unit/hook-copy-db.bats
new file mode 100644
index 000000000..9385b39b5
--- /dev/null
+++ b/.vortex/tooling/tests/unit/hook-copy-db.bats
@@ -0,0 +1,169 @@
+#!/usr/bin/env bats
+##
+# Unit tests for the Acquia database copy hook.
+#
+# A run ends in a 'pushd' into the Acquia site directory, which no test host
+# has, so these tests cover the arguments, the skip flag and the required value
+# guards that run before it.
+#
+# shellcheck disable=SC2030,SC2031,SC2034
+
+load ../_helper.bash
+
+# Exports the values a run requires so that a test can invalidate exactly one.
+fixture_variables() {
+ unset VORTEX_TASK_COPY_DB_ACQUIA_SKIP
+ export VORTEX_ACQUIA_KEY="test-key"
+ export VORTEX_ACQUIA_SECRET="test-secret"
+ export VORTEX_TASK_COPY_DB_ACQUIA_NAME="test-db"
+}
+
+# Runs the hook and asserts that a guard stopped it.
+#
+# Arguments:
+# 1. name: Variable the guard reports.
+assert_guard() {
+ run ./hooks/library/copy-db.sh star_wars dev
+ assert_failure
+ assert_output_contains "${1}: Missing required value."
+}
+
+@test "hook-copy-db: missing site argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/copy-db.sh
+ assert_failure
+ assert_output_contains "Missing required site name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-db: empty site argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/copy-db.sh "" dev
+ assert_failure
+ assert_output_contains "Missing required site name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-db: missing target environment argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/copy-db.sh star_wars
+ assert_failure
+ assert_output_contains "Missing required target environment name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-db: empty target environment argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/copy-db.sh star_wars ""
+ assert_failure
+ assert_output_contains "Missing required target environment name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-db: skip" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_TASK_COPY_DB_ACQUIA_SKIP=1
+
+ run ./hooks/library/copy-db.sh star_wars dev
+ assert_success
+ assert_output_contains "Skipping copying of database between Acquia environments."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-db: skip flag other than 1" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_TASK_COPY_DB_ACQUIA_SKIP=0
+
+ run ./hooks/library/copy-db.sh star_wars dev
+ assert_failure
+ assert_output_not_contains "Skipping copying of database between Acquia environments."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-db: unset key" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ unset VORTEX_ACQUIA_KEY
+
+ assert_guard "VORTEX_ACQUIA_KEY"
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-db: empty key" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_ACQUIA_KEY=""
+
+ assert_guard "VORTEX_ACQUIA_KEY"
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-db: unset secret" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ unset VORTEX_ACQUIA_SECRET
+
+ assert_guard "VORTEX_ACQUIA_SECRET"
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-db: empty secret" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_ACQUIA_SECRET=""
+
+ assert_guard "VORTEX_ACQUIA_SECRET"
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-db: unset database name" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ unset VORTEX_TASK_COPY_DB_ACQUIA_NAME
+
+ assert_guard "VORTEX_TASK_COPY_DB_ACQUIA_NAME"
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-db: empty database name" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_TASK_COPY_DB_ACQUIA_NAME=""
+
+ assert_guard "VORTEX_TASK_COPY_DB_ACQUIA_NAME"
+
+ popd >/dev/null || exit 1
+}
diff --git a/.vortex/tooling/tests/unit/hook-copy-files.bats b/.vortex/tooling/tests/unit/hook-copy-files.bats
new file mode 100644
index 000000000..de17184b1
--- /dev/null
+++ b/.vortex/tooling/tests/unit/hook-copy-files.bats
@@ -0,0 +1,146 @@
+#!/usr/bin/env bats
+##
+# Unit tests for the Acquia file copy hook.
+#
+# A run ends in a 'pushd' into the Acquia site directory, which no test host
+# has, so these tests cover the arguments, the skip flag and the required value
+# guards that run before it.
+#
+# shellcheck disable=SC2030,SC2031,SC2034
+
+load ../_helper.bash
+
+# Exports the values a run requires so that a test can invalidate exactly one.
+fixture_variables() {
+ unset VORTEX_TASK_COPY_FILES_ACQUIA_SKIP
+ export VORTEX_ACQUIA_KEY="test-key"
+ export VORTEX_ACQUIA_SECRET="test-secret"
+}
+
+# Runs the hook and asserts that a guard stopped it.
+#
+# Arguments:
+# 1. name: Variable the guard reports.
+assert_guard() {
+ run ./hooks/library/copy-files.sh star_wars dev
+ assert_failure
+ assert_output_contains "${1}: Missing required value."
+}
+
+@test "hook-copy-files: missing site argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/copy-files.sh
+ assert_failure
+ assert_output_contains "Missing required site name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-files: empty site argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/copy-files.sh "" dev
+ assert_failure
+ assert_output_contains "Missing required site name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-files: missing target environment argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/copy-files.sh star_wars
+ assert_failure
+ assert_output_contains "Missing required target environment name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-files: empty target environment argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/copy-files.sh star_wars ""
+ assert_failure
+ assert_output_contains "Missing required target environment name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-files: skip" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_TASK_COPY_FILES_ACQUIA_SKIP=1
+
+ run ./hooks/library/copy-files.sh star_wars dev
+ assert_success
+ assert_output_contains "Skipping copying of files between Acquia environments."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-files: skip flag other than 1" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_TASK_COPY_FILES_ACQUIA_SKIP=0
+
+ run ./hooks/library/copy-files.sh star_wars dev
+ assert_failure
+ assert_output_not_contains "Skipping copying of files between Acquia environments."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-files: unset key" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ unset VORTEX_ACQUIA_KEY
+
+ assert_guard "VORTEX_ACQUIA_KEY"
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-files: empty key" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_ACQUIA_KEY=""
+
+ assert_guard "VORTEX_ACQUIA_KEY"
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-files: unset secret" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ unset VORTEX_ACQUIA_SECRET
+
+ assert_guard "VORTEX_ACQUIA_SECRET"
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-copy-files: empty secret" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_ACQUIA_SECRET=""
+
+ assert_guard "VORTEX_ACQUIA_SECRET"
+
+ popd >/dev/null || exit 1
+}
diff --git a/.vortex/tooling/tests/unit/hook-notify-deployment.bats b/.vortex/tooling/tests/unit/hook-notify-deployment.bats
new file mode 100644
index 000000000..ac7bcd455
--- /dev/null
+++ b/.vortex/tooling/tests/unit/hook-notify-deployment.bats
@@ -0,0 +1,180 @@
+#!/usr/bin/env bats
+##
+# Unit tests for the Acquia deployment notification hook.
+#
+# A run ends in a 'pushd' into the Acquia site directory, which no test host
+# has, so these tests cover the arguments, the skip flag and the environment URL
+# assembly that run before it.
+#
+# shellcheck disable=SC2030,SC2031,SC2034
+
+load ../_helper.bash
+
+# Exports the values a run requires so that a test can invalidate exactly one.
+fixture_variables() {
+ unset VORTEX_NOTIFY_ACQUIA_SKIP
+ unset VORTEX_NOTIFY_ENVIRONMENT_DOMAIN
+ export AH_SITE_NAME="test-site"
+}
+
+@test "hook-notify-deployment: missing site argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/notify-deployment.sh
+ assert_failure
+ assert_output_contains "Missing required site name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-notify-deployment: empty site argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/notify-deployment.sh "" dev main abc123
+ assert_failure
+ assert_output_contains "Missing required site name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-notify-deployment: missing target environment argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/notify-deployment.sh star_wars
+ assert_failure
+ assert_output_contains "Missing required target environment name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-notify-deployment: empty target environment argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/notify-deployment.sh star_wars "" main abc123
+ assert_failure
+ assert_output_contains "Missing required target environment name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-notify-deployment: missing branch argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/notify-deployment.sh star_wars dev
+ assert_failure
+ assert_output_contains "Missing required branch name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-notify-deployment: empty branch argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/notify-deployment.sh star_wars dev "" abc123
+ assert_failure
+ assert_output_contains "Missing required branch name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-notify-deployment: missing commit reference argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/notify-deployment.sh star_wars dev main
+ assert_failure
+ assert_output_contains "Missing required commit reference."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-notify-deployment: empty commit reference argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/notify-deployment.sh star_wars dev main ""
+ assert_failure
+ assert_output_contains "Missing required commit reference."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-notify-deployment: skip" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_NOTIFY_ACQUIA_SKIP=1
+
+ run ./hooks/library/notify-deployment.sh star_wars dev main abc123
+ assert_success
+ assert_output_contains "Skipping sending of deployment notifications in Acquia environment."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-notify-deployment: skip flag other than 1" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_NOTIFY_ACQUIA_SKIP=0
+
+ run ./hooks/library/notify-deployment.sh star_wars dev main abc123
+ assert_failure
+ assert_output_not_contains "Skipping sending of deployment notifications in Acquia environment."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-notify-deployment: unset site name" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ unset AH_SITE_NAME
+
+ run ./hooks/library/notify-deployment.sh star_wars dev main abc123
+ assert_failure
+ assert_output_contains "AH_SITE_NAME: Missing required value."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-notify-deployment: empty site name" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export AH_SITE_NAME=""
+
+ run ./hooks/library/notify-deployment.sh star_wars dev main abc123
+ assert_failure
+ assert_output_contains "AH_SITE_NAME: Missing required value."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-notify-deployment: domain override replaces the site name" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ unset AH_SITE_NAME
+ export VORTEX_NOTIFY_ENVIRONMENT_DOMAIN="www.example.com"
+
+ run ./hooks/library/notify-deployment.sh star_wars dev main abc123
+ assert_failure
+ assert_output_not_contains "AH_SITE_NAME: Missing required value."
+
+ popd >/dev/null || exit 1
+}
diff --git a/.vortex/tooling/tests/unit/hook-provision.bats b/.vortex/tooling/tests/unit/hook-provision.bats
new file mode 100644
index 000000000..1b7fd2bcb
--- /dev/null
+++ b/.vortex/tooling/tests/unit/hook-provision.bats
@@ -0,0 +1,89 @@
+#!/usr/bin/env bats
+##
+# Unit tests for the Acquia provision hook.
+#
+# A run ends in a 'pushd' into the Acquia site directory, which no test host
+# has, so these tests cover the arguments and the skip flag that run before it.
+#
+# shellcheck disable=SC2030,SC2031,SC2034
+
+load ../_helper.bash
+
+# Exports the values a run requires so that a test can invalidate exactly one.
+fixture_variables() {
+ unset VORTEX_PROVISION_ACQUIA_SKIP
+}
+
+@test "hook-provision: missing site argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/provision.sh
+ assert_failure
+ assert_output_contains "Missing required site name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-provision: empty site argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/provision.sh "" dev
+ assert_failure
+ assert_output_contains "Missing required site name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-provision: missing target environment argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/provision.sh star_wars
+ assert_failure
+ assert_output_contains "Missing required target environment name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-provision: empty target environment argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/provision.sh star_wars ""
+ assert_failure
+ assert_output_contains "Missing required target environment name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-provision: skip" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_PROVISION_ACQUIA_SKIP=1
+
+ run ./hooks/library/provision.sh star_wars dev
+ assert_success
+ assert_output_contains "Skipping provisioning of the site in Acquia environment."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-provision: skip flag other than 1" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_PROVISION_ACQUIA_SKIP=0
+
+ run ./hooks/library/provision.sh star_wars dev
+ assert_failure
+ assert_output_not_contains "Skipping provisioning of the site in Acquia environment."
+
+ popd >/dev/null || exit 1
+}
diff --git a/.vortex/tooling/tests/unit/hook-purge-cache.bats b/.vortex/tooling/tests/unit/hook-purge-cache.bats
new file mode 100644
index 000000000..08b86275a
--- /dev/null
+++ b/.vortex/tooling/tests/unit/hook-purge-cache.bats
@@ -0,0 +1,146 @@
+#!/usr/bin/env bats
+##
+# Unit tests for the Acquia cache purge hook.
+#
+# A run ends in a 'pushd' into the Acquia site directory, which no test host
+# has, so these tests cover the arguments, the skip flag and the required value
+# guards that run before it.
+#
+# shellcheck disable=SC2030,SC2031,SC2034
+
+load ../_helper.bash
+
+# Exports the values a run requires so that a test can invalidate exactly one.
+fixture_variables() {
+ unset VORTEX_PURGE_CACHE_ACQUIA_SKIP
+ export VORTEX_ACQUIA_KEY="test-key"
+ export VORTEX_ACQUIA_SECRET="test-secret"
+}
+
+# Runs the hook and asserts that a guard stopped it.
+#
+# Arguments:
+# 1. name: Variable the guard reports.
+assert_guard() {
+ run ./hooks/library/purge-cache.sh star_wars dev
+ assert_failure
+ assert_output_contains "${1}: Missing required value."
+}
+
+@test "hook-purge-cache: missing site argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/purge-cache.sh
+ assert_failure
+ assert_output_contains "Missing required site name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-purge-cache: empty site argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/purge-cache.sh "" dev
+ assert_failure
+ assert_output_contains "Missing required site name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-purge-cache: missing target environment argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/purge-cache.sh star_wars
+ assert_failure
+ assert_output_contains "Missing required target environment name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-purge-cache: empty target environment argument" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+
+ run ./hooks/library/purge-cache.sh star_wars ""
+ assert_failure
+ assert_output_contains "Missing required target environment name."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-purge-cache: skip" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_PURGE_CACHE_ACQUIA_SKIP=1
+
+ run ./hooks/library/purge-cache.sh star_wars dev
+ assert_success
+ assert_output_contains "Skipping purging of cache in Acquia environment."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-purge-cache: skip flag other than 1" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_PURGE_CACHE_ACQUIA_SKIP=0
+
+ run ./hooks/library/purge-cache.sh star_wars dev
+ assert_failure
+ assert_output_not_contains "Skipping purging of cache in Acquia environment."
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-purge-cache: unset key" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ unset VORTEX_ACQUIA_KEY
+
+ assert_guard "VORTEX_ACQUIA_KEY"
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-purge-cache: empty key" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_ACQUIA_KEY=""
+
+ assert_guard "VORTEX_ACQUIA_KEY"
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-purge-cache: unset secret" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ unset VORTEX_ACQUIA_SECRET
+
+ assert_guard "VORTEX_ACQUIA_SECRET"
+
+ popd >/dev/null || exit 1
+}
+
+@test "hook-purge-cache: empty secret" {
+ pushd "${LOCAL_REPO_DIR}" >/dev/null || exit 1
+
+ fixture_variables
+ export VORTEX_ACQUIA_SECRET=""
+
+ assert_guard "VORTEX_ACQUIA_SECRET"
+
+ popd >/dev/null || exit 1
+}
diff --git a/hooks/library/copy-db.sh b/hooks/library/copy-db.sh
index 807bbf357..bf52a5e0d 100755
--- a/hooks/library/copy-db.sh
+++ b/hooks/library/copy-db.sh
@@ -4,23 +4,23 @@
#
# Environment variables must be set in Acquia UI globally or for each environment.
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
-pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
-
-[ "${VORTEX_TASK_COPY_DB_ACQUIA_SKIP}" = "1" ] && echo "Skipping copying of database between Acquia environments." && exit 0
+[ "${VORTEX_TASK_COPY_DB_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping copying of database between Acquia environments." && exit 0
export VORTEX_PLATFORM=acquia
-export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}"
-export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}"
+export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}"
+export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}"
export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}"
export VORTEX_TASK_COPY_DB_ACQUIA_SRC="${VORTEX_TASK_COPY_DB_ACQUIA_SRC:-prod}"
export VORTEX_TASK_COPY_DB_ACQUIA_DST="${VORTEX_TASK_COPY_DB_ACQUIA_DST:-${target_env}}"
-export VORTEX_TASK_COPY_DB_ACQUIA_NAME="${VORTEX_TASK_COPY_DB_ACQUIA_NAME?not set}"
+export VORTEX_TASK_COPY_DB_ACQUIA_NAME="${VORTEX_TASK_COPY_DB_ACQUIA_NAME:?Missing required value.}"
+
+pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
./vendor/bin/vortex-task copy-db
diff --git a/hooks/library/copy-files.sh b/hooks/library/copy-files.sh
index 8b76bc55e..b2f176078 100755
--- a/hooks/library/copy-files.sh
+++ b/hooks/library/copy-files.sh
@@ -4,23 +4,23 @@
#
# Environment variables must be set in Acquia UI globally or for each environment.
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
-pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
-
-[ "${VORTEX_TASK_COPY_FILES_ACQUIA_SKIP}" = "1" ] && echo "Skipping copying of files between Acquia environments." && exit 0
+[ "${VORTEX_TASK_COPY_FILES_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping copying of files between Acquia environments." && exit 0
export VORTEX_PLATFORM=acquia
-export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}"
-export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}"
+export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}"
+export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}"
export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}"
export VORTEX_TASK_COPY_FILES_ACQUIA_SRC="${VORTEX_TASK_COPY_FILES_ACQUIA_SRC:-prod}"
export VORTEX_TASK_COPY_FILES_ACQUIA_DST="${VORTEX_TASK_COPY_FILES_ACQUIA_DST:-${target_env}}"
+pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
+
./vendor/bin/vortex-task copy-files
popd >/dev/null || exit 1
diff --git a/hooks/library/notify-deployment.sh b/hooks/library/notify-deployment.sh
index b09e5f992..3590e0c7d 100755
--- a/hooks/library/notify-deployment.sh
+++ b/hooks/library/notify-deployment.sh
@@ -3,24 +3,24 @@
# Acquia Cloud hook: Send deployment notifications.
#
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
-branch="${3}"
-ref="${4}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
+branch="${3:?Missing required branch name.}"
+ref="${4:?Missing required commit reference.}"
+
+[ "${VORTEX_NOTIFY_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping sending of deployment notifications in Acquia environment." && exit 0
# Custom domain name for the environment, including subdomain.
# Examples: "dev.example.com", "test.example.com", "www.example.com"
VORTEX_NOTIFY_ENVIRONMENT_DOMAIN="${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN:-}"
-pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
-
-url="https://${AH_SITE_NAME}.${AH_REALM:-prod}.acquia-sites.com"
-
if [ -n "${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN}" ]; then
url="https://${VORTEX_NOTIFY_ENVIRONMENT_DOMAIN}"
+else
+ url="https://${AH_SITE_NAME:?Missing required value.}.${AH_REALM:-prod}.acquia-sites.com"
fi
export VORTEX_NOTIFY_PROJECT="${site}"
@@ -30,6 +30,8 @@ export VORTEX_NOTIFY_PR_NUMBER=""
export VORTEX_NOTIFY_LABEL="${branch}"
export VORTEX_NOTIFY_ENVIRONMENT_URL="${url}"
+pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
+
./vendor/bin/vortex-notify
popd >/dev/null || exit 1
diff --git a/hooks/library/provision.sh b/hooks/library/provision.sh
index b6766313e..634b0e6f6 100755
--- a/hooks/library/provision.sh
+++ b/hooks/library/provision.sh
@@ -3,11 +3,13 @@
# Acquia Cloud hook: Provision site.
#
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
+
+[ "${VORTEX_PROVISION_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping provisioning of the site in Acquia environment." && exit 0
pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
diff --git a/hooks/library/purge-cache.sh b/hooks/library/purge-cache.sh
index 02931d6bd..f2537f599 100755
--- a/hooks/library/purge-cache.sh
+++ b/hooks/library/purge-cache.sh
@@ -4,23 +4,23 @@
#
# Environment variables must be set in Acquia UI globally or for each environment.
-set -e
+set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x
-site="${1}"
-target_env="${2}"
+site="${1:?Missing required site name.}"
+target_env="${2:?Missing required target environment name.}"
-pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
-
-[ "${VORTEX_PURGE_CACHE_ACQUIA_SKIP}" = "1" ] && echo "Skipping purging of cache in Acquia environment." && exit 0
+[ "${VORTEX_PURGE_CACHE_ACQUIA_SKIP:-}" = "1" ] && echo "Skipping purging of cache in Acquia environment." && exit 0
export VORTEX_PLATFORM=acquia
-export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY?not set}"
-export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET?not set}"
+export VORTEX_ACQUIA_KEY="${VORTEX_ACQUIA_KEY:?Missing required value.}"
+export VORTEX_ACQUIA_SECRET="${VORTEX_ACQUIA_SECRET:?Missing required value.}"
export VORTEX_ACQUIA_APP_NAME="${VORTEX_ACQUIA_APP_NAME:-${site}}"
export VORTEX_TASK_PURGE_CACHE_ACQUIA_ENV="${VORTEX_TASK_PURGE_CACHE_ACQUIA_ENV:-${target_env}}"
export VORTEX_TASK_PURGE_CACHE_ACQUIA_DOMAINS_FILE="${VORTEX_TASK_PURGE_CACHE_ACQUIA_DOMAINS_FILE:-"/var/www/html/${site}.${target_env}/hooks/library/domains.txt"}"
+pushd "/var/www/html/${site}.${target_env}" >/dev/null || exit 1
+
./vendor/bin/vortex-task purge-cache
popd >/dev/null || exit 1