renogen 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/lib/renogen/change_log/writer.rb +13 -1
- data/lib/renogen/config.rb +2 -1
- data/lib/renogen/version.rb +1 -1
- data/spec/lib/renogen/change_log/writer_spec.rb +58 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 882d9056311e5a9baba8dd05bd1ec8c2ada3e5d84d612abbb15940140e07f9ed
|
4
|
+
data.tar.gz: ece836f07e37055b4d84180c7c9522d32814e5c1839e2484e4cf2354acff29f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d2edd0513ee545a1b26e0f78846deb543e38ba0227e96d92b6497435916563684f61df58673650e12634e647bdae4e0cde547ee38052d6f53b5f4ea01a2d76e
|
7
|
+
data.tar.gz: 6395af9fc76aefa6a3f126cc633aeca9eb80330eb6ab95f59be48f04522ead09f13ab3bf70e96eb923d20c7421d26266634aa7b05f5da52d960ef4ee517477c9
|
data/README.md
CHANGED
@@ -138,6 +138,7 @@ with the following keys:
|
|
138
138
|
| `changelog_path` | The directory where the feature note files are stored. | `./change_log` | `./doc/src/changes` |
|
139
139
|
| `default_headings` | The headings/group names that will be printed into a feature note file created by the `new` command. Ignored when there is a rule defined for the given file name. | `%w[Summary Detailed Tasks]` | `%w[Title Description Deployment]` |
|
140
140
|
| `allowed_values` | Allowed values for default headings. See [Allowed Values](#AllowedValues). | `{}` (none) | |
|
141
|
+
| `remove_duplicates` | Remove duplicate items from output release notes. Not applicable when using table formats (e.g`csv` or `markdown_table`). | `false` | |
|
141
142
|
|
142
143
|
<a name="AllowedValues"></a>
|
143
144
|
## Allowed Values
|
@@ -50,10 +50,22 @@ module Renogen
|
|
50
50
|
def output_groups(groups)
|
51
51
|
groups.each do |group, changes|
|
52
52
|
puts formatter.write_group(group)
|
53
|
-
changes.each { |change| output_change(change) }
|
53
|
+
deduped_changes(changes).each { |change| output_change(change) }
|
54
54
|
puts formatter.write_group_end
|
55
55
|
end
|
56
56
|
end
|
57
|
+
|
58
|
+
def deduped_changes(changes)
|
59
|
+
return changes unless config.remove_duplicates
|
60
|
+
|
61
|
+
changes.uniq { |c| c.to_s }
|
62
|
+
end
|
63
|
+
|
64
|
+
private
|
65
|
+
|
66
|
+
def config
|
67
|
+
Config.instance
|
68
|
+
end
|
57
69
|
end
|
58
70
|
end
|
59
71
|
end
|
data/lib/renogen/config.rb
CHANGED
@@ -8,7 +8,7 @@ module Renogen
|
|
8
8
|
class Config
|
9
9
|
include Singleton
|
10
10
|
attr_accessor :single_line_format, :input_source, :output_format, :supported_keys, :changelog_path,
|
11
|
-
:default_headings, :validations
|
11
|
+
:default_headings, :validations, :remove_duplicates
|
12
12
|
|
13
13
|
def initialize
|
14
14
|
config_file = load_yaml_config
|
@@ -19,6 +19,7 @@ module Renogen
|
|
19
19
|
self.changelog_path = config_file['changelog_path'] || './change_log'
|
20
20
|
self.default_headings = config_file['default_headings'] || %w(Summary Detailed Tasks)
|
21
21
|
self.validations = config_file['allowed_values']
|
22
|
+
self.remove_duplicates = config_file['remove_duplicates'] || false
|
22
23
|
end
|
23
24
|
|
24
25
|
# Renogen configuration extension
|
data/lib/renogen/version.rb
CHANGED
@@ -36,6 +36,9 @@ describe Renogen::ChangeLog::Writer do
|
|
36
36
|
expected_output.split("\n").each do |line|
|
37
37
|
expect($stdout.gets.strip).to eq(line)
|
38
38
|
end
|
39
|
+
|
40
|
+
# read remaining output and check we reached the end
|
41
|
+
expect($stdout.read.gsub("\n", '')).to be_empty
|
39
42
|
end
|
40
43
|
end
|
41
44
|
|
@@ -143,5 +146,60 @@ describe Renogen::ChangeLog::Writer do
|
|
143
146
|
|
144
147
|
it_behaves_like 'a valid output format'
|
145
148
|
end
|
149
|
+
|
150
|
+
describe 'duplicates' do
|
151
|
+
let(:formatter) { Renogen::Formatters::PlainText.new }
|
152
|
+
let(:changes_with_duplicates) do
|
153
|
+
[
|
154
|
+
renogen_change(1, 'Group 1', 'This is a Group 1 change'),
|
155
|
+
renogen_change(1, 'Group 2', 'This is a Group 2 change'),
|
156
|
+
renogen_change(2, 'Group 1', 'This is a Group 1 change'),
|
157
|
+
renogen_change(2, 'Group 2', 'This is a Group 2 change')
|
158
|
+
]
|
159
|
+
end
|
160
|
+
|
161
|
+
context 'when remove duplicates is false in config (default)' do
|
162
|
+
it_behaves_like 'a valid output format' do
|
163
|
+
let(:changes) { changes_with_duplicates }
|
164
|
+
|
165
|
+
let(:expected_output) do
|
166
|
+
<<~EOS
|
167
|
+
test (2020-07-08)
|
168
|
+
|
169
|
+
Group 1
|
170
|
+
- This is a Group 1 change
|
171
|
+
- This is a Group 1 change
|
172
|
+
|
173
|
+
Group 2
|
174
|
+
- This is a Group 2 change
|
175
|
+
- This is a Group 2 change
|
176
|
+
EOS
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
context 'when remove duplicates is true in config' do
|
182
|
+
before do
|
183
|
+
allow(Renogen::Config.instance)
|
184
|
+
.to receive(:remove_duplicates).and_return(true)
|
185
|
+
end
|
186
|
+
|
187
|
+
it_behaves_like 'a valid output format' do
|
188
|
+
let(:changes) { changes_with_duplicates }
|
189
|
+
|
190
|
+
let(:expected_output) do
|
191
|
+
<<~EOS
|
192
|
+
test (2020-07-08)
|
193
|
+
|
194
|
+
Group 1
|
195
|
+
- This is a Group 1 change
|
196
|
+
|
197
|
+
Group 2
|
198
|
+
- This is a Group 2 change
|
199
|
+
EOS
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
146
204
|
end
|
147
205
|
end
|