Class: Gerrit2jiracomment::ToJira

Inherits:
Object
  • Object
show all
Defined in:
lib/gerrit2jiracomment.rb

Overview

React on events by sending data to jira

Instance Method Summary collapse

Constructor Details

#initialize(logger, jira) ⇒ ToJira

Returns a new instance of ToJira.



53
54
55
56
# File 'lib/gerrit2jiracomment.rb', line 53

def initialize(logger, jira)
  @logger = logger
  @jira = jira
end

Instance Method Details

#assemble_change_merged_comment(event, server, uri) ⇒ Object



93
94
95
96
97
98
99
# File 'lib/gerrit2jiracomment.rb', line 93

def assemble_change_merged_comment(event, server, uri)
  base_url = "#{uri.scheme}://#{uri.host}"
  [title_line(event), author_line(event), submitter_line(event),
   changeset_line(event), branch_line(event),
   project_line(server, event), commit_line(base_url, event)]
    .join("\n")
end

#author_line(event) ⇒ Object



64
65
66
# File 'lib/gerrit2jiracomment.rb', line 64

def author_line(event)
  "Author: #{event.patchSet.author.email}"
end

#branch_line(event) ⇒ Object



81
82
83
# File 'lib/gerrit2jiracomment.rb', line 81

def branch_line(event)
  "Branch: #{event.change.branch}"
end

#change_merged(log, event, server) ⇒ Object



113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/gerrit2jiracomment.rb', line 113

def change_merged(log, event, server)
  log = LoggerWithTag.new(log, 'changeset')

  log.debug("Send change merged to jira #{event}")

  message = event.change.commitMessage
  log.debug("Found commit: #{event.change.subject}\n#{message}")

  found = false
  message.scan(Gerrit2jiracomment.regexp).map(&:strip).each do |match|
    found ||= handle_change_merged_issue_comment(match, log, event, server)
  end

  found || log.fail(ProcessException, "No jira-issue found in #{event}")
end

#changeset_line(event) ⇒ Object



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

def changeset_line(event)
  url = event.change.url
  "Changeset: [#{url}|#{url}]"
end

#commit_line(base_url, event) ⇒ Object



72
73
74
# File 'lib/gerrit2jiracomment.rb', line 72

def commit_line(base_url, event)
  "Commit: #{gitiles_url(base_url, event)}"
end

#gitiles_url(base_url, event) ⇒ Object



58
59
60
61
62
# File 'lib/gerrit2jiracomment.rb', line 58

def gitiles_url(base_url, event)
  gitiles = "#{base_url}/plugins/gitiles/"
  "[#{event.patchSet.revision}|" \
  "#{gitiles}#{event.change.project}/+/#{event.patchSet.revision}]"
end

#handle_change_merged_issue_comment(issue, log, event, server) ⇒ Object



101
102
103
104
105
106
107
108
109
110
111
# File 'lib/gerrit2jiracomment.rb', line 101

def handle_change_merged_issue_comment(issue, log, event, server)
  log.debug("Found jira issue comment: '#{issue}'")
  uri = URI.parse(event.change.url)
  comment_text = assemble_change_merged_comment(event, server, uri)
  log.debug("Adding #{comment_text} to jira #{issue}")
  @jira.Issue.find(issue).comments.build.save!(body: comment_text)
  true
rescue JIRA::HTTPError => e
  log.error("Cannot find #{issue} in our jira", e)
  false
end

#project_line(server, event) ⇒ Object



85
86
87
# File 'lib/gerrit2jiracomment.rb', line 85

def project_line(server, event)
  "Project: #{server}/#{event.change.project}"
end

#submitter_line(event) ⇒ Object



68
69
70
# File 'lib/gerrit2jiracomment.rb', line 68

def submitter_line(event)
  "Submitter: #{event.submitter.email}"
end

#title_line(event) ⇒ Object



89
90
91
# File 'lib/gerrit2jiracomment.rb', line 89

def title_line(event)
  "Title: #{event.change.subject}"
end