aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Ritter <dritter03@googlemail.com>2018-08-06 01:27:50 +0300
committerDominik Ritter <dritter03@googlemail.com>2018-08-06 01:27:50 +0300
commite027a8510df34dbee0eab690532c89ca1758c134 (patch)
tree76fa09d02031baddad9ac17573723ca087cd5d52
parent3b8f0abdb27fa1628e7016a93805f96d6a215653 (diff)
parent4178240b2493115641c8cd204266e6d3d593af6b (diff)
Merge remote-tracking branch 'docwhat/pr/fix-test-in-docker-on-newer-zsh' into prepare_066
-rw-r--r--docker/base-5.0.3/Dockerfile2
-rw-r--r--docker/base-5.1.1/Dockerfile2
-rw-r--r--docker/base-5.2/Dockerfile4
-rw-r--r--docker/base-5.3.1/Dockerfile40
-rw-r--r--docker/base-5.4.2/Dockerfile35
-rw-r--r--docker/base-5.5.1/Dockerfile35
-rw-r--r--docker/prezto/install.zsh2
-rw-r--r--docker/zshing/Dockerfile7
-rw-r--r--docker/zshing/install.zsh16
-rwxr-xr-xtest-in-docker75
10 files changed, 186 insertions, 32 deletions
diff --git a/docker/base-5.0.3/Dockerfile b/docker/base-5.0.3/Dockerfile
index e0b6c6c3..b1b85fcb 100644
--- a/docker/base-5.0.3/Dockerfile
+++ b/docker/base-5.0.3/Dockerfile
@@ -6,7 +6,7 @@ RUN \
DEBIAN_FRONTEND=noninteractive apt-get install -y \
curl \
git \
- zsh \
+ zsh=5.0.2-3ubuntu6.2 \
mercurial \
subversion \
golang \
diff --git a/docker/base-5.1.1/Dockerfile b/docker/base-5.1.1/Dockerfile
index a7f644bf..c4fb6424 100644
--- a/docker/base-5.1.1/Dockerfile
+++ b/docker/base-5.1.1/Dockerfile
@@ -6,7 +6,7 @@ RUN \
DEBIAN_FRONTEND=noninteractive apt-get install -y \
curl \
git \
- zsh \
+ zsh=5.1.1-1ubuntu2.2 \
mercurial \
subversion \
golang \
diff --git a/docker/base-5.2/Dockerfile b/docker/base-5.2/Dockerfile
index 62a10074..2ec096fc 100644
--- a/docker/base-5.2/Dockerfile
+++ b/docker/base-5.2/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:17.04
+FROM ubuntu:17.10
RUN \
apt-get update && \
@@ -6,7 +6,7 @@ RUN \
DEBIAN_FRONTEND=noninteractive apt-get install -y \
curl \
git \
- zsh \
+ zsh=5.2-5ubuntu1.2 \
mercurial \
subversion \
golang \
diff --git a/docker/base-5.3.1/Dockerfile b/docker/base-5.3.1/Dockerfile
new file mode 100644
index 00000000..0294cf25
--- /dev/null
+++ b/docker/base-5.3.1/Dockerfile
@@ -0,0 +1,40 @@
+FROM debian:stretch
+
+# We switched here to debian, as there seems no ZSH 5.3 in ubuntu.
+
+RUN \
+ apt-get update && \
+ echo 'golang-go golang-go/dashboard boolean false' | debconf-set-selections && \
+ DEBIAN_FRONTEND=noninteractive apt-get install -y \
+ curl \
+ git \
+ zsh=5.3.1-4+b2 \
+ mercurial \
+ subversion \
+ golang \
+ jq \
+ nodejs \
+ ruby \
+ python \
+ python-virtualenv \
+ sudo \
+ locales
+
+RUN adduser --shell /bin/zsh --gecos 'fred' --disabled-password fred
+# Locale generation is different in debian. We need to enable en_US
+# locale and then regenerate locales.
+RUN echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
+RUN locale-gen "en_US.UTF-8"
+
+COPY docker/fred-sudoers /etc/sudoers.d/fred
+
+USER fred
+WORKDIR /home/fred
+ENV LANG=en_US.UTF-8
+ENV TERM=xterm-256color
+ENV DEFAULT_USER=fred
+ENV POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
+
+RUN touch .zshrc
+
+CMD ["/bin/zsh", "-l"]
diff --git a/docker/base-5.4.2/Dockerfile b/docker/base-5.4.2/Dockerfile
new file mode 100644
index 00000000..8984c105
--- /dev/null
+++ b/docker/base-5.4.2/Dockerfile
@@ -0,0 +1,35 @@
+FROM ubuntu:18.04
+
+RUN \
+ apt-get update && \
+ echo 'golang-go golang-go/dashboard boolean false' | debconf-set-selections && \
+ DEBIAN_FRONTEND=noninteractive apt-get install -y \
+ curl \
+ git \
+ zsh=5.4.2-3ubuntu3 \
+ mercurial \
+ subversion \
+ golang \
+ jq \
+ nodejs \
+ ruby \
+ python \
+ python-virtualenv \
+ sudo \
+ locales
+
+RUN adduser --shell /bin/zsh --gecos 'fred' --disabled-password fred
+RUN locale-gen "en_US.UTF-8"
+
+COPY docker/fred-sudoers /etc/sudoers.d/fred
+
+USER fred
+WORKDIR /home/fred
+ENV LANG=en_US.UTF-8
+ENV TERM=xterm-256color
+ENV DEFAULT_USER=fred
+ENV POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
+
+RUN touch .zshrc
+
+CMD ["/bin/zsh", "-l"]
diff --git a/docker/base-5.5.1/Dockerfile b/docker/base-5.5.1/Dockerfile
new file mode 100644
index 00000000..85fc570c
--- /dev/null
+++ b/docker/base-5.5.1/Dockerfile
@@ -0,0 +1,35 @@
+FROM ubuntu:18.10
+
+RUN \
+ apt-get update && \
+ echo 'golang-go golang-go/dashboard boolean false' | debconf-set-selections && \
+ DEBIAN_FRONTEND=noninteractive apt-get install -y \
+ curl \
+ git \
+ zsh=5.5.1-1ubuntu1 \
+ mercurial \
+ subversion \
+ golang \
+ jq \
+ nodejs \
+ ruby \
+ python \
+ python-virtualenv \
+ sudo \
+ locales
+
+RUN adduser --shell /bin/zsh --gecos 'fred' --disabled-password fred
+RUN locale-gen "en_US.UTF-8"
+
+COPY docker/fred-sudoers /etc/sudoers.d/fred
+
+USER fred
+WORKDIR /home/fred
+ENV LANG=en_US.UTF-8
+ENV TERM=xterm-256color
+ENV DEFAULT_USER=fred
+ENV POWERLEVEL9K_ALWAYS_SHOW_CONTEXT=true
+
+RUN touch .zshrc
+
+CMD ["/bin/zsh", "-l"]
diff --git a/docker/prezto/install.zsh b/docker/prezto/install.zsh
index 9cca57ed..2b2e878c 100644
--- a/docker/prezto/install.zsh
+++ b/docker/prezto/install.zsh
@@ -9,7 +9,7 @@ for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
ln -nsf "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done
-ln -s "${HOME}/p9k/powerlevel9k.zsh-theme" \
+ln -snf "${HOME}/p9k/powerlevel9k.zsh-theme" \
"${HOME}/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setup"
echo "zstyle ':prezto:module:prompt' theme 'powerlevel9k'" \
diff --git a/docker/zshing/Dockerfile b/docker/zshing/Dockerfile
new file mode 100644
index 00000000..a51a3067
--- /dev/null
+++ b/docker/zshing/Dockerfile
@@ -0,0 +1,7 @@
+ARG base
+FROM p9k:${base}
+
+COPY docker/zshing/install.zsh /tmp/
+RUN zsh /tmp/install.zsh
+
+COPY ./ p9k/
diff --git a/docker/zshing/install.zsh b/docker/zshing/install.zsh
new file mode 100644
index 00000000..8f926992
--- /dev/null
+++ b/docker/zshing/install.zsh
@@ -0,0 +1,16 @@
+#!zsh
+
+# install zshing https://github.com/zakariaGatter/zshing
+git clone https://github.com/zakariaGatter/zshing.git ~/.zshing/zshing
+
+# Link P9K in zshing directory
+ln -nsf ~/p9k ~/.zshing/powerlevel9k
+
+{
+ echo
+ echo 'ZSHING_PLUGINS=(
+ "bhilburn/powerlevel9k"
+ )'
+ echo
+ echo "source ~/.zshing/zshing/zshing.zsh"
+} >> ~/.zshrc
diff --git a/test-in-docker b/test-in-docker
index 3c7255ec..0ed1254f 100755
--- a/test-in-docker
+++ b/test-in-docker
@@ -2,10 +2,12 @@
set -eu
-# The default ZSH to use.
-default_version='4.3.11'
+# The default ZSH to use; it can just be the first few characters.
+# This should be the oldest version we support.
+default_version='4.'
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
@@ -15,13 +17,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]=()
+done
+typeset -r frameworks
# Known Issues
typeset -A known_issues
@@ -30,6 +37,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()
{
@@ -65,6 +73,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"
@@ -75,14 +91,14 @@ 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}" \
@@ -90,7 +106,7 @@ build_and_run() {
.
print -P "%F{green}Starting ${name} container...%f"
- exec docker run \
+ cmd docker run \
--rm \
--interactive \
--tty \
@@ -105,9 +121,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:"
@@ -128,8 +145,9 @@ if (( $# == 0 )); then
fi
# Parse flags and such.
-use_version=$default_version
-use_framework=
+asked_for_version=$default_version
+asked_for_framework=
+dry_run=0
while (( $# > 0 )); do
case "$1" in
-f | --frameworks )
@@ -142,13 +160,9 @@ while (( $# > 0 )); do
;;
-z | --zsh )
shift
- local v="$(resolve_version "$1")"
- if [[ -n "$v" ]]; then
- use_version=$v
- else
- err "No such ZSH version '${1}'"
- fi
+ asked_for_version=$1
;;
+ -n | --dry-run ) dry_run=1 ;;
-h | --help )
show_help
exit
@@ -159,21 +173,28 @@ while (( $# > 0 )); do
exit 1
;;
* )
- if [[ -z "$use_framework" ]]; then
- local f="$(resolve_framework "$1")"
- if [[ -n "$f" ]]; then
- use_framework=$f
- else
- err "No such framework '${1}'"
- fi
+ if [[ -z "$asked_for_framework" ]]; then
+ asked_for_framework=$1
else
- err "You can only specify one framework at a time; you already specified '${use_framework}'"
+ err "You can only specify one framework at a time; you already specified '${asked_for_framework}'"
fi
;;
esac
shift
done
+typeset -r asked_for_version asked_for_framework
+
+typeset -r use_version="$(resolve_version "${asked_for_version}")"
+if [[ -z "$use_version" ]]; then
+ err "No such ZSH version '${asked_for_version}'"
+fi
+
+typeset -r use_framework="$(resolve_framework "${asked_for_framework}")"
+if [[ -z "$use_framework" ]]; then
+ err "No such framework '${asked_for_framework}'"
+fi
+
build_and_run "$use_version" "$use_framework"
# EOF