#compdef boot2docker

# Boot2docker autocompletion for oh-my-zsh
# Requires: Boot2docker installed
# Author: Manfred Touron (@moul)

local -a _1st_arguments
_1st_arguments=(
   "init":"Create a new Boot2Docker VM."
   "up":"Start VM from any states."
   "start":"Start VM from any states."
   "boot":"Start VM from any states."
   "ssh":"[ssh-command] Login to VM via SSH."
   "save":"Suspend VM and save state to disk."
   "suspend":"Suspend VM and save state to disk."
   "down":"Gracefully shutdown the VM."
   "stop":"Gracefully shutdown the VM."
   "halt":"Gracefully shutdown the VM."
   "restart":"Gracefully reboot the VM."
   "poweroff":"Forcefully power off the VM (may corrupt disk image)."
   "reset":"Forcefully power cycle the VM (may corrupt disk image)."
   "delete":"Delete Boot2Docker VM and its disk image."
   "destroy":"Delete Boot2Docker VM and its disk image."
   "config":"Show selected profile file settings."
   "cfg":"Show selected profile file settings."
   "info":"Display detailed information of VM."
   "ip":"Display the IP address of the VM's Host-only network."
   "socket":"Display the DOCKER_HOST socket to connect to."
   "shellinit":"Display the shell command to set up the Docker client."
   "status":"Display current state of VM."
   "download":"Download Boot2Docker ISO image."
   "upgrade":"Upgrade the Boot2Docker ISO image (restart if running)."
   "version":"Display version information."
)

_arguments \
  '(--basevmdk)--basevmdk[Path to VMDK to use as base for persistent partition]' \
  '(--cpus)'{-c,--cpus}'[number of CPUs for boot2docker.]' \
  '(--clobber)--clobber[overwrite Docker client binary on boot2docker upgrade]' \
  '(--dhcp)--dhcp[enable VirtualBox host-only network DHCP.]' \
  '(--dhcpip)--dhcpip[VirtualBox host-only network DHCP server address.]' \
  '(-s --disksize)'{-s,--disksize}'[boot2docker disk image size (in MB).]' \
  '(--dockerport)--dockerport[host Docker port (forward to port 2376 in VM). (deprecated - use with care)]' \
  '(--driver)--driver[hypervisor driver.]' \
  '(--force-upgrade-download)--force-upgrade-download[always download on boot2docker upgrade, never skip.]' \
  '(--hostip)--hostip[VirtualBox host-only network IP address.]' \
  '(--iso)--iso[path to boot2docker ISO image.]' \
  '(--iso-url)--iso-url[/api.github.com/repos/boot2docker/boot2docker/releases": source URL to provision the boot2docker ISO image.]' \
  '(--lowerip)--lowerip[VirtualBox host-only network DHCP lower bound.]' \
  '(--memory)'{-m,--memory}'[virtual machine memory size (in MB).]' \
  '(--netmask)--netmask[VirtualBox host-only network mask.]' \
  '(--no-dummy)--no-dummy[Example parameter for the dummy driver.]' \
  '(--retries)--retries[number of port knocking retries during 'start']' \
  '(--serial)--serial[try serial console to get IP address (experimental)]' \
  '(--serialfile)--serialfile[path to the serial socket/pipe.]' \
  '(--ssh)--ssh[path to SSH client utility.]' \
  '(--ssh-keygen)--ssh-keygen[path to ssh-keygen utility.]' \
  '(--sshkey)--sshkey[path to SSH key to use.]' \
  '(--sshport)--sshport[host SSH port (forward to port 22 in VM).]' \
  '(--upperip)--upperip[VirtualBox host-only network DHCP upper bound.]' \
  '(--vbm)--vbm[path to VirtualBox management utility.]' \
  '(--vbox-share)--vbox-share[(defaults to "/Users=Users" if no shares are specified; use "disable" to explicitly prevent any shares from being created) List of directories to share during "up|start|boot" via VirtualBox Guest Additions, with optional labels]' \
  '(--verbose)'{-v,--verbose}'[display verbose command invocations.]' \
  '(--vm)--vm[virtual machine name.]' \
  '(--waittime)--waittime[Time in milliseconds to wait between port knocking retries during 'start']' \
  '*:: :->subcmds' && return 0

#_arguments '*:: :->command'

if (( CURRENT == 1 )); then
    _describe -t commands "boot2docker command" _1st_arguments
    return
fi