#compdef docker-machine # ------------------------------------------------------------------------------ # Description # ----------- # # Completion script for Docker Machine (http://docs.docker.com/machine/). # Adapted from boot2docker completion by hhatto (https://github.com/hhatto) # and docker completion by @aeonazaan and @bobmaerten. # # ------------------------------------------------------------------------------ # Authors # ------- # # * ilkka (https://github.com/ilkka) # # ------------------------------------------------------------------------------ # helper function for completing available machines __machines() { declare -a machines_cmd machines_cmd=($(docker-machine ls|tail +2|awk '{print $1":"$3"("$4")"}')) _describe 'machines' machines_cmd } # subcommands local -a _docker_machine_cmds _docker_machine_cmds=( 'active:Get or set the active machine' \ 'create:Create a machine' \ 'config:Print the connection config for machine' \ 'inspect:Inspect information about a machine' \ 'ip:Get the IP address of a machine' \ 'kill:Kill a machine' \ 'ls:List machines' \ 'restart:Restart a machine' \ 'rm:Remove a machine' \ 'env:Display the commands to set up the environment for the Docker client' \ 'ssh:Log into or run a command on a machine with SSH' \ 'start:Start a machine' \ 'stop:Stop a machine' \ 'upgrade:Upgrade a machine to the latest version of Docker' \ 'url:Get the URL of a machine' \ 'help:Shows a list of commands or help for one command' ) # subcommand completion functions __active() { __machines } __help() { _values 'Get help for subcommand' \ 'active' \ 'create' \ 'config' \ 'inspect' \ 'ip' \ 'kill' \ 'ls' \ 'restart' \ 'rm' \ 'env' \ 'ssh' \ 'start' \ 'stop' \ 'upgrade' \ 'url' \ 'help' } __create() { _arguments \ '--amazonec2-access-key:AWS Access Key:()' \ '--amazonec2-ami:AWS machine image:()' \ '--amazonec2-instance-type:AWS instance type:()' \ '--amazonec2-region:AWS region:()' \ '--amazonec2-root-size:AWS root disk size (in GB):()' \ '--amazonec2-secret-key:AWS Secret Key:()' \ '--amazonec2-security-group:AWS VPC security group:()' \ '--amazonec2-session-token:AWS Session Token:()' \ '--amazonec2-subnet-id:AWS VPC subnet id:()' \ '--amazonec2-vpc-id:AWS VPC id:()' \ '--amazonec2-zone:AWS zone for instance (i.e. a,b,c,d,e):()' \ '--azure-docker-port:Azure Docker port:()' \ '--azure-image:Azure image name. Default is Ubuntu 14.04 LTS x64:()' \ '--azure-location:Azure location:()' \ '--azure-password:Azure user password:()' \ '--azure-publish-settings-file:Azure publish settings file:()' \ '--azure-size:Azure size:()' \ '--azure-ssh-port:Azure SSH port:()' \ '--azure-subscription-cert:Azure subscription cert:()' \ '--azure-subscription-id:Azure subscription ID:()' \ '--azure-username:Azure username:()' \ '--digitalocean-access-token:Digital Ocean access token:()' \ '--digitalocean-image:Digital Ocean Image:()' \ '--digitalocean-region:Digital Ocean region:()' \ '--digitalocean-size:Digital Ocean size:()' \ '--google-disk-size:GCE Instance Disk Size (in GB):()' \ '--google-machine-type:GCE Machine Type:()' \ '--google-project:GCE Project:()' \ '--google-scopes:GCE Scopes (comma-separated if multiple scopes):()' \ '--google-username:GCE User Name:()' \ '--google-zone:GCE Zone:()' \ '--openstack-auth-url:OpenStack authentication URL:()' \ '--openstack-endpoint-type:OpenStack endpoint type (adminURL, internalURL or publicURL):()' \ '--openstack-flavor-id:OpenStack flavor id to use for the instance:()' \ '--openstack-flavor-name:OpenStack flavor name to use for the instance:()' \ '--openstack-floatingip-pool:OpenStack floating IP pool to get an IP from to assign to the instance:()' \ '--openstack-image-id:OpenStack image id to use for the instance:()' \ '--openstack-image-name:OpenStack image name to use for the instance:()' \ '--openstack-net-id:OpenStack image name to use for the instance:()' \ '--openstack-net-name:OpenStack network name the machine will be connected on:()' \ '--openstack-password:OpenStack password:()' \ '--openstack-region:OpenStack region name:()' \ '--openstack-sec-groups:OpenStack comma separated security groups for the machine:()' \ '--openstack-ssh-port:OpenStack SSH port:()' \ '--openstack-ssh-user:OpenStack SSH user:()' \ '--openstack-tenant-id:OpenStack tenant id:()' \ '--openstack-tenant-name:OpenStack tenant name:()' \ '--openstack-username:OpenStack username:()' \ '--rackspace-api-key:Rackspace API key:()' \ '--rackspace-docker-install:Set if docker have to be installed on the machine:()' \ '--rackspace-endpoint-type:Rackspace endpoint type (adminURL, internalURL or the default publicURL):()' \ '--rackspace-flavor-id:Rackspace flavor ID. Default: General Purpose 1GB:()' \ '--rackspace-image-id:Rackspace image ID. Default: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM):()' \ '--rackspace-region:Rackspace region name:()' \ '--rackspace-ssh-port:SSH port for the newly booted machine. Set to 22 by default:()' \ '--rackspace-ssh-user:SSH user for the newly booted machine. Set to root by default:()' \ '--rackspace-username:Rackspace account username:()' \ '--softlayer-api-endpoint:softlayer api endpoint to use:()' \ '--softlayer-api-key:softlayer user API key:()' \ "--softlayer-cpu:number of CPUs for the machine:()" \ '--softlayer-disk-size:Disk size for machine, a value of 0 uses the default size on softlayer:()' \ '--softlayer-domain:domain name for machine:()' \ '--softlayer-hostname:hostname for the machine:()' \ '--softlayer-hourly-billing:set hourly billing for machine - on by default:()' \ '--softlayer-image:OS image for machine:()' \ '--softlayer-local-disk:use machine local disk instead of softlayer SAN:()' \ '--softlayer-memory:Memory in MB for machine:()' \ '--softlayer-private-net-only:Use only private networking:()' \ '--softlayer-region:softlayer region for machine:()' \ '--softlayer-user:softlayer user account name:()' \ '--url:URL of host when no driver is selected:()' \ '--virtualbox-boot2docker-url:The URL of the boot2docker image. Defaults to the latest available version:()' \ '--virtualbox-disk-size:Size of disk for host in MB:()' \ '--virtualbox-memory:Size of memory for host in MB:()' \ '--vmwarefusion-boot2docker-url:Fusion URL for boot2docker image:()' \ '--vmwarefusion-disk-size:Fusion size of disk for host VM (in MB):()' \ '--vmwarefusion-memory-size:Fusion size of memory for host VM (in MB):()' \ '--vmwarevcloudair-catalog:vCloud Air Catalog (default is Public Catalog):()' \ '--vmwarevcloudair-catalogitem:vCloud Air Catalog Item (default is Ubuntu Precise):()' \ '--vmwarevcloudair-computeid:vCloud Air Compute ID (if using Dedicated Cloud):()' \ '--vmwarevcloudair-cpu-count:vCloud Air VM Cpu Count (default 1):()' \ '--vmwarevcloudair-docker-port:vCloud Air Docker port:()' \ '--vmwarevcloudair-edgegateway:vCloud Air Org Edge Gateway (Default is ):()' \ '--vmwarevcloudair-memory-size:vCloud Air VM Memory Size in MB (default 2048):()' \ '--vmwarevcloudair-orgvdcnetwork:vCloud Air Org VDC Network (Default is -default-routed):()' \ '--vmwarevcloudair-password:vCloud Air password:()' \ '--vmwarevcloudair-provision:vCloud Air Install Docker binaries (default is true):()' \ '--vmwarevcloudair-publicip:vCloud Air Org Public IP to use:()' \ '--vmwarevcloudair-ssh-port:vCloud Air SSH port:()' \ '--vmwarevcloudair-username:vCloud Air username:()' \ '--vmwarevcloudair-vdcid:vCloud Air VDC ID:()' \ '--vmwarevsphere-boot2docker-url:vSphere URL for boot2docker image:()' \ '--vmwarevsphere-compute-ip:vSphere compute host IP where the docker VM will be instantiated:()' \ '--vmwarevsphere-cpu-count:vSphere CPU number for docker VM:()' \ '--vmwarevsphere-datacenter:vSphere datacenter for docker VM:()' \ '--vmwarevsphere-datastore:vSphere datastore for docker VM:()' \ '--vmwarevsphere-disk-size:vSphere size of disk for docker VM (in MB):()' \ '--vmwarevsphere-memory-size:vSphere size of memory for docker VM (in MB):()' \ '--vmwarevsphere-network:vSphere network where the docker VM will be attached:()' \ '--vmwarevsphere-password:vSphere password:()' \ '--vmwarevsphere-pool:vSphere resource pool for docker VM:()' \ '--vmwarevsphere-username:vSphere username:()' \ '--vmwarevsphere-vcenter:vSphere IP/hostname for vCenter:()' \ '--driver:Driver to create machine with.:(amazonec2 azure digitalocean google none openstack rackspace softlayer virtualbox vmwarefusion vmwarevcloudair vmwarevsphere)' \ '--swarm:Configure Machine with Swarm:()' \ '--swarm-master:Configure Machine to be a Swarm master:()' \ '--swarm-discovery:Discovery service to use with Swarm:()' \ '--swarm-host:ip/socket to listen on for Swarm master:()' \ '--swarm-addr:addr to advertise for Swarm (default: detect and use the machine IP):()' } __config() { _arguments \ '--swarm[Display the Swarm config instead of the Docker daemon]' __machines } __inspect() { __machines } __ip() { __machines } __env() { _arguments \ '--unset[Unset variables instead of setting them]' \ '--swarm[Display the Swarm config instead of the Docker daemon]' __machines } __kill() { __machines } __ls() { _arguments \ '--quiet[Enable quiet mode]' } __restart() { __machines } __start() { __machines } __stop() { __machines } __rm() { __machines } __ssh() { __machines } __upgrade() { __machines } __url() { __machines } # common args _arguments \ '--debug[Enable debug mode]' \ '--storage-path[Configures storage path]:_files' \ '--tls-ca-cert[CA to verify remotes against]:_files' \ '--tls-ca-key[Private key to generate certificates]:_files' \ '--tls-client-cert[Client cert to use for TLS]:_files' \ '--tls-client-key[Private key used in client TLS auth]:_files' \ '--help[show help]' \ '--version[print the version]' \ '*:: :->command' # start machines! if (( CURRENT == 1 )); then _describe -t commands 'docker-machine command' _docker_machine_cmds fi local -a _command_args case "$words[1]" in active) __active ;; create) __create ;; config) __config ;; inspect) __inspect ;; ip) __ip ;; kill) __kill ;; ls) __ls ;; restart) __restart ;; rm) __rm ;; env) __env ;; ssh) __ssh ;; start) __start ;; stop) __stop ;; upgrade) __upgrade ;; url) __url ;; help) __help ;; esac