Sha256: 6beee9b00007ac8ed172f35ef69ea30a87d0997dd7dda9324a966069277b38ed

Contents?: true

Size: 1.52 KB

Versions: 2

Compression:

Stored size: 1.52 KB

Contents

require 'git-utils/command'

class Open < Command

  def parser
    OptionParser.new do |opts|
      opts.banner = "Usage: git open"
      opts.on_tail("-h", "--help", "this usage guide") do
        puts opts.to_s; exit 0
      end
    end
  end

  # Returns the URL for the repository page.
  def page_url
    if service == 'stash' && protocol == 'ssh'
      pattern = /(.*)@([^:]*):?([^\/]*)\/([^\/]*)\/(.*)\.git/
      replacement = 'https://\2/projects/\4/repos/\5/browse?at=' +
                    current_branch
    elsif service == 'stash' && protocol == 'http'
      pattern = /(.*)@([^:\/]*)(:?[^\/]*)\/(.*)scm\/([^\/]*)\/(.*)\.git/
      replacement = 'https://\2\3/\4projects/\5/repos/\6/browse?at=' +
                    current_branch
    elsif protocol == 'ssh'
      pattern = /(.*)@(.*):(.*)\.git/
      replacement = 'https://\2/\3'
    elsif protocol == 'http'
      pattern = /https?\:\/\/(([^@]*)@)?(.*)\.git/
      replacement = 'https://\3'
    end
    origin_url.sub(pattern, replacement)
  end

  # Returns a command appropriate for executing at the command line.
  def cmd
    "#{open} #{page_url}"
  end

  private

    # Returns the system-dependent `open` command.
    def open
      if os_x?
        'open'
      elsif linux?
        'xdg-open'
      else
        raise "Platform #{RUBY_PLATFORM} not supported"
      end
    end

    # Returns true if platform is OS X.
    def os_x?
      RUBY_PLATFORM.match(/darwin/)
    end

    # Returns true if platform is Linux.
    def linux?
      RUBY_PLATFORM.match(/linux/)
    end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
git-utils-0.6.1 lib/git-utils/open.rb
git-utils-0.6.0 lib/git-utils/open.rb