|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +# directory of this script |
| 4 | +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" |
| 5 | + |
| 6 | +if [ -d ${DIR}/../vendor/solutiondrive/sd-test-environment-shopware ]; then |
| 7 | + PACKAGE_DIR="$( dirname "${DIR}" )"/vendor/solutiondrive/sd-test-environment-shopware |
| 8 | +elif [ -d ${DIR}/../solutiondrive/sd-test-environment-shopware ]; then |
| 9 | + PACKAGE_DIR="$( cd "$( dirname "${DIR}" )"/solutiondrive/sd-test-environment-shopware && pwd )" |
| 10 | +elif [ -d ${DIR}/../../../solutiondrive/sd-test-environment-shopware ]; then |
| 11 | + PACKAGE_DIR="$( dirname "${DIR}" )" |
| 12 | +fi |
| 13 | + |
| 14 | +if [ "$PACKAGE_DIR" == "" ]; then |
| 15 | + echo "Could not find package directory! For testing purposes we will use '.'" |
| 16 | + PACKAGE_DIR=. |
| 17 | +fi |
| 18 | + |
| 19 | +if [ ! -d ${PACKAGE_DIR} ]; then |
| 20 | + echo "Could not find package directory of sd-test-environment-shopware. Did you move the bin directory?" |
| 21 | + exit 1 |
| 22 | +fi |
| 23 | + |
| 24 | +export PROJECT_DIR="$( dirname $( dirname $( dirname "${PACKAGE_DIR}") ) )" |
| 25 | +export PACKAGE_DIR="${PACKAGE_DIR}" |
| 26 | +export PROJECT_NAME="$( basename ${PROJECT_DIR} | tr '[:upper:]' '[:lower:]' )" |
| 27 | +export DOCKER_COMPOSE_YAML=${PROJECT_DIR}"/etc/test/docker-compose.yml" |
| 28 | + |
| 29 | +if [ "$1" != "init" ]; then |
| 30 | + source ${PACKAGE_DIR}/etc/scripts/checkSdTestEnvironment.sh |
| 31 | +fi |
| 32 | + |
| 33 | + |
| 34 | +function prepare { |
| 35 | + if [ "$PROJECT_NAME" == "." ]; then |
| 36 | + echo "PROJECT_NAME cannot be '.' only. Setting it to 'testenvironmentshopware'" |
| 37 | + export PROJECT_NAME=testenvironmentshopware |
| 38 | + fi |
| 39 | +} |
| 40 | + |
| 41 | +function echo_configuration { |
| 42 | + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" |
| 43 | + echo "Running (web)server on ports:" |
| 44 | + echo "PHP 7.2: 10872" |
| 45 | + echo "PHP 7.1: 10871" |
| 46 | + echo "PHP 7.0: 10870" |
| 47 | + echo "PHP 5.6: 10856" |
| 48 | + echo "MySQL: 10331" |
| 49 | + echo "" |
| 50 | + echo "PROJECT_DIR: ${PROJECT_DIR}" |
| 51 | + echo "PROJECT_NAME: ${PROJECT_NAME}" |
| 52 | + echo "PACKAGE_DIR: ${PACKAGE_DIR}" |
| 53 | + echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" |
| 54 | +} |
| 55 | + |
| 56 | +function init_environment { |
| 57 | + echo "Prepare directories" |
| 58 | + mkdir -p ${PROJECT_DIR}/etc/test |
| 59 | + mkdir -p ${PROJECT_DIR}/etc/test/nginx |
| 60 | + mkdir -p ${PROJECT_DIR}/etc/test/nginx/conf.d |
| 61 | + mkdir -p ${PROJECT_DIR}/etc/test/php |
| 62 | + |
| 63 | + echo "Copying testing README" |
| 64 | + cp ${PACKAGE_DIR}/README.md ${PROJECT_DIR}/README.TESTING.md |
| 65 | + |
| 66 | + echo "Copying docker-compose.yml to be able to easily modify it for special needs" |
| 67 | + cp ${PACKAGE_DIR}/docker-compose.yml ${PROJECT_DIR}/etc/test/docker-compose.yml |
| 68 | + |
| 69 | + echo "Copying config files to be able to easily modify it for special needs" |
| 70 | + cp ${PACKAGE_DIR}/php/* ${PROJECT_DIR}/etc/test/php |
| 71 | + cp -R ${PACKAGE_DIR}/nginx/* ${PROJECT_DIR}/etc/test/nginx |
| 72 | + |
| 73 | + echo "You can find additional information in the testing README, see 'README.TESTING.md'" |
| 74 | +} |
| 75 | + |
| 76 | +function build_container { |
| 77 | + prepare |
| 78 | + docker_compose_cmd build $@ |
| 79 | +} |
| 80 | + |
| 81 | +function run_container { |
| 82 | + prepare |
| 83 | + echo_configuration |
| 84 | + docker_compose_cmd up $@ |
| 85 | +} |
| 86 | + |
| 87 | +function start_container { |
| 88 | + prepare |
| 89 | + echo_configuration |
| 90 | + docker_compose_cmd up --no-start $@ |
| 91 | + docker_compose_cmd start $@ |
| 92 | +} |
| 93 | + |
| 94 | +function stop_container { |
| 95 | + docker_compose_cmd stop $@ |
| 96 | +} |
| 97 | + |
| 98 | +function restart_container { |
| 99 | + stop_container $@ |
| 100 | + start_container $@ |
| 101 | +} |
| 102 | + |
| 103 | + |
| 104 | +function remove_container { |
| 105 | + docker_compose_cmd down -v |
| 106 | + docker_compose_cmd rm -v $@ |
| 107 | +} |
| 108 | + |
| 109 | +function get_logs { |
| 110 | + docker_compose_cmd logs $@ |
| 111 | +} |
| 112 | + |
| 113 | +function reset_container { |
| 114 | + remove_container -s -f $@ |
| 115 | + start_container $@ |
| 116 | +} |
| 117 | + |
| 118 | +function docker_compose_cmd { |
| 119 | + docker-compose \ |
| 120 | + -f ${DOCKER_COMPOSE_YAML} \ |
| 121 | + -p ${PROJECT_NAME} \ |
| 122 | + $@ |
| 123 | +} |
| 124 | + |
| 125 | + |
| 126 | +## start of the real program |
| 127 | + |
| 128 | +export PROJECT_DIR |
| 129 | +export PROJECT_NAME |
| 130 | + |
| 131 | +case "$1" in |
| 132 | + init) |
| 133 | + shift |
| 134 | + init_environment $@ |
| 135 | + ;; |
| 136 | + build) |
| 137 | + shift |
| 138 | + build_container $@ |
| 139 | + ;; |
| 140 | + run) |
| 141 | + shift |
| 142 | + run_container $@ |
| 143 | + ;; |
| 144 | + start) |
| 145 | + shift |
| 146 | + start_container $@ |
| 147 | + ;; |
| 148 | + stop) |
| 149 | + shift |
| 150 | + stop_container $@ |
| 151 | + ;; |
| 152 | + restart) |
| 153 | + shift |
| 154 | + restart_container $@ |
| 155 | + ;; |
| 156 | + reset) |
| 157 | + shift |
| 158 | + reset_container $@ |
| 159 | + ;; |
| 160 | + remove|rm) |
| 161 | + shift |
| 162 | + remove_container $@ |
| 163 | + ;; |
| 164 | + log|logs) |
| 165 | + shift |
| 166 | + get_logs $@ |
| 167 | + ;; |
| 168 | + *) |
| 169 | + echo "usage: init/start/stop/run/restart/build/reset/remove/logs" |
| 170 | + ;; |
| 171 | +esac |
0 commit comments