fastlane-plugin-jira_issues_release_notes 0.3.5 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 231d9a7ac7864f73453eaabe86145af7dbf8878c3d88a04abb515469bb4171d4
4
- data.tar.gz: 979a99a94e15c89c9ac0226c597f890ec59039c612b517f64f5429b3ae6dd912
3
+ metadata.gz: f58449be91ef1bc4890ad8e1e3cff0048df15f6eabcab019b84f6e1eed4f115c
4
+ data.tar.gz: 87d076d95e1d5e6e3c4b33457a11cab52abc6b6ad97fb22bdcb9b2ba685d300d
5
5
  SHA512:
6
- metadata.gz: 3acdab6116521ba658598463b8b3ff9a55479b565ae57aa6c9efe66f5a14c958bb053fa3d90c8c5b9b46b22821fd715d46c59f0b796d213410b1205cc70f8a73
7
- data.tar.gz: 4988d48dfabc272793a3bcbd7923d8e1fe91e8cd0e1ed02f88b122888b60eff1c5e7ce5afa9d6ba5a6c652b1c11b05f126516935797c2e303b6652ee59872e9f
6
+ metadata.gz: 59d229f4caf627261ae8f25a760e850ccea0ee32e502459466d10dd23429bd760d8ecfc612e6d76496f31c692d1aa047bf55d3afd9133a2a23b01384b4ce58cc
7
+ data.tar.gz: 3ac248ade9dbda28ca71c0eaa089598628dc7d516992451194eb71341de0a8ef10f558563a85cd6eeb3e78c78f062b4c8e32df995e2d02181524dd250189d779
data/README.md CHANGED
@@ -4,6 +4,10 @@
4
4
 
5
5
 
6
6
 
7
+ It generates a release note based on the issues keys and descriptions found in the commits and branch name
8
+
9
+
10
+
7
11
  ## Getting Started
8
12
 
