class Upstreamer::CLI

Public Class Methods

new(argv = ARGV) click to toggle source
# File lib/upstreamer/cli.rb, line 12
def initialize(argv = ARGV)
  @argv = argv
end
run(argv = ARGV) click to toggle source
# File lib/upstreamer/cli.rb, line 8
def self.run(argv = ARGV)
  self.new(argv).run
end

Public Instance Methods

current_directory() click to toggle source
# File lib/upstreamer/cli.rb, line 47
def current_directory
  Dir.pwd
end
log_error(message) click to toggle source
# File lib/upstreamer/cli.rb, line 51
def log_error(message)
  STDERR.puts(message) unless quiet
end
quiet() click to toggle source
# File lib/upstreamer/cli.rb, line 55
def quiet
  false
end
run() click to toggle source
# File lib/upstreamer/cli.rb, line 16
def run
  directory = specified_directory || current_directory
  repo = Rugged::Repository.new(directory)

  if repo.remotes['upstream']
    log_error "Error: Remote 'upstream' already exists. (#{repo.remotes['upstream'].url})"
    return
  end

  remote = repo.remotes['origin']                               # https://github.com/meganemura/bundler.git
  unless remote
    log_error "Error: Could not find remote 'origin'. (#{directory})"
    return
  end
  username_repository = remote.url[/github.com\/(.*)\.git/, 1]  # meganemura/bundler

  repository = Octokit.repository(username_repository)
  unless repository.fork?
    log_error "Error: This repository is not forked repository. (#{directory})"
    return
  end
  upstream_url = repository.parent.clone_url

  repo.remotes.create('upstream', upstream_url)
  puts "git remote add upstream #{upstream_url}"
end
specified_directory() click to toggle source
# File lib/upstreamer/cli.rb, line 43
def specified_directory
  @argv.first
end