#!/usr/bin/env zsh
  local opts withvals

  zmodload zsh/zutil || { <<< 'Requires zparseopts'; false; return }

  [ -z $commands[docker] ] && { <<< 'Requires Docker'; false; return }

  zparseopts -D -E -M -a opts -A withvals - \
             h=hlp  -help=h              \
             i:     -image=i             \
             N:     -name=N              \
             n      -dry-run=n           \
             p      -persistant=p        \
             r      -run=r               \
                    -zdotdir:            \
                    -zpreztodir:

  if (( $#hlp == 1 )) ; then
    <<-USAGE
    ${0}: create an ephemeral  prezto container using docker

    usage:
        ${0} [options] -- [addtl-args]

    options:
        -h, --help           : print this message
        -p, --persistant     : make a persistant container
        -N NAME, --name=NAME : set container name to NAME (default: prezto)
        -n, --dry-run        : see what command would be run without doing so
        -r 'CMD' --run 'CMD' : run 'CMD' on the container (quote CMD)
        -i IMG,  --image=IMG : create container from image IMG (default hlecuanda/prezto-dev)
        -zdotdir=PATH        : use dotfiles from local PATH
        -zpreztodir          : override default prezto to local PATH

    example:
        ${0} -n myruncoms -zdotdir=$HOME

       creates an ephemeral container named myruncoms using
        dotfiles found in ${HOME}

        ${0} -n illbeback  -p

        creates a persistant container named illbeback if such
        container exists, then startit and attach to it

        ${0} -n ivebeenback -r 'apk add python'

        spins up the a container named ivebeenback, and runs
        the comand 'apk add python'. the container stops when
        done.

		USAGE
  fi

  local image="hlecuanda/prezto-dev"
  local name="prezto"
  local persistant="--rm"
  local zdotdir=""
  local zpreztodir=""
  local dockercmd='docker run'
  local dockerpull=""

  for opt  in ${(k)withvals}
    case $opt in
      -i)
        image="$withvals[-i]" ;;
      -n)
        local dryrun="print --" ;;
      -N)
        name="$withvals[-n]" ;;
      -p)
        persistant="" ;;
      -zdotdir)
        zdotdir="-v ${(qq)withvals[-zdotdir]}:/home/prezto/zdotdir -e 'ZDOTDIR=/home/prezto/zdotdir  " ;;
      -zpreztodir)
        zpreztodir="-v ${(qq)withvals[-zpreztodir]}:/home/prezto/zpreztodir -e 'ZPREZTODIR=/home/prezto/zpreztodir  " ;;
    esac

  docker images \
  | grep prezto-dev \
  &>>! /dev/null || dockerpull="docker pull $image && "

  dockercmd="$dryrun $dockerpull $dockercmd $persistant -h $name "
  dockercmd="$dockercmd -name $name $zdotdir $zpreztodir $image"

  cmd=$(echo $dockercmd | tr -s \  )

  ${(z)cmd}


#  vim: set ft=zsh sw=2 tw=0 fdm=manual et :