#!/usr/bin/env bash # Do not edit this file. It is automatically generated by https://www.oliverdavies.uk/build-configs. set -o errexit set -o pipefail # If we're running in CI we need to disable TTY allocation for docker compose # commands that enable it by default, such as exec and run. TTY="${TTY:-}" if [[ ! -t 1 ]]; then TTY="-T" fi # Run automated tests as part of the Continuous Integration (CI) pipeline. function ci:test { lint:dockerfile docker compose version docker network create traefik_proxy || true cp --no-clobber .env.example .env || true docker compose build --progress plain docker compose up --detach docker compose logs composer install --quiet --no-progress } # Run a command within the php container. function cmd { docker compose exec php "${@}" } # Execute any Composer command. function composer { _exec php composer "${@}" } # Connect to the database. function db { [[ -f ".env" ]] && source .env docker compose exec database mysql -u"$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" } # Execute any Drush command. function drush { _exec php drush "${@}" } # Disable Git hooks. function git-hooks:off { git config --unset core.hooksPath } # Enable Git hooks. function git-hooks:on { git config core.hooksPath .githooks } # Display a list of all available commands. function help { printf "%s [args]\n\nTasks:\n" "${0}" compgen -A function | grep -v "^_" | cat -n printf "\nExtended help:\n Each task has comments for general usage\n" } # Install Drupal. function install { drush site:install -y "${@}" } # Lint the Dockerfile. function lint:dockerfile { docker container run --rm -i \ hadolint/hadolint hadolint --ignore DL3008 --ignore DL3022 --ignore DL3059 -t style "${@}" - < Dockerfile } # Start the project. function start { cp -v --no-clobber .env.example .env || true docker compose up -d } function stop { docker compose down } function test:commit { quality } function _exec { docker compose exec ${TTY} "${@}" } function _run { local service="${1}" local command="${2}" docker compose run \ --entrypoint "${command}" \ --no-deps \ --rm \ ${TTY} \ "${service}" "${@}" } # Include any local tasks. # https://stackoverflow.com/a/6659698 [[ -e "${BASH_SOURCE%/*}/run.local" ]] && source "${BASH_SOURCE%/*}/run.local" TIMEFORMAT=$'\nTask completed in %3lR' time "${@:-help}" # vim: ft=bash