Class: GitoriousMergeRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/gitorious_merge_request.rb,
lib/gitorious_merge_request/version.rb

Constant Summary collapse

Version =
'2.0.1'

Instance Method Summary collapse

Instance Method Details

#cmd_checkout(opts) ⇒ Object



76
77
78
79
80
# File 'lib/gitorious_merge_request.rb', line 76

def cmd_checkout opts
  repo, id = parse_code opts[:code]
  mr = Gitorious::MergeRequest.new repo, id
  mr.checkout
end

#cmd_diff(opts) ⇒ Object



82
83
84
85
86
# File 'lib/gitorious_merge_request.rb', line 82

def cmd_diff opts
  repo, id = parse_code opts[:code]
  mr = Gitorious::MergeRequest.new repo, id
  mr.diff
end

#cmd_list(opts) ⇒ Object



67
68
69
70
71
72
73
74
# File 'lib/gitorious_merge_request.rb', line 67

def cmd_list opts
  repo, id = parse_code opts[:code]
  status = opts[:status] || ''
  list = Gitorious::MergeRequest.list repo, status
  list.each do |mr|
    puts "#{mr.id} from #{mr.username}: #{mr.summary}"
  end
end

#cmd_new(opts) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/gitorious_merge_request.rb', line 25

def cmd_new opts
  opts[:forked_branch] ||= Git.current_branch

  Trollop::die :summary, "must exist" unless opts[:summary]
  Trollop::die :forked, "must exist" unless opts[:forked_repo]
  Trollop::die :forked_branch, "must exist" unless opts[:forked_branch]
  Trollop::die :target, "must exist" unless opts[:target_repo]
  Trollop::die :target_branch, "must exist" unless opts[:target_branch]

   opts
  puts "Opening merge request page"
  mr = Gitorious::MergeRequest.create opts
  puts "YOUR NEW MERGE REQUEST\n"
  show mr
end

#cmd_rm(opts) ⇒ Object



55
56
57
58
59
# File 'lib/gitorious_merge_request.rb', line 55

def cmd_rm opts
  repo, id = parse_code opts[:code]
   opts
  Gitorious::MergeRequest.delete repo, id
end

#cmd_show(opts) ⇒ Object



61
62
63
64
65
# File 'lib/gitorious_merge_request.rb', line 61

def cmd_show opts
  repo, id = parse_code opts[:code]
  mr = Gitorious::MergeRequest.new repo, id
  show mr
end

#login(opts) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/gitorious_merge_request.rb', line 16

def  opts
  Trollop::die :email, "must exist" unless opts[:email]
  email = opts[:email]
  password = ask('Password: '){ |q| q.echo = false }

  puts 'Login...'
  Gitorious. email, password
end

#parse_code(code) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/gitorious_merge_request.rb', line 41

def parse_code code
  id = Integer(code) rescue nil
  id = nil if id.zero?
  if id or code.blank?
    repo = $origin_repo
  else
    raise 'Invalid code format' unless code =~ /(.+):(\d+)/
    repo_or_remote, id = $1, $2.to_i
    repo = if (remote = Gitorious.remote_to_repo(repo_or_remote))
             then remote else repo_or_remote end
  end
  [repo, id]
end

#show(mr) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/gitorious_merge_request.rb', line 88

def show mr
#Requester: #{mr.requester}
  puts <<-EOS
ID: #{mr.id} (#{Gitorious::MRUrl % {:repo => mr.target_repo, :id => mr.id}})
User: #{mr.username} (#{Gitorious::Host}/#{mr.username})
Summary: #{mr.summary}
Proposal:
#{mr.proposal}

Fork: branch #{mr.forked_branch} of #{mr.forked_repo}  (#{Gitorious::Host}/#{mr.forked_repo})
Target: branch #{mr.target_branch} of #{mr.target_repo} (#{Gitorious::Host}/#{mr.target_repo})
Ending commit: #{mr.ending_commit}
Merge base SHA: #{mr.merge_base_sha}

EOS
end