#!/bin/bash set -eu TTY="" if [[ ! -t 1 ]]; then TTY="-T" fi DC="${DC:-exec}" function ci:build-images { services=(app) DOCKER_TAG="$1" docker-compose build "${services[@]}" DOCKER_TAG="latest" docker-compose build "${services[@]}" } function ci:push-images { services=(app) DOCKER_TAG="$1" docker-compose push "${services[@]}" DOCKER_TAG="latest" docker-compose push "${services[@]}" } function cmd { # Run any command in the app container. _dc app "${@}" } function composer { DC=run _dc --entrypoint composer app "${@}" } function deploy { cd tools/deployment ansible-playbook deploy.yml "${@}" } 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" } function lint:markdown { docker-compose run --rm markdownlint "${@}" } function run-production { DESTINATION_PATH="${2:-/var/www/oliverdavies.uk}" GIT_COMMIT_HASH="${1:-latest}" # Clean up any old containers or files within the artifact directory. rm -fr ${DESTINATION_PATH}/* || true docker image pull ghcr.io/opdavies/oliverdavies-uk-web:${GIT_COMMIT_HASH} docker container run \ --entrypoint sh \ --name oliverdavies-uk-web \ ghcr.io/opdavies/oliverdavies-uk-web:${GIT_COMMIT_HASH} docker container cp oliverdavies-uk-web:/code/. ${DESTINATION_PATH} docker container rm oliverdavies-uk-web } function sh { DC=run _dc --entrypoint sh app } function test:quality { DC=run _dc --entrypoint phpstan app "${@}" analyze --memory-limit=-1 } function test:unit { DC=run _dc --entrypoint phpunit app "${@}" } function yarn:build:css { # Build CSS assets, this is meant to be run from within the assets container. local args=() if [ "${SCULPIN_ENV}" == "prod" ]; then args=(--minify) elif [ "${NODE_ENV}" == "development" ]; then args=(--watch) fi tailwindcss --postcss -i assets/css/tailwind.pcss -o build/app.css "${args[@]}" } function yarn:build:js { # Build JS assets, this is meant to be run from within the assets container. node esbuild.config.js } function _dc { docker-compose ${DC} ${TTY} "${@}" } eval "${@:-help}"