Sha256: a348fd96bcc0a36abcb77d50c5d90cdb21e5c53b7f469b99a105cda317c29552

Contents?: true

Size: 1.64 KB

Versions: 3

Compression:

Stored size: 1.64 KB

Contents

# -*- coding: utf-8 -*-
module GitObjectBrowser
  class Main
    def execute
      host = '127.0.0.1'
      port = 8080
      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', 'dump objects') do
          puts 'not implemented yet'
          exit
        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])
      Server::Main.execute(target, host, port)
    end

    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

    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

    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
    private :parent_git_dir
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
git-object-browser-0.0.4 lib/git-object-browser/main.rb
git-object-browser-0.0.3 lib/git-object-browser/main.rb
git-object-browser-0.0.2 lib/git-object-browser/main.rb