]> src.twobees.de Git - dotfiles.git/blob - stow/oh-my-zsh/.oh-my-zsh/plugins/vagrant/_vagrant
...
[dotfiles.git] / stow / oh-my-zsh / .oh-my-zsh / plugins / vagrant / _vagrant
1 #compdef vagrant
2 #autoload
3
4 # vagrant zsh completion
5
6 local -a _1st_arguments
7 _1st_arguments=(
8     'box:Box commands'
9     'cloud:Manages everything related to Vagrant Cloud'
10     'connect:Connects to a remotely shared Vagrant environment'
11     'destroy:Destroys the vagrant environment'
12     'docker-logs:Outputs the logs from the Docker container'
13     'docker-run:Run a one-off command in the context of a container'
14     'global-status:Reports the status of all active Vagrant environments on the system'
15     'halt:Halts the currently running vagrant environment'
16     'help:Shows the help for a subcommand'
17     'init:[box_name] [box_url] Initializes current folder for Vagrant usage'
18     'list-commands:Outputs all available Vagrant subcommands, even non-primary ones'
19     'login:Authenticates against a Vagrant Cloud server to access protected boxes'
20     'package:Packages a vagrant environment for distribution'
21     'plugin:Plugin commands'
22     'port:Displays information about guest port mappings'
23     'provision:Run the provisioner'
24     'push:Deploys code in this environment to a configured destination'
25     'rdp:Connects to machine via RDP'
26     'reload:Reload the vagrant environment'
27     'resume:Resumes a suspended vagrant environment'
28     'rsync:Syncs rsync synced folders to remote machine'
29     'rsync-auto:Syncs rsync synced folders automatically when files change'
30     'share:Shares your Vagrant environment with anyone in the world'
31     'snapshot:Manage snapshots with the guest machine'
32     'ssh:SSH into the currently running environment'
33     'ssh-config:Outputs .ssh/config valid syntax for connecting to this environment via ssh'
34     'status:Shows the status of the current Vagrant environment'
35     'suspend:Suspends the currently running vagrant environment'
36     'snapshot:Used to manage snapshots with the guest machine'
37     'up:Creates the vagrant environment'
38     'validate:Validates the Vagrantfile'
39     'version:Prints current and latest Vagrant version'
40     '--help:[TASK] Describe available tasks or one specific task'
41     '--version:Prints the Vagrant version information'
42 )
43
44 local -a _box_arguments
45 _box_arguments=(
46     'add:ADDRESS Adds a box to the system'
47     'help:COMMAND List subcommands'
48     'list:Lists all installed boxes'
49     'outdated:Checks if a box has newer version'
50     'remove:NAME Removes a box from the system'
51     'repackage:NAME PROVIDER VERSION Repackages an installed box into a `.box` file'
52     'update:Updates box to a newer version, if available'
53 )
54
55 __task_list ()
56 {
57     local expl
58     declare -a tasks
59
60     tasks=(box destroy halt init package port provision reload resume ssh ssh_config status suspend up version)
61
62     _wanted tasks expl 'help' compadd $tasks
63 }
64
65 __box_list ()
66 {
67     _wanted application expl 'command' compadd $(command vagrant box list | sed -e 's/  *(.*)//g;s/ /\\ /g')
68 }
69
70 __vm_list ()
71 {
72     _wanted application expl 'command' compadd $(command grep "${VAGRANT_CWD:-.}/Vagrantfile" -oe '^[^#]*\.vm\.define *[:"]\([a-zA-Z0-9\._-]\+\)' 2>/dev/null | awk '{print substr($2, 2)}')
73     _wanted application expl 'command' compadd $(command ls "${VAGRANT_CWD:-.}/.vagrant/machines/" 2>/dev/null)
74 }
75
76 __vagrant-box ()
77 {
78     local curcontext="$curcontext" state line
79     typeset -A opt_args
80
81     _arguments -C \
82         ':command:->command' \
83         '*::options:->options'
84
85    case $state in
86        (command)
87            _describe -t commands "vagrant subcommand" _box_arguments
88            return
89        ;;
90
91        (options)
92            case $line[1] in
93                (repackage|remove)
94                    _arguments ':feature:__box_list'
95                ;;
96            esac
97        ;;
98     esac
99 }
100
101
102
103
104 local expl
105 local -a boxes installed_boxes
106
107 local curcontext="$curcontext" state line
108 typeset -A opt_args
109
110 _arguments -C \
111     ':command:->command' \
112     '*::options:->options'
113
114 case $state in
115   (command)
116       _describe -t commands "vagrant subcommand" _1st_arguments
117       return
118   ;;
119
120   (options)
121     case $line[1] in
122       (help)
123          _arguments ':feature:__task_list'
124       ;;
125
126       (box)
127           __vagrant-box
128       ;;
129       (up|provision|port|package|destroy|reload|ssh|ssh-config|halt|resume|status)
130       _arguments ':feature:__vm_list'
131     esac
132   ;;
133 esac