9
13
  This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-jira_issues_release_notes`, add it to your project by running:
@@ -14,15 +18,9 @@ fastlane add_plugin jira_issues_release_notes
14
18
 
15
19
 
16
20
 
17
- ## About jira_issues_release_notes
18
-
19
- It generates a release note based on the issues keys and descriptions found in the commits.
20
-
21
-
22
-
23
21
  ## Actions
24
22
 
25
- All actions requires some parameter to access Jira API.
23
+ All actions requires some parameters to access Jira API.
26
24
  **These are the arguments the all share:**
27
25
 
28
26
  | Argument | Type | Description | Optional | Default | Env Name |
@@ -37,17 +35,17 @@ All actions requires some parameter to access Jira API.
37
35
 
38
36
  ### branch_jira_issues_release_notes
39
37
 
40
- This action creates a changelog based on the issue key extracted from your branch name. For exemple a branch called `feature/ABC-1234-some-feature` will extract to `ABC-1234` issue key.
38
+ This action creates a release note based on the issue key extracted from your branch name. For example a branch called `feature/ABC-1234-some-feature` will extract the `ABC-1234` issue key.
41
39
 
42
- It should be used to generate version to validate you branch's feature before it be merged.
40
+ It should be used to generate version to validate you branch's feature before you merge it.
43
41
 
44
42
  **Arguments:**
45
43
 
46
- | Argument | Type | Description | Optional | Default | Env Name |
47
- | ------------- | ------------------------------ | ------------------------------------------------------------ | -------- | -------------------- | -------------------------- |
48
- | ticket_prefix | `String` or `Regex` | The prefix for yours jira issues | ✓ | `[A_Z]+` | `FL_FIND_TICKETS_MATCHING` |
49
- | extra_fields | `Hash` | A hash of extra Jira fields to display.<br />It should be a hash with key as the label for the key and value as the symbol representing the jira's key:<br />Example: `{ "My Custom Field" => :customfield_1 }` | ✓ | Empty Hash<br />`{}` | |
50
- | format | `slack`, `markdown` or `plain` | Defines the result format | ✓ | `markdown` | |
44
+ | Argument | Type | Description | Optional | Default | Env Name |
45
+ | ------------- | --------------------------------------- | ------------------------------------------------------------ | -------- | -------------------- | -------------------------- |
46
+ | ticket_prefix | `String` or `Regex` | The prefix for yours jira issues | ✓ | `[A_Z]+` | `FL_FIND_TICKETS_MATCHING` |
47
+ | extra_fields | `Hash` | A hash of extra Jira fields to display.<br />It should be a hash with key as the label for the key and value as the symbol representing the jira's key:<br />Example: `{ "My Custom Field" => :customfield_1 }` | ✓ | Empty Hash<br />`{}` | |
48
+ | format | `slack`, `markdown` , `html` or `plain` | Defines the result format | ✓ | `markdown` | |
51
49
 
52
50
  **Usage example:**
53
51
 
@@ -100,7 +98,7 @@ platform :android do
100
98
  link_to_download = upload_to_s3
101
99
 
102
100
  release_notes = jira_issues_release_notes(
103
- tag_prefix: 'Release/Android/v*',
101
+ tag_prefix: 'v*',
104
102
  ticket_prefix: 'ABC',
105
103
  username: ENV["FL_JIRA_USERNAME"],
106
104
  password: ENV["FL_JIRA_PASSWORD"],
@@ -123,14 +121,14 @@ end
123
121
 
124
122
  **Arguments:**
125
123
 
126
- | Argument | Type | Description | Optional | Default | Env Name |
127
- | ------------------ | ------------------------------ | ---------------------------------------------------------- | -------- | ----------------- | -------------------------- |
128
- | tag_prefix | `Regex` | Match prefix to find latest tag. Example: `release/ios/v*` | | | |
129
- | ticket_prefix | `String` or `Regex` | The prefix for yours jira issues | ✓ | `[A_Z]+` | `FL_FIND_TICKETS_MATCHING` |
130
- | tag_version_match | `String` | To parse version number from tag name | ✓ | `/\d+\.\d+\.\d+/` | |
131
- | validated_status | `Array` | List of jira issues status already validated | | | FL_JIRA_VALIDATED_STATUS |
132
- | to_validate_status | `Array` | List of jira issues status to be validated | | | FL_JIRA_TO_VALIDATE_STATUS |
133
- | format | `slack`, `markdown` or `plain` | Defines the result format | ✓ | `markdown` | |
124
+ | Argument | Type | Description | Optional | Default | Env Name |
125
+ | ------------------ | --------------------------------------- | ---------------------------------------------- | -------- | ----------------- | -------------------------- |
126
+ | tag_prefix | `Regex` | Match prefix to find latest tag. Example: `v*` | | | |
127
+ | ticket_prefix | `String` or `Regex` | The prefix for yours jira issues | ✓ | `[A_Z]+` | `FL_FIND_TICKETS_MATCHING` |
128
+ | tag_version_match | `String` | To parse version number from tag name | ✓ | `/\d+\.\d+\.\d+/` | |
129
+ | validated_status | `Array` | List of jira issues status already validated | | | FL_JIRA_VALIDATED_STATUS |
130
+ | to_validate_status | `Array` | List of jira issues status to be validated | | | FL_JIRA_TO_VALIDATE_STATUS |
131
+ | format | `slack`, `markdown` , `html` or `plain` | Defines the result format | ✓ | `markdown` | |
134
132
 
135
133
 
136
134
 
@@ -10,6 +10,7 @@ module Fastlane
10
10
 
11
11
  @format = params[:format]
12
12
  @extra_fields = params[:extra_fields]
13
+ @format_line_break = @format === 'html' ? '<br />' : "\n"
13
14
 
14
15
  ticket_code = regex.match branch
15
16
 
@@ -47,7 +48,6 @@ module Fastlane
47
48
  last_commit[:message]
48
49
  ].join("\n")
49
50
  end
50
-
51
51
  def self.style_text(text:, style:)
52
52
  # formats the text according to the style we're looking to use
53
53
 
@@ -59,24 +59,30 @@ module Fastlane
59
59
  "# #{text}"
60
60
  when "slack"
61
61
  "*#{text}*"
62
+ when "html"
63
+ "<h1>#{text}</h1>"
62
64
  else
63
65
  text
64
66
  end
65
67
  when "heading"
66
- case format
68
+ case @format
67
69
  when "markdown"
68
70
  "### #{text}"
69
71
  when "slack"
70
72
  "*#{text}*"
73
+ when "html"
74
+ "<h3>#{text}</h3>"
71
75
  else
72
76
  "#{text}:"
73
77
  end
74
78
  when "bold"
75
- case format
79
+ case @format
76
80
  when "markdown"
77
81
  "**#{text}**"
78
82
  when "slack"
79
83
  "*#{text}*"
84
+ when "html"
85
+ "<strong>#{text}</strong>"
80
86
  else
81
87
  text
82
88
  end
@@ -99,7 +105,7 @@ module Fastlane
99
105
  extra.flatten!
100
106
  ]
101
107
  .flatten!
102
- .join("\n")
108
+ .join(@format_line_break)
103
109
  when "markdown"
104
110
  extra = @extra_fields.map { |key, value| ["", "**► #{key.to_s}**", issue.attrs["fields"][value.to_s]] }
105
111
  [
@@ -108,7 +114,16 @@ module Fastlane
108
114
  extra.flatten!
109
115
  ]
110
116
  .flatten!
111
- .join("\n")
117
+ .join(@format_line_break)
118
+ when "html"
119
+ extra = @extra_fields.map { |key, value| ["", "<strong>&#9658; #{key.to_s}</strong>", issue.attrs["fields"][value.to_s]] }
120
+ [
121
+ "<strong>&#9658; #{issue_type}: <a href=\"#{link}\" target=\"_blank\">#{issue.summary}</a></strong> (#{status})",
122
+ issue.description,
123
+ extra.flatten!
124
+ ]
125
+ .flatten!
126
+ .join(@format_line_break)
112
127
  else
113
128
  extra = @extra_fields.map { |key, value| ["", "► #{key.to_s}", issue.attrs["fields"][value.to_s]] }
114
129
  [
@@ -117,7 +132,7 @@ module Fastlane
117
132
  extra.flatten!
118
133
  ]
119
134
  .flatten!
120
- .join("\n")
135
+ .join(@format_line_break)
121
136
  end
122
137
  end
123
138
 
@@ -149,11 +164,11 @@ module Fastlane
149
164
  ),
150
165
  FastlaneCore::ConfigItem.new(
151
166
  key: :format,
152
- description: "You can use either markdown, slack or plain",
167
+ description: "You can use either markdown, slack, html or plain",
153
168
  default_value: "markdown",
154
169
  optional: true,
155
170
  verify_block: proc do |value|
156
- UI.user_error!("Invalid format! You can use either markdown, slack or plain") unless ['markdown', 'slack', 'plain'].include?(value)
171
+ UI.user_error!("Invalid format! You can use either markdown, slack, html or plain") unless ['markdown', 'html', 'slack', 'plain'].include?(value)
157
172
  end
158
173
  ),
159
174
  FastlaneCore::ConfigItem.new(
@@ -27,6 +27,10 @@ module Fastlane
27
27
  end
28
28
 
29
29
  def self.run(params)
30
+
31
+ @format = params[:format]
32
+ @format_line_break = @format === 'html' ? '<br />' : "\n"
33
+
30
34
  tag = get_last_tag(
31
35
  match: params[:tag_prefix],
32
36
  debug: params[:debug]
@@ -80,49 +84,55 @@ module Fastlane
80
84
  to_validate = issues.select { |issue| params[:to_validate_status].include?(issue.status.name) }
81
85
  validated = issues.select { |issue| params[:validated_status].include?(issue.status.name) }
82
86
 
83
- generate_changelog(to_validate: to_validate, validated: validated, format: params[:format])
87
+ generate_changelog(to_validate: to_validate, validated: validated)
84
88
  end
85
89
 
86
- def self.generate_changelog(to_validate:, validated:, format:)
90
+ def self.generate_changelog(to_validate:, validated:)
87
91
  changelog = []
88
- changelog.concat(format_issues(label: 'Tasks to validate', issues: to_validate, format: format)) unless to_validate.empty?
92
+ changelog.concat(format_issues(label: 'Tasks to validate', issues: to_validate)) unless to_validate.empty?
89
93
  changelog.concat(['']) unless changelog.to_s.empty?
90
- changelog.concat(format_issues(label: 'Validated tasks', issues: validated, format: format)) unless validated.empty?
94
+ changelog.concat(format_issues(label: 'Validated tasks', issues: validated)) unless validated.empty?
91
95
  # changes = format_issues(issues: issues)
92
96
  changelog = ['No changes included.'] if changelog.to_s.empty?
93
97
 
94
- changelog.join("\n")
98
+ changelog.join(@format_line_break)
95
99
  end
96
100
 
97
- def self.style_text(text:, format:, style:)
101
+ def self.style_text(text:, style:)
98
102
  # formats the text according to the style we're looking to use
99
103
 
100
104
  # Skips all styling
101
105
  case style
102
106
  when "title"
103
- case format
107
+ case @format
104
108
  when "markdown"
105
109
  "# #{text}"
106
110
  when "slack"
107
111
  "*#{text}*"
112
+ when "html"
113
+ "<h1>#{text}</h1>"
108
114
  else
109
115
  text
110
116
  end
111
117
  when "heading"
112
- case format
118
+ case @format
113
119
  when "markdown"
114
120
  "### #{text}"
115
121
  when "slack"
116
122
  "*#{text}*"
123
+ when "html"
124
+ "<h3>#{text}</h3>"
117
125
  else
118
126
  "#{text}:"
119
127
  end
120
128
  when "bold"
121
- case format
129
+ case @format
122
130
  when "markdown"
123
131
  "**#{text}**"
124
132
  when "slack"
125
133
  "*#{text}*"
134
+ when "html"
135
+ "<strong>#{text}</strong>"
126
136
  else
127
137
  text
128
138
  end
@@ -131,23 +141,25 @@ module Fastlane
131
141
  end
132
142
  end
133
143
 
134
- def self.format_issue_link(issue:, format:)
144
+ def self.format_issue_link(issue:)
135
145
  # formats the link according to the output format we need
136
-
137
- case format
146
+ link = @jira_helper.url(issue: issue)
147
+ case @format
138
148
  when "slack"
139
- "*<#{@jira_helper.url(issue: issue)}|#{issue.key}>*: #{issue.summary}"
149
+ "*<#{link}|#{issue.key}>*: #{issue.summary}"
140
150
  when "markdown"
141
- "- **[#{issue.key}](#{@jira_helper.url(issue: issue)})**: #{issue.summary}"
151
+ "- **[#{issue.key}](#{link})**: #{issue.summary}"
152
+ when "html"
153
+ "&nbsp;&nbsp;- <strong><a href=\"#{link}\" target=\"_blank\">#{issue.key}</a><strong>: #{issue.summary}"
142
154
  else
143
- "- #{issue.key}: #{issue.summary} (#{@jira_helper.url(issue: issue)})"
155
+ "- #{issue.key}: #{issue.summary} (#{link})"
144
156
  end
145
157
  end
146
158
 
147
- def self.format_issues(label:, issues:, format:)
159
+ def self.format_issues(label:, issues:)
148
160
  [
149
- style_text(text: "► #{label}", style: 'heading', format: format),
150
- issues.map { |issue| format_issue_link(issue: issue, format: format) }
161
+ style_text(text: "► #{label}", style: 'heading'),
162
+ issues.map { |issue| format_issue_link(issue: issue) }
151
163
  ].flatten!
152
164
  end
153
165
 
@@ -213,11 +225,11 @@ module Fastlane
213
225
  ),
214
226
  FastlaneCore::ConfigItem.new(
215
227
  key: :format,
216
- description: "You can use either markdown, slack or plain",
228
+ description: "You can use either markdown, slack, html or plain",
217
229
  default_value: "markdown",
218
230
  optional: true,
219
231
  verify_block: proc do |value|
220
- UI.user_error!("Invalid format! You can use either markdown, slack or plain") unless ['markdown', 'slack', 'plain'].include?(value)
232
+ UI.user_error!("Invalid format! You can use either markdown, slack, html or plain") unless ['markdown', 'html', 'slack', 'plain'].include?(value)
221
233
  end
222
234
  ),
223
235
 
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module JiraIssuesReleaseNotes
3
- VERSION = "0.3.5"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-jira_issues_release_notes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.5
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erick Martins