class Captify::Cli

Capture inputs from command line interface.

Public Class Methods

new(kernel=Kernel) click to toggle source
# File lib/captify/cli.rb, line 9
def initialize(kernel=Kernel)
  @kernel = kernel
end

Public Instance Methods

parse_argv(argv) click to toggle source
# File lib/captify/cli.rb, line 13
def parse_argv(argv)
  options = {}
  argv = argv.clone
  parse_options! argv, options
  parse_target_dir! argv, options
  return options
rescue AbortException => ex
  @kernel.abort "#{ex.message}"
rescue ExitException => ex
  @kernel.puts "#{ex.message}"
  @kernel.exit
end

Private Instance Methods

parse_options!(argv, options) click to toggle source
# File lib/captify/cli.rb, line 41
def parse_options!(argv, options)
  opts = OptionParser.new do |opts|
    opts.banner = "Usage: captify [options] directory"
    opts.separator ""
    opts.separator "Options:"
    opts.on("-t", "--template TEMPLATE_NAME", 
            "Specify the template to be used") do |template|
      options[:template_name] = template
    end
    opts.on_tail("-h", "--help", "Show this message") do 
      raise ExitException, opts.help
    end
  end
  opts.parse! argv
  return opts.help
rescue OptionParser::InvalidOption => ex
  raise AbortException, "#{ex.message}\n\n#{opts.help}"
end
parse_target_dir!(argv, options) click to toggle source
# File lib/captify/cli.rb, line 31
def parse_target_dir!(argv, options)
  if argv.empty?
    raise AbortException, "Please specify a target dir."
  elsif argv.length > 1
    raise AbortException, "Too many target dirs; please specify only the dir to captify."
  end

  options[:target_dir] = argv.delete_at(0)
end