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
|
# File 'lib/stack-service-base/command_line.rb', line 37
def run(args)
params = {}
a, = ARGV.join(' ').split( / -- /)
ARGV.replace a.split if a
ARGV << '-h' if ARGV.empty?
OptionParser.new do |o|
o.version = "#{StackServiceBase::VERSION}"
usage = [
'ssbase [options] COMMAND',
]
o.banner = "Version: #{o.version}\nUsage:\n\t#{usage.join "\n\t"}"
o.separator ''
o.separator 'Commands:'
COMMANDS.each { |name, cmd| o.separator "#{' ' * 5}#{name} - #{[cmd.help].flatten.join "\n#{' ' * (5+4 + name.size)}" }" }
o.separator ''
o.separator 'Options:'
COMMANDS.values.select{_1.options(o) if _1.respond_to? :options }
o.on('-h', '--help') { puts o; exit }
o.parse! args, into: params
params.transform_keys!{_1.to_s.gsub('-','_').to_sym}
command = args.shift || ''
raise "Unknown command: #{command}" unless COMMANDS.key?(command.to_sym)
COMMANDS[command.to_sym].run [], params, args,
rescue => e
puts e.message
ENV['DEBUG'] ? raise : exit(1)
end
end
|