130 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/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 <task> [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
 |