class GitObjectBrowser::Main

Public Instance Methods

execute() click to toggle source
# File lib/git-object-browser/main.rb, line 3
def execute
  host = '127.0.0.1'
  port = 8080
  dump = nil
  step = nil
  diff_dir = nil
  nextstep = false
  opts = OptionParser.new do |opts|
    opts.on('-p', '--port PORT', 'port number') do |value|
      port = value.to_i if 0 < value.to_i
    end
    opts.on('-b', '--bind HOST', 'address to bind') do |value|
      host = value
    end
    opts.on('-d', '--dump PATH', 'dump .git as JSON and HTMLs') do |value|
      dump = value
    end
    opts.on('--step STEP', 'dump JSONs into sub directory') do |value|
      step = value
    end
    opts.on('--diff OLD_JSON_DIR', 'dump JSONs with diff data') do |value|
      diff_dir = value
    end
    opts.on('--next', 'same with --step step${N} --diff step${N-1}') do |value|
      nextstep = true
    end
    opts.on_tail("-h", "--help", "show this help.") do
      puts opts
      exit
    end
    opts.on_tail("-v", "--version", "show version.") do
      puts "git-object-browser " + VERSION
      exit
    end
    opts.parse!(ARGV)
  end
  target = find_target(ARGV[0])
  if dump.nil?
    GitObjectBrowser::Server::Main.execute(target, host, port)
  else
    if nextstep
      step = :next
      diff_dir = nil
    end
    GitObjectBrowser::Dumper::Main.execute(target, dump, step, diff_dir)
  end
end
find_target(target = nil, git_dir_name = '.git') click to toggle source
# File lib/git-object-browser/main.rb, line 51
def find_target(target = nil, git_dir_name = '.git')
  target ||= Dir::pwd
  return target if git_dir?(target)

  if File.directory?(target)
    dir = parent_git_dir(target, git_dir_name)
    return dir if dir
  end

  raise 'Git directory not found'
end
git_dir?(dir) click to toggle source
# File lib/git-object-browser/main.rb, line 63
def git_dir?(dir)
  return false unless File.directory?(dir)
  return false unless File.directory?(File.join(dir, 'objects'))
  return false unless File.file?(File.join(dir, 'HEAD'))
  true
end

Private Instance Methods

parent_git_dir(target, git_dir_name) click to toggle source
# File lib/git-object-browser/main.rb, line 70
def parent_git_dir(target, git_dir_name)
  begin
    gitdir = File.join(target, git_dir_name)
    return gitdir if git_dir?(gitdir)
    lastdir = target
    target = File.dirname(target)
  end while lastdir != target
  nil
end