You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
powerlevel10k/test-in-docker

86 lines
1.6 KiB
Plaintext

#!/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