Skip to content
This repository has been archived by the owner on Apr 24, 2020. It is now read-only.

test-in-docker: fix with newer ZSH versions #884

Closed
wants to merge 11 commits into from
38 changes: 29 additions & 9 deletions test-in-docker
Expand Up @@ -6,6 +6,7 @@ set -eu
default_version='4.3.11'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should set the minimum version to something like 5.3 in regard of #877

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I started to do that in a94df3d but then remembered why I have it the way I do.

The default should be the oldest version of zsh we support, not newest.

Either way, it is easier to change now and it has the same lookup properties the command line does.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well. The oldest supported version of ZSH is 5.3 in next (at least in the battery segment). Otherwise it is 5.1.


setopt extended_glob glob_subst numeric_glob_sort
setopt warn_create_global warn_nested_var 2> /dev/null
cd "${${(%):-%x}:A:h}"

# TODO: Crazy Logic to munge TERM to something supported in Ubuntu 14.04
Expand All @@ -15,13 +16,18 @@ term=screen-256color
# ...see Modifiers in zshexpn(1) for details.

# List of ZSH versions
typeset -a versions
typeset -aU versions
versions=( docker/base-*/Dockerfile(N.on:h:t:s/base-//) )
typeset -r versions

# List of frameworks
typeset -a frameworks
typeset -aU frameworks
frameworks=( docker/*/Dockerfile(N.on:h:t) )
frameworks=${(@)frameworks:#base-*}
for i in {$#frameworks..1}; do
# Remove all base entries
[[ "${frameworks[$i]}" = base-* ]] && frameworks[$i]=()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a stylistic note: I would go here with double equals. That is more readable IMHO.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 3c27414

done
typeset -r frameworks

# Known Issues
typeset -A known_issues
Expand All @@ -30,6 +36,7 @@ known_issues["4.3.11-zim"]="BROKEN: Zim wants ZSH 5.2 or newer."
known_issues["5.0.3-zim"]="DEPRECATED: Zim wants ZSH 5.2 or newer."
known_issues["5.1.1-zim"]="DEPRECATED: Zim wants ZSH 5.2 or newer."
known_issues["4.3.11-zulu"]="Zulu doesn't work; it needs a newer version of git."
typeset -r known_issues

err()
{
Expand Down Expand Up @@ -65,6 +72,14 @@ check_for_known_issues() {
fi
}

cmd() {
if (( dry_run )); then
echo "${(@q)*}" 1>&2
else
"${(@)*}"
fi
}

build_and_run() {
local version="$1"
local framework="$2"
Expand All @@ -75,22 +90,22 @@ build_and_run() {
print -P "%F{green}Preparing containers...%f"

echo -n "p9k:base-${version}: "
docker build \
cmd docker build \
--quiet \
--tag "p9k:base-${version}" \
--file "docker/base-${version}/Dockerfile" \
.

echo -n "p9k:${version}-${framework}: "
docker build \
cmd docker build \
--quiet \
--build-arg="base=base-${version}" \
--tag "p9k:${version}-${framework}" \
--file "docker/${framework}/Dockerfile" \
.

print -P "%F{green}Starting ${name} container...%f"
exec docker run \
cmd docker run \
--rm \
--interactive \
--tty \
Expand All @@ -105,9 +120,10 @@ show_help() {
echo
echo "Loads up a docker image with powershell9k configured in <framework>"
echo
echo " --frameworks Lists all available frameworks, newline separated."
echo " --versions Lists all available ZSH versions, newline separated."
echo " --zsh VER Uses ZSH with version VER."
echo " -f --frameworks Lists all available frameworks, newline separated."
echo " -v --versions Lists all available ZSH versions, newline separated."
echo " -z --zsh VER Uses ZSH with version VER."
echo " -n --dry-run Just prints the docker commands that would be run."
echo " --help You're soaking in it."
echo
echo "ZSH versions:"
Expand All @@ -130,6 +146,7 @@ fi
# Parse flags and such.
use_version=$default_version
use_framework=
dry_run=0
while (( $# > 0 )); do
case "$1" in
-f | --frameworks )
Expand All @@ -149,6 +166,7 @@ while (( $# > 0 )); do
err "No such ZSH version '${1}'"
fi
;;
-n | --dry-run ) dry_run=1 ;;
-h | --help )
show_help
exit
Expand All @@ -174,6 +192,8 @@ while (( $# > 0 )); do
shift
done

typeset -r use_version use_framework dry_run

build_and_run "$use_version" "$use_framework"

# EOF