diff --git a/docker-compose.adminer.yaml b/docker-compose.adminer.yaml index 00441fe..8628d36 100644 --- a/docker-compose.adminer.yaml +++ b/docker-compose.adminer.yaml @@ -27,11 +27,20 @@ services: - source: ddev-adminer.php target: /var/www/html/ddev-adminer.php mode: "0444" + - source: entrypoint.sh + target: /usr/local/bin/entrypoint.sh + mode: "0755" configs: ddev-adminer.php: content: | + + entrypoint.sh: + content: | + #!/bin/sh + set -e + if [ -n "$$ADMINER_DESIGN" ]; then + # Only create link on initial start, to ensure that explicit changes to + # adminer.css after the container was started once are preserved. + if [ ! -e .adminer-init ]; then + for css_file in adminer.css adminer-dark.css; do + if [ -f "designs/$$ADMINER_DESIGN/$$css_file" ]; then + ln -sf "designs/$$ADMINER_DESIGN/$$css_file" adminer.css + break + fi + done + fi + fi + number=1 + for PLUGIN in $$ADMINER_PLUGINS; do + php plugin-loader.php "$$PLUGIN" > plugins-enabled/$$(printf "%03d" $$number)-$$PLUGIN.php + number=$$(($$number+1)) + done + touch .adminer-init || true + exec "$$@" diff --git a/tests/test.bats b/tests/test.bats index 54f6fd3..812292a 100644 --- a/tests/test.bats +++ b/tests/test.bats @@ -36,6 +36,8 @@ setup() { assert_success run ddev start -y assert_success + + export ADMINER_DESIGN="" } health_checks() { @@ -49,6 +51,20 @@ health_checks() { DDEV_DEBUG=true run ddev adminer assert_success assert_output --partial "FULLURL https://${PROJNAME}.ddev.site:9101" + + if [ "${ADMINER_DESIGN}" != "" ]; then + run ddev exec -s adminer 'echo $ADMINER_DESIGN' + assert_output "${ADMINER_DESIGN}" + + run curl -sfI https://${PROJNAME}.ddev.site:9101/adminer.css + assert_success + assert_output --partial "HTTP/2 200" + assert_output --partial "content-type: text/css" + + run curl -sf https://${PROJNAME}.ddev.site:9101/adminer.css + assert_success + assert_output --partial "${ADMINER_DESIGN}" + fi } teardown() { @@ -86,9 +102,12 @@ teardown() { @test "install from directory with nonstandard port and .env.adminer" { set -eu -o pipefail + + export ADMINER_DESIGN=dracula + run ddev config --router-http-port=8080 --router-https-port=8443 assert_success - run ddev dotenv set .ddev/.env.adminer --adminer-design="dracula" + run ddev dotenv set .ddev/.env.adminer --adminer-design="${ADMINER_DESIGN}" assert_success assert_file_exist .ddev/.env.adminer echo "# ddev add-on get ${DIR} with project ${PROJNAME} in $(pwd)" >&3 @@ -96,7 +115,5 @@ teardown() { assert_success run ddev restart -y assert_success - run ddev exec -s adminer 'echo $ADMINER_DESIGN' - assert_output "dracula" health_checks }