aboutsummaryrefslogtreecommitdiff
path: root/test-in-docker
diff options
context:
space:
mode:
authorChristian Höltje <docwhat@gerf.org>2017-07-11 01:39:55 +0300
committerChristian Höltje <docwhat@gerf.org>2017-07-12 03:41:46 +0300
commitdf318488c9bad0fae2e38c8fd57afaade295f135 (patch)
tree1580a46f9edfe65e33e4757be77ceb34acbf83fd /test-in-docker
parent3c3a86a42f6299f8ccc9af27b4cb03467cb28927 (diff)
test-in-docker: quickly test frameworks in docker
This adds `./test-in-docker` for quickly playing with various frameworks. All the containers are based off Ubuntu 14.04 which has ZSH 5.0.2. Thanks to @dritter for figuring out all the framework installation methods.
Diffstat (limited to 'test-in-docker')
-rwxr-xr-xtest-in-docker85
1 files changed, 85 insertions, 0 deletions
diff --git a/test-in-docker b/test-in-docker
new file mode 100755
index 00000000..ff3bb86b
--- /dev/null
+++ b/test-in-docker
@@ -0,0 +1,85 @@
+#!/usr/bin/env zsh
+
+set -eu
+
+setopt extendedglob
+cd "${${(%):-%x}:A:h}"
+
+# TODO: Crazy Logic to munge TERM to something supported in Ubuntu 14.04
+term=screen-256color
+
+frameworks()
+{
+ for path in docker/*/Dockerfile(N.); do
+ framework=${path:h:t}
+ if [[ "$framework" == base ]]; then continue; fi
+ echo "$framework"
+ done
+}
+
+show-help()
+{
+ echo "Usage: ${(%):-%x} <framework>|--list"
+ echo
+ echo "Loads up a docker image with powershell9k configured in <framework>"
+ echo
+ echo " --list Lists all available framework containers."
+ echo
+ echo "Framework containers:"
+ for f in $(frameworks); do
+ echo " - $f"
+ done
+}
+
+build-and-run()
+{
+ local framework="$1" ; shift
+
+ print -P "%F{green}Preparing ${framework} container...%f"
+
+ if [[ "$framework" != "base" ]]; then
+ echo -n "p9k:base: "
+ docker build \
+ --quiet \
+ --tag p9k:base \
+ --file docker/base/Dockerfile \
+ .
+ fi
+ echo -n "p9k:${framework}: "
+ docker build \
+ --quiet \
+ --tag "p9k:${framework}" \
+ --file "docker/${framework}/Dockerfile" \
+ .
+
+
+ print -P "%F{green}Starting ${framework} container...%f"
+ exec docker run \
+ --rm \
+ --interactive \
+ --tty \
+ --hostname="${framework}" \
+ --env="TERM=${term}" \
+ "$@" \
+ "p9k:${framework}"
+}
+
+arg1="${1:-}"; if (( $# > 0 )); then shift; fi
+
+if [[ -z "$arg1" ]] || [[ "$arg1" == "help" ]]; then
+ show-help
+ exit 0
+elif [[ "$arg1" == '--list' ]]; then
+ frameworks
+ exit 0
+elif [[ -d "docker/${arg1}" ]]; then
+ build-and-run "$arg1"
+elif [[ -n "docker/${arg1}"*/Dockerfile(#qN) ]]; then
+ # Allow globbing
+ build-and-run "docker/${arg1}"*(Y1:t)
+else
+ show-help
+ exit 1
+fi
+
+# EOF