class Git::Browse::Remote::Runner

Public Class Methods

new(args) click to toggle source
# File lib/git/browse/remote/runner.rb, line 7
def initialize(args)
  @args = args
  @core = Core.new
end

Public Instance Methods

parse_args!() click to toggle source
# File lib/git/browse/remote/runner.rb, line 12
def parse_args!
  OptionParser.new do |opt|
    opt.banner  = 'git browse-remote [options] [<commit> | <remote>] [--] [<file>]'
    opt.version = VERSION
    opt.on('-r', '--remote=<remote>', 'specify remote') { |r| @core.remote = r }

    opt.on('--stdout', 'prints URL instead of opening browser') { @stdout = true }

    opt.on('--top', 'open `top` page') { @core.mode = :top }
    opt.on('--rev', 'open `rev` page') { @core.mode = :rev }
    opt.on('--ref', 'open `ref` page') { @core.mode = :ref }
    opt.on('--pr',  'open `pr` page')  { @core.mode = :pr  }
    opt.on('--init [<host>=<recipe>]', 'initialize default url mappings') do |config|
      if config
        host, name = *config.split(/=/, 2)
      else
        host, name = 'github.com', 'github'
      end

      STDERR.puts "Writing config for #{host}..."

      @core.init!(host, name.to_sym)

      STDERR.puts 'Mappings generated:'
      exec "git config --get-regexp ^browse-remote\\.#{host}\\."
    end
    opt.on('-L <n>[,<m>]', 'specify line number (only meaningful on file mode)') { |lines| @core.lines = lines.split(/[,\-]/).map(&:to_i).uniq  }
  end.parse!(@args)

  @core.target, @core.file = *@args[0..1]
end
run() click to toggle source
# File lib/git/browse/remote/runner.rb, line 44
def run
  parse_args!

  if @stdout
    puts @core.url
  else
    exec 'git', 'web--browse', @core.url
  end
end