Module: Dapp::Helper::Cli

Included in:
CLI
Defined in:
lib/dapp/helper/cli.rb

Overview

Cli

Instance Method Summary collapse

Instance Method Details

#composite_options(opt) ⇒ Object



60
61
62
63
# File 'lib/dapp/helper/cli.rb', line 60

def composite_options(opt)
  @composite_options ||= {}
  @composite_options[opt] ||= []
end

#parse_options(cli, argv) ⇒ Object



5
6
7
8
9
10
11
# File 'lib/dapp/helper/cli.rb', line 5

def parse_options(cli, argv)
  cli.parse_options(argv)
rescue OptionParser::MissingArgument, OptionParser::InvalidOption, OptionParser::InvalidArgument => e
  STDERR.puts "Error: #{e.message}"
  puts cli.opt_parser
  exit 1
end

#parse_subcommand(cli, args) ⇒ Object

rubocop:disable Metrics/MethodLength



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/dapp/helper/cli.rb', line 22

def parse_subcommand(cli, args)
  argv = args
  divided_subcommand = []
  subcommand_argv = []

  cmd_arr = args.dup
  loop do
    if cli.class::SUBCOMMANDS.include? cmd_arr.join(' ')
      argv = args[0...args.index(cmd_arr.first)]
      divided_subcommand = cmd_arr
      index = cmd_arr.one? ? args.index(cmd_arr.first).next : args.index(cmd_arr.last).next
      subcommand_argv = args[index..-1]
    elsif !cmd_arr.empty?
      cmd_arr.pop
      next
    end
    break
  end

  [argv, divided_subcommand, subcommand_argv]
end

#prepare_subcommand(divided_subcommand) ⇒ Object



56
57
58
# File 'lib/dapp/helper/cli.rb', line 56

def prepare_subcommand(divided_subcommand)
  Array(divided_subcommand).map(&:capitalize).join
end

#required_argument(cli) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/dapp/helper/cli.rb', line 13

def required_argument(cli)
  unless (arg = cli.cli_arguments.pop)
    puts cli.opt_parser
    exit 1
  end
  arg
end

#run_subcommand(cli, divided_subcommand, subcommand_argv) ⇒ Object

rubocop:enable Metrics/MethodLength



45
46
47
48
49
50
51
52
53
54
# File 'lib/dapp/helper/cli.rb', line 45

def run_subcommand(cli, divided_subcommand, subcommand_argv)
  if !divided_subcommand.empty?
    cli.class.const_get(prepare_subcommand(divided_subcommand)).new.run(subcommand_argv)
  else
    STDERR.puts 'Error: subcommand not passed'
    puts
    puts cli.opt_parser
    exit 1
  end
end