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
|
# File 'lib/rbcli/engine/parser.rb', line 8
def self.parse
@cliopts = Trollop::options do
data = Rbcli.configuration
version "#{data[:scriptname]} version: #{data[:version]}"
banner "\#{data[:description]}\nFor more information on individual commands, run `\#{data[:scriptname]} <command> -h`.\n\nUsage:\n \#{data[:scriptname]} [options] command [parameters]\n\nCommands:\n\#{Rbcli::Command.descriptions 6, 21}\n\n[options]:\n EOS\n data[:options].each do |name, opts|\n opts[:default] = nil unless opts.key? :default\n opts[:required] = false unless opts.key? :required\n opts[:permitted] = nil unless opts.key? :permitted\n opt name.to_sym, opts[:description], type: opts[:type], default: opts[:default], required: opts[:required], permitted: opts[:permitted]\n end\n opt :json_output, 'Output result in machine-friendly JSON format', :type => :boolean, :default => false if data[:allow_json]\n opt :config_file, 'Specify a config file manually', :type => :string, :default => data[:config_userfile] unless data[:config_userfile].nil?\n opt :generate_config, 'Generate a new config file' unless data[:config_userfile].nil? #defaults to false\n stop_on Rbcli::Command.commands.keys\n end\n\n @cmd = [ARGV.shift] # get the subcommand\n if @cliopts[:generate_config]\n Rbcli::Config::generate_userconf @cliopts[:config_file]\n puts \"User config generated at \#{@cliopts[:config_file]} using default values.\"\n elsif @cmd[0].nil?\n if Rbcli.configuration[:default_action].nil?\n Trollop::educate\n else\n Rbcli.configuration[:default_action].call @cliopts\n end\n elsif Rbcli::Command.commands.key? @cmd[0]\n @cmd << Rbcli::Command.commands[@cmd[0]].parseopts\n\n Rbcli.configuration[:pre_hook].call @cliopts unless Rbcli.configuration[:pre_hook].nil?\n Rbcli::Command.runcmd(@cmd.shift, @cmd[0], @cliopts)\n Rbcli.configuration[:post_hook].call @cliopts unless Rbcli.configuration[:post_hook].nil?\n else\n Trollop::die \"Unknown subcommand \#{@cmd[0].inspect}\"\n end\n\nend\n"
|