class Git::Duet::CliOptions

Public Class Methods

parse_options(method_name, argv) click to toggle source
# File lib/git/duet/cli_options.rb, line 5
def parse_options(method_name, argv)
  case method_name
  when 'pre_commit', 'install_hook'
    parse_generic_options(argv)
  else
    send("parse_#{method_name}_options", argv)
  end
end

Private Class Methods

parse_commit_options(argv) click to toggle source
# File lib/git/duet/cli_options.rb, line 60
def parse_commit_options(argv)
  opts_argv = []
  opts_argv << '-q' if argv.delete('-q')
  options = with_common_opts(opts_argv, 'Usage: __PROG__').last
  options[:passthrough_args] = argv
  options
end
parse_duet_options(argv) click to toggle source
# File lib/git/duet/cli_options.rb, line 35
def parse_duet_options(argv)
  parse_options_with_positional_args(
    argv,
    '<alpha-initials> <omega-initials>'
  ) do |leftover_argv, options|
    options[:alpha], options[:omega] = leftover_argv[0..1]
  end
end
parse_generic_options(argv) click to toggle source
# File lib/git/duet/cli_options.rb, line 56
def parse_generic_options(argv)
  with_common_opts(argv, 'Usage: __PROG__').last
end
parse_options_with_positional_args(argv, usage) { |leftover_argv, options| ... } click to toggle source
# File lib/git/duet/cli_options.rb, line 44
def parse_options_with_positional_args(argv, usage)
  leftover_argv, options = with_common_opts(
    argv, 'Usage: __PROG__ [options] ' << usage
  ) do |opts, options_hash|
    opts.on('-g', '--global', 'Change global git config') do |_|
      options_hash[:global] = true
    end
  end
  yield leftover_argv, options
  options
end
parse_solo_options(argv) click to toggle source
# File lib/git/duet/cli_options.rb, line 28
def parse_solo_options(argv)
  parse_options_with_positional_args(
    argv, '<soloist-initials>') do |leftover_argv, options|
    options[:soloist] = leftover_argv.first
  end
end
with_common_opts(argv, banner) { |opts, options| ... } click to toggle source
# File lib/git/duet/cli_options.rb, line 16
def with_common_opts(argv, banner)
  options = {}
  leftover_argv = OptionParser.new do |opts|
    opts.banner = banner.gsub(/__PROG__/, opts.program_name)
    opts.on('-q', 'Silence output') do |_|
      options[:quiet] = true
    end
    yield opts, options if block_given?
  end.parse!(argv)
  [leftover_argv, options]
end