def application_parse_options(help=false)
@options ||= {:verbose => false}
@options = clioptions(help) do |parser, options|
parser.define_head application_description if application_description
parser.banner = ""
if application_usage
parser.separator ""
application_usage.each do |u|
parser.separator "Usage: #{u}"
end
parser.separator ""
end
parser.separator "Application Options" unless application_cli_arguments.empty?
parser.define_tail ""
parser.define_tail "The Marionette Collective #{MCollective.version}"
application_cli_arguments.each do |carg|
opts_array = []
opts_array << :on
if carg.include?(:default)
configuration[carg[:name]] = carg[:default]
end
if carg[:arguments].is_a?(Array)
carg[:arguments].each {|a| opts_array << a}
else
opts_array << carg[:arguments]
end
opts_array << carg[:type] if carg[:type] && ![:boolean, :bool, :array].include?(carg[:type])
opts_array << carg[:description]
if [:bool, :boolean].include?(carg[:type])
parser.send(*opts_array) do |v|
validate_option(carg[:validate], carg[:name], v)
configuration[carg[:name]] = v
end
elsif carg[:type] == :array
parser.send(*opts_array) do |v|
validate_option(carg[:validate], carg[:name], v)
configuration[carg[:name]] = [] unless configuration.include?(carg[:name])
configuration[carg[:name]] << v
end
else
parser.send(*opts_array) do |v|
validate_option(carg[:validate], carg[:name], v)
configuration[carg[:name]] = v
end
end
end
end
end