_vagrant 3.43 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#compdef vagrant 
#autoload

# vagrant zsh completion, based on homebrew completion

__task_list ()
{
  local expl
  declare -a tasks

  tasks=(box destroy halt init package provision reload resume ssh ssh_config status suspend up version)

  _wanted tasks expl 'help' compadd $tasks
}

__box_list ()
{
  _wanted application expl 'hxlp' compadd $(command ls -1 $HOME/.vagrant/boxes 2>/dev/null| sed -e 's/ /\\ /g')
}

__vagrant-box ()
{
 local curcontext="$curcontext" state line
        typeset -A opt_args

        _arguments -C \
		':command:->command' \
		'*::options:->options'

        case $state in
                (command)

                       # local -a subcommands
                       # subcommands=(
                       #         'start:Start a new release branch'
                       #         'finish:Finish a release branche.'
                       #         'list:List all your release branches. (Alias to `git flow release`)'
                       # )
                       # _describe -t commands 'git flow release' subcommands
                       # _arguments \
                       # -v'[Verbose (more) output]'
       _describe -t commands "gem subcommand" _box_arguments
       return
                ;;

                (options)
                        case $line[1] in

                                (repackage)
				       _arguments \
						-F'[Fetch from origin before performing finish]' \
						-r'[Rebase instead of merge]'\
							':feature:__box_list' 



                                ;;
                        esac
                ;;
         esac

}

local -a _1st_arguments
_1st_arguments=(
  'box:Box commands'
  'destroy:Destroys the vagrant environment'
  'halt:Halts the currently running vagrant environment'
  'help:[TASK] Describe available tasks or one specific task'
  'init:[box_name] [box_url] Initializes current folder for Vagrant usage'
  'package:Packages a vagrant environment for distribution'
  'provision:Run the provisioner'
  'reload:Reload the vagrant environment'
  'resume:Resumes a suspend vagrant environment'
  'ssh:SSH into the currently running environment'
  'ssh_config:outputs .ssh/config valid syntax for connecting to this environment via ssh.'
  'status:Shows the status of the current Vagrant environment.'
  'suspend:Suspends the currently running vagrant environment'
  'up:Creates the vagrant environment'
  'version:Prints the Vagrant version information'
)

local -a _box_arguments
_box_arguments=(
  'add:NAME URI Add a box to the system'
  'help:COMMAND Describe subcommands or one specific subcommand'
  'list:Lists all installed boxes'
  'remove:NAME Remove a box from the system'
  'repackage:NAME Repackage an installed box into a `.box` file.'
)

local expl
local -a boxes installed_boxes

#_arguments \
#  '(-v --version)'{-v,--version}'[show version]' \
#  '(-h --help)'{-h,--help}'[show help]' \
#  '*:: :->subcmds' && return 0
        local curcontext="$curcontext" state line
        typeset -A opt_args

  _arguments -C \
        ':command:->command' \
        '*::options:->options'




#echo $state
#echo -e "\n\n\n\n"
#echo $line[1]

case $state in

  (command)

	  _describe -t commands "gem subcommand" _1st_arguments
	  return
  ;;

  (options)

    case $line[1] in

      (help)
	       _arguments \
			-F'[Fetch from origin before performing finish]' \
			-r'[Rebase instead of merge]'\
				':feature:__task_list' 

      ;;

      (box)

        __vagrant-box
      ;;
    esac
  ;;
esac