#!/usr/bin/env bash
# function to wrap text in green
function wrap_in_green() {
echo -e "\e[32m$1\e[0m"
}
# function to wrap text in yellow
function wrap_in_yellow() {
echo -e "\e[33m$1\e[0m"
}
# function to display usage
function show_usage() {
wrap_in_green "==================================="
wrap_in_green " Transfer Object (Docker SDK) "
wrap_in_green "==================================="
echo -e "Usage: $(wrap_in_yellow "$0 [-x | -xp] <argument>")"
echo "Arguments:"
echo -e " $(wrap_in_yellow "-x") Enable Xdebug with coverage and debug mode on start"
echo -e " $(wrap_in_yellow "-p") Enable Xdebug with profiler mode on start"
echo -e " $(wrap_in_yellow "build") Build Docker containers"
echo -e " $(wrap_in_yellow "start") Start Docker containers"
echo -e " $(wrap_in_yellow "stop") Stop Docker containers"
echo -e " $(wrap_in_yellow "cli") Open container shell"
echo -e " $(wrap_in_yellow "composer <command>") Run composer command"
echo -e " $(wrap_in_yellow "phpstan") Run PHPStan"
echo -e " $(wrap_in_yellow "phpunit") Run PHPUnit"
echo -e " $(wrap_in_yellow "phpcs") Run PHP CodeSniffer"
echo -e " $(wrap_in_yellow "phpcbf") Run PHP Code Beautifier and Fixer"
echo -e " $(wrap_in_yellow "hook-install") Install CaptainHook"
echo -e " $(wrap_in_yellow "hook <command>") Run CaptainHook command"
echo -e " $(wrap_in_yellow "to-generate") Generate internal transfer objects"
echo -e " $(wrap_in_yellow "df-generate") Generate definition"
}
# vars
DOCKER_CONTAINER_NAME=transfer-object-php
DOCKER_EXEC="docker exec -it ${DOCKER_CONTAINER_NAME}"
# options
XDEBUG_MODE=''
while getopts ":xp" opt; do
case ${opt} in
x )
XDEBUG_MODE="debug,coverage"
;;
p )
XDEBUG_MODE="profile"
;;
\? )
show_usage
exit 1
;;
esac
done
shift $((OPTIND -1))
# arguments
case $1 in
build)
docker compose build
;;
start)
if [ "$XDEBUG_MODE" == "" ]; then
docker compose up -d --remove-orphans
else
XDEBUG_MODE={$XDEBUG_MODE} docker compose up -d --remove-orphans
fi
;;
stop)
docker compose stop
;;
cli)
$DOCKER_EXEC bash
;;
composer)
if [ -n "$3" ]; then
$DOCKER_EXEC composer "$2" "$3"
else
$DOCKER_EXEC composer "$2"
fi
;;
phpstan)
$DOCKER_EXEC composer phpstan
;;
phpunit)
$DOCKER_EXEC composer phpunit
;;
phpcs)
$DOCKER_EXEC composer phpcs
;;
phpcbf)
$DOCKER_EXEC composer phpcbf
;;
hook-install)
$DOCKER_EXEC composer captainhook install --only-enabled --run-mode=docker --run-exec="docker exec -i $DOCKER_CONTAINER_NAME"
;;
hook)
$DOCKER_EXEC composer captainhook $2
;;
to-generate)
$DOCKER_EXEC composer transfer-generate -- -c ./config/generator.config.yml -v
;;
df-generate)
$DOCKER_EXEC composer definition-generate
;;
*)
show_usage
exit 0
;;
esac
|