class SafariBookmarksParser::Runner

Public Class Methods

known_commands() click to toggle source
# File lib/safari_bookmarks_parser/runner.rb, line 8
def known_commands
  @known_commands ||= {}
end
new(argv) click to toggle source
# File lib/safari_bookmarks_parser/runner.rb, line 17
def initialize(argv)
  @argv = argv.dup

  @parser = nil

  parse_options(@argv)
end
register_command(command_name, command_class) click to toggle source
# File lib/safari_bookmarks_parser/runner.rb, line 12
def register_command(command_name, command_class)
  known_commands[command_name.to_sym] = command_class
end

Public Instance Methods

run() click to toggle source
# File lib/safari_bookmarks_parser/runner.rb, line 25
def run
  command_name = @argv.shift

  if command_name
    command_class = self.class.known_commands[command_name.to_sym]

    raise Error, "unknown command: #{command_name}" unless command_class

    command_class.new(@argv).run
  else
    show_help(@parser)
  end
end

Private Instance Methods

do_parse(parser, argv) click to toggle source
# File lib/safari_bookmarks_parser/runner.rb, line 82
def do_parse(parser, argv)
  parser.order!(argv)
rescue OptionParser::ParseError => e
  raise Error, e.message
end
on_show_help(parser) click to toggle source
# File lib/safari_bookmarks_parser/runner.rb, line 68
def on_show_help(parser)
  parser.on('-h', '--help', 'Show this message') do
    show_help(parser)
    exit
  end
end
on_show_version(parser) click to toggle source
# File lib/safari_bookmarks_parser/runner.rb, line 75
def on_show_version(parser)
  parser.on('-v', '--version', 'Show version number') do
    puts "#{parser.program_name} #{VERSION}"
    exit
  end
end
parse_options(argv) click to toggle source
# File lib/safari_bookmarks_parser/runner.rb, line 53
def parse_options(argv)
  parser = OptionParser.new

  parser.banner = "Usage: #{parser.program_name} [options] command"

  parser.version = VERSION

  on_show_help(parser)
  on_show_version(parser)

  do_parse(parser, argv)

  @parser = parser
end
show_help(parser) click to toggle source
# File lib/safari_bookmarks_parser/runner.rb, line 41
    def show_help(parser)
      puts parser
      puts
      puts <<~MESSAGE
        Available commands are:

          - dump
          - dups
          - empty
      MESSAGE
    end