def self.default_synopsis main
s = "#{ main.name }"
if main.mode_name != 'main'
s << " #{ main.fully_qualified_mode.join ' ' }"
end
unless main.modes.empty?
modes = main.modes.keys.join('|')
s << " (#{ modes })"
end
main.parameters.each do |p|
if p.type == :argument
if(p.required? and p.arity != -1)
if p.arity > 0
p.arity.times{ s << " #{ p.name }" }
else
(p.arity.abs - 1).times{ s << " #{ p.name }" }
s << " #{ p.name }*"
end
else
if p.arity > 0
a = []
p.arity.times{ a << "#{ p.name }" }
s << " [#{ a.join ' ' }]"
else
a = []
(p.arity.abs - 1).times{ a << "#{ p.name }" }
a << "#{ p.name }*"
s << " [#{ a.join ' ' }]"
end
end
end
end
main.parameters.each do |p|
if p.type == :keyword
if p.required?
s << " #{ p.name }=#{ p.name }"
else
s << " [#{ p.name }=#{ p.name }]"
end
end
end
n = 0
main.parameters.each do |p|
if p.type == :option
if p.required?
case p.argument
when :required
s << " --#{ p.name }=#{ p.name }"
when :optional
s << " --#{ p.name }=[#{ p.name }]"
else
s << " --#{ p.name }"
end
else
n += 1
end
end
end
if n > 0
s << " [options]+"
end
??
s
end