Module: Rbcli::Parser

Defined in:
lib/rbcli/engine/parser.rb

Class Method Summary collapse

Class Method Details

.parseObject



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]\n    opt :generate_config, 'Generate a new config file' #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"