Class: Danger::DangerJiraIssueLinks
- Inherits:
-
Plugin
- Object
- Plugin
- Danger::DangerJiraIssueLinks
- Defined in:
- lib/jira_issue_links/plugin.rb
Overview
Collect issue mentions from git commit messages. Results are passed out as a table in markdown.
Instance Attribute Summary collapse
-
#jira_context_path ⇒ String
Jira context path Default - empty string.
-
#jira_password ⇒ String
Jira password.
-
#jira_site ⇒ String
Jira site url.
-
#jira_username ⇒ String
Jira username.
Instance Method Summary collapse
-
#collect_issues_from_commits ⇒ Array<String>
Find all issue references in commit messages.
-
#print_links_only ⇒ void
Generates a ‘markdown` list of issues with links No required access to Jira, needs only base url - `jira_site`.
-
#print_links_with_titles ⇒ void
Generates a ‘markdown` table of issues with type, title and link.
Instance Attribute Details
#jira_context_path ⇒ String
Jira context path Default - empty string
40 41 42 |
# File 'lib/jira_issue_links/plugin.rb', line 40 def jira_context_path @jira_context_path end |
#jira_password ⇒ String
Jira password
29 30 31 |
# File 'lib/jira_issue_links/plugin.rb', line 29 def jira_password @jira_password end |
#jira_site ⇒ String
Jira site url
34 35 36 |
# File 'lib/jira_issue_links/plugin.rb', line 34 def jira_site @jira_site end |
#jira_username ⇒ String
Jira username
24 25 26 |
# File 'lib/jira_issue_links/plugin.rb', line 24 def jira_username @jira_username end |
Instance Method Details
#collect_issues_from_commits ⇒ Array<String>
Find all issue references in commit messages. Message should starts with pattern: ‘[TASK-123]`
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/jira_issue_links/plugin.rb', line 46 def collect_issues_from_commits all_issues = [] git.commits.each do |c| captures = c..match(/^\[(\w+-\d+)\]*./)&.captures if captures all_issues.push(captures[0]) end end all_issues.uniq end |
#print_links_only ⇒ void
This method returns an undefined value.
Generates a ‘markdown` list of issues with links No required access to Jira, needs only base url - `jira_site`.
99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/jira_issue_links/plugin.rb', line 99 def print_links_only found_issues = collect_issues_from_commits return if found_issues.empty? = "### Jira issues\n\n" found_issues.each do |issue_id| << "[#{issue_id}](#{jira_site}/browse/#{issue_id})\n\n" end markdown end |
#print_links_with_titles ⇒ void
This method returns an undefined value.
Generates a ‘markdown` table of issues with type, title and link. Required access to Jira site.
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/jira_issue_links/plugin.rb', line 61 def print_links_with_titles found_issues = collect_issues_from_commits return if found_issues.empty? jira_context_path = '' if jira_context_path.nil? client = JIRA::Client.new( username: jira_username, password: jira_password, site: jira_site, context_path: jira_context_path, auth_type: :basic ) = "## Jira issues\n\n" << "| | |\n" << "| --- | ----- |\n" begin found_issues.each do |issue_id| issue = client.Issue.jql("ID = '#{issue_id}'").first return if issue.nil? description = issue.summary description = description.gsub(/[<|>\[\]]/) { |bracket| "\\#{bracket}" } << " | " << "[#{description}](#{jira_site}/browse/#{issue_id})\n" end rescue JIRA::HTTPError => e print e. end markdown end |