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.pull/22/head
parent
3c3a86a42f
commit
df318488c9
@ -0,0 +1,7 @@
|
||||
FROM p9k:base
|
||||
|
||||
COPY docker/antibody/install.zsh /tmp/
|
||||
RUN zsh /tmp/install.zsh
|
||||
|
||||
COPY ./ p9k/
|
||||
COPY docker/antibody/zshrc .zshrc
|
@ -0,0 +1 @@
|
||||
curl -sL https://git.io/antibody | bash -s
|
@ -0,0 +1,2 @@
|
||||
source <(antibody init)
|
||||
antibody bundle ~/p9k/
|
@ -0,0 +1,7 @@
|
||||
FROM p9k:base
|
||||
|
||||
COPY docker/antigen/install.zsh /tmp/
|
||||
RUN zsh /tmp/install.zsh
|
||||
|
||||
COPY ./ p9k/
|
||||
COPY docker/antigen/zshrc .zshrc
|
@ -0,0 +1,12 @@
|
||||
#!/bin/zsh
|
||||
|
||||
mkdir ~/antigen
|
||||
|
||||
curl \
|
||||
-qLsSf \
|
||||
-o ~/antigen/antigen.zsh \
|
||||
https://git.io/antigen
|
||||
|
||||
source ~/antigen/antigen.zsh
|
||||
|
||||
# EOF
|
@ -0,0 +1,4 @@
|
||||
source ~/antigen/antigen.zsh
|
||||
|
||||
antigen theme "${HOME}/p9k" powerlevel9k --no-local-clone
|
||||
antigen apply
|
@ -0,0 +1,33 @@
|
||||
FROM ubuntu:trusty
|
||||
|
||||
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 \
|
||||
mercurial \
|
||||
subversion \
|
||||
golang \
|
||||
jq \
|
||||
node \
|
||||
ruby \
|
||||
python \
|
||||
python-virtualenv
|
||||
|
||||
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"]
|
@ -0,0 +1,4 @@
|
||||
FROM p9k:base
|
||||
|
||||
COPY ./ p9k/
|
||||
COPY docker/dotfile/zshrc .zshrc
|
@ -0,0 +1 @@
|
||||
source "${HOME}/p9k/prompt_powerlevel9k_setup"
|
@ -0,0 +1,2 @@
|
||||
Defaults:fred !requiretty
|
||||
fred ALL=(ALL) NOPASSWD: ALL
|
@ -0,0 +1,7 @@
|
||||
FROM p9k:base
|
||||
|
||||
COPY docker/omz/install.zsh /tmp/
|
||||
RUN zsh /tmp/install.zsh
|
||||
|
||||
COPY docker/omz/zshrc .zshrc
|
||||
COPY ./ p9k/
|
@ -0,0 +1,4 @@
|
||||
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
|
||||
|
||||
mkdir -p ~/.oh-my-zsh/custom/themes
|
||||
ln -nsf ~/p9k/ ~/.oh-my-zsh/custom/themes/powerlevel9k
|
@ -0,0 +1,5 @@
|
||||
export ZSH=$HOME/.oh-my-zsh
|
||||
ZSH_THEME="powerlevel9k/powerlevel9k"
|
||||
plugins=(git rake ruby)
|
||||
|
||||
source $ZSH/oh-my-zsh.sh
|
@ -0,0 +1,6 @@
|
||||
FROM p9k:base
|
||||
|
||||
COPY docker/prezto/install.zsh /tmp/
|
||||
RUN zsh /tmp/install.zsh
|
||||
|
||||
COPY ./ p9k/
|
@ -0,0 +1,18 @@
|
||||
#!/bin/zsh
|
||||
|
||||
set -eu
|
||||
|
||||
git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
|
||||
|
||||
setopt EXTENDED_GLOB
|
||||
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" \
|
||||
"${HOME}/.zprezto/modules/prompt/functions/prompt_powerlevel9k_setup"
|
||||
|
||||
echo "zstyle ':prezto:module:prompt' theme 'powerlevel9k'" \
|
||||
>> "${HOME}/.zpreztorc"
|
||||
|
||||
# EOF
|
@ -0,0 +1,7 @@
|
||||
FROM p9k:base
|
||||
|
||||
COPY docker/zgen/install.zsh /tmp/
|
||||
RUN zsh /tmp/install.zsh
|
||||
|
||||
COPY ./ p9k/
|
||||
COPY docker/zgen/zshrc .zshrc
|
@ -0,0 +1,5 @@
|
||||
#!/bin/zsh
|
||||
|
||||
git clone https://github.com/tarjoilija/zgen.git "${HOME}/.zgen"
|
||||
|
||||
# EOF
|
@ -0,0 +1,10 @@
|
||||
# load zgen
|
||||
source ~/.zgen/zgen.zsh
|
||||
|
||||
# if the init scipt doesn't exist
|
||||
if ! zgen saved; then
|
||||
zgen load ~/p9k/powerlevel9k.zsh-theme
|
||||
|
||||
# generate the init script from plugins above
|
||||
zgen save
|
||||
fi
|
@ -0,0 +1,6 @@
|
||||
FROM p9k:base
|
||||
|
||||
COPY docker/zim/install.zsh /tmp/
|
||||
RUN zsh /tmp/install.zsh
|
||||
|
||||
COPY ./ p9k/
|
@ -0,0 +1,21 @@
|
||||
#!zsh
|
||||
|
||||
git clone --recursive https://github.com/Eriner/zim.git "${ZDOTDIR:-${HOME}}/.zim"
|
||||
|
||||
setopt EXTENDED_GLOB
|
||||
for template_file ( ${ZDOTDIR:-${HOME}}/.zim/templates/* ); do
|
||||
user_file="${ZDOTDIR:-${HOME}}/.${template_file:t}"
|
||||
touch ${user_file}
|
||||
( print -rn "$(<${template_file})$(<${user_file})" >! ${user_file} ) 2>/dev/null
|
||||
done
|
||||
|
||||
source "${ZDOTDIR:-${HOME}}/.zlogin"
|
||||
|
||||
ln -nsf \
|
||||
~/p9k/ \
|
||||
~/.zim/modules/prompt/external-themes/powerlevel9k
|
||||
ln -nsf \
|
||||
~/.zim/modules/prompt/external-themes/powerlevel9k/powerlevel9k.zsh-theme \
|
||||
~/.zim/modules/prompt/functions/prompt_powerlevel9k_setup
|
||||
|
||||
sed -i "s/zprompt_theme='steeef'/zprompt_theme='powerlevel9k'/g" ~/.zimrc
|
@ -0,0 +1,7 @@
|
||||
FROM p9k:base
|
||||
|
||||
COPY docker/zplug/install.zsh /tmp/
|
||||
RUN zsh /tmp/install.zsh
|
||||
|
||||
COPY ./ p9k/
|
||||
COPY docker/zplug/zshrc .zshrc
|
@ -0,0 +1,5 @@
|
||||
#!zsh
|
||||
|
||||
curl -sL --proto-redir -all,https https://raw.githubusercontent.com/zplug/installer/master/installer.zsh| zsh
|
||||
|
||||
# git clone https://github.com/zplug/zplug "${HOME}/.zplug"
|
@ -0,0 +1,5 @@
|
||||
#!zsh
|
||||
|
||||
source ~/.zplug/init.zsh
|
||||
zplug "${HOME}/p9k", use:"powerlevel9k.zsh-theme", from:local, as:theme
|
||||
zplug load --verbose
|
@ -0,0 +1,7 @@
|
||||
FROM p9k:base
|
||||
|
||||
COPY docker/zplugin/install.zsh /tmp/
|
||||
RUN zsh /tmp/install.zsh
|
||||
|
||||
COPY ./ p9k/
|
||||
COPY docker/zplugin/zshrc.plugins .zshrc.plugins
|
@ -0,0 +1,12 @@
|
||||
sh -c "$(curl -fsSL https://raw.githubusercontent.com/psprint/zplugin/master/doc/install.sh)"
|
||||
|
||||
# The 'zplugin snippet' only copies the .zsh-theme file, not everything else.
|
||||
mkdir -p ~/.zplugin/snippets
|
||||
ln -nsf \
|
||||
~/p9k/ \
|
||||
~/.zplugin/snippets/--SLASH--home--SLASH--fred--SLASH--p9k--SLASH--powerlevel9k--DOT--zsh-theme
|
||||
|
||||
{
|
||||
echo
|
||||
echo "source ~/.zshrc.plugins"
|
||||
} >> ~/.zshrc
|
@ -0,0 +1,5 @@
|
||||
#!zsh
|
||||
|
||||
zplugin load psprint zsh-navigation-tools
|
||||
zplugin load psprint---zprompts
|
||||
zplugin snippet ~/p9k/powerlevel9k.zsh-theme
|
@ -0,0 +1,7 @@
|
||||
FROM p9k:base
|
||||
|
||||
COPY docker/zpm/install.zsh /tmp/
|
||||
RUN zsh /tmp/install.zsh
|
||||
|
||||
COPY ./ p9k/
|
||||
COPY docker/zpm/zshrc .zshrc
|
@ -0,0 +1,6 @@
|
||||
# install zpm
|
||||
git clone --recursive https://github.com/zpm-zsh/zpm.git ~/.zpm
|
||||
|
||||
# Install powerlevel9k
|
||||
mkdir ~/.zpm/plugins/powerlevel9k
|
||||
ln -s ~/p9k/powerlevel9k.zsh-theme ~/.zpm/plugins/powerlevel9k/powerlevel9k.plugin.zsh
|
@ -0,0 +1,3 @@
|
||||
source ~/.zpm/zpm.zsh
|
||||
|
||||
zpm load powerlevel9k
|
@ -0,0 +1,6 @@
|
||||
FROM p9k:base
|
||||
|
||||
COPY docker/zulu/install.zsh /tmp/
|
||||
RUN zsh /tmp/install.zsh
|
||||
|
||||
COPY ./ p9k/
|
@ -0,0 +1,10 @@
|
||||
#!zsh
|
||||
|
||||
# install zulu https://github.com/zulu-zsh/zulu
|
||||
curl -L https://git.io/zulu-install | zsh && zsh
|
||||
|
||||
{
|
||||
echo 'zulu fpath add ~/p9k'
|
||||
echo 'zulu fpath add ~/p9k/functions'
|
||||
echo 'zulu theme powerlevel9k'
|
||||
} >> ~/.zshrc
|
@ -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
|
Loading…
Reference in New Issue