From df318488c9bad0fae2e38c8fd57afaade295f135 Mon Sep 17 00:00:00 2001 From: Christian Höltje Date: Mon, 10 Jul 2017 18:39:55 -0400 Subject: 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. --- test-in-docker | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100755 test-in-docker (limited to 'test-in-docker') 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} |--list" + echo + echo "Loads up a docker image with powershell9k configured in " + 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 -- cgit v1.2.3