release-notes 2.0.0 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +0 -1
- data/CHANGELOG.md +57 -43
- data/CODE_OF_CONDUCT.md +1 -1
- data/LICENSE.txt +1 -1
- data/lib/release/notes.rb +13 -6
- data/lib/release/notes/commits.rb +141 -0
- data/lib/release/notes/configurable.rb +16 -0
- data/lib/release/notes/date_formatter.rb +31 -0
- data/lib/release/notes/git.rb +60 -25
- data/lib/release/notes/link.rb +55 -13
- data/lib/release/notes/log.rb +71 -103
- data/lib/release/notes/prettify.rb +39 -0
- data/lib/release/notes/system.rb +58 -25
- data/lib/release/notes/tag.rb +152 -0
- data/lib/release/notes/version.rb +1 -1
- data/lib/release/notes/write.rb +86 -30
- metadata +7 -4
- data/lib/release/notes/date_format.rb +0 -19
- data/lib/release/notes/pretty_print.rb +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 31ee4556cc27e70fe6a0ff59e5e243afb02b265e616ca781f6b233a1938ca7c3
|
4
|
+
data.tar.gz: 140afbc526063d8df64f56a54e35d96ffe2ff4745905643a6559f9bc7c73667c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90acbf098787bd9968b148844dc308ce28dd7b2633e163ba349eea114ac3e26c15e3a61eddb52ff8e6d0dc2bce1b934d20f95c0ed134244a87196744a2ab2cab
|
7
|
+
data.tar.gz: 8b5507ba334994659166eec6c5396dc6fabc1c0289638fdbd4bc56937d6728bd952b43a8247f4bf0866d162ef2b1983c3baa3b6b39e505dc84f29e88d0843df0
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,43 @@
|
|
1
1
|
# Release Notes
|
2
2
|
|
3
|
+
## v2.0.0
|
4
|
+
|
5
|
+
**Implemented enhancements:**
|
6
|
+
|
7
|
+
- Add our own release notes
|
8
|
+
- Add travis test for ruby 2.6.0
|
9
|
+
- Fix error when tracking commits
|
10
|
+
- Add ruby gems doc link
|
11
|
+
- Add integration test for file that already exists
|
12
|
+
- Add confiugration to not dupe commits
|
13
|
+
- Add first round of integration tests for default configuration :tada:
|
14
|
+
- Fix fact that we aren't writing first tags' commits
|
15
|
+
|
16
|
+
**Fixed bugs:**
|
17
|
+
|
18
|
+
- Yet another fix on bin/publish. Close block
|
19
|
+
- Fix cops
|
20
|
+
- Fix bin/publish to actually update version.rb
|
21
|
+
- Remove extraneous binstub from last commit
|
22
|
+
- Fix cognitive method complexity in log.rb
|
23
|
+
- Remove note about multiple commits.
|
24
|
+
- Fix link to CONTRIBUTING.md in README
|
25
|
+
- Remove empty (duped) messages from array
|
26
|
+
- Fix cops
|
27
|
+
- Fix force_rewrite bug to allow appending new commits to old relase notes
|
28
|
+
- Remove :nocov: labels now that we have integration testing
|
29
|
+
- Fix git tags reference
|
30
|
+
|
31
|
+
**Miscellaneous:**
|
32
|
+
|
33
|
+
- Update code of conduct to 1.4.0 of contributor covenant
|
34
|
+
- Refactor - set prettify_messages to false by default
|
35
|
+
|
3
36
|
## v1.3.0
|
4
37
|
|
5
38
|
**Implemented enhancements:**
|
6
39
|
|
7
40
|
- Add Configuration#header_title
|
8
|
-
- More updates to README
|
9
|
-
- Update README to explain how grep works
|
10
41
|
- Add logo
|
11
42
|
- Remove System#invert_log ;B
|
12
43
|
|
@@ -16,7 +47,8 @@
|
|
16
47
|
|
17
48
|
**Miscellaneous:**
|
18
49
|
|
19
|
-
-
|
50
|
+
- More updates to README
|
51
|
+
- Update README to explain how grep works
|
20
52
|
|
21
53
|
## v1.2.1
|
22
54
|
|
@@ -24,10 +56,6 @@
|
|
24
56
|
|
25
57
|
- Fix cognitive complexity of split_words ;F
|
26
58
|
|
27
|
-
**Miscellaneous:**
|
28
|
-
|
29
|
-
- Bump release-notes to 1.2.1
|
30
|
-
|
31
59
|
## v1.2.0
|
32
60
|
|
33
61
|
**Implemented enhancements:**
|
@@ -39,34 +67,22 @@
|
|
39
67
|
- Fix log_all option and invert-grep ;B
|
40
68
|
- Fix travis - actually run rspec tests ;B
|
41
69
|
|
42
|
-
**Miscellaneous:**
|
43
|
-
|
44
|
-
- Bump release-notes to 1.2.0
|
45
|
-
|
46
70
|
## v1.1.2
|
47
71
|
|
48
|
-
**Implemented enhancements:**
|
49
|
-
|
50
|
-
- Update binstub to support config file in config/ folder
|
51
|
-
|
52
72
|
**Miscellaneous:**
|
53
73
|
|
54
|
-
-
|
74
|
+
- Update binstub to support config file in config/ folder
|
55
75
|
|
56
76
|
## v1.1.1
|
57
77
|
|
58
|
-
**Implemented enhancements:**
|
59
|
-
|
60
|
-
- Update README
|
61
|
-
- Update binstub to check non-rails config file
|
62
|
-
|
63
78
|
**Fixed bugs:**
|
64
79
|
|
65
80
|
- Fix README
|
66
81
|
|
67
82
|
**Miscellaneous:**
|
68
83
|
|
69
|
-
-
|
84
|
+
- Update README
|
85
|
+
- Update binstub to check non-rails config file
|
70
86
|
|
71
87
|
## v1.1.0
|
72
88
|
|
@@ -74,46 +90,40 @@
|
|
74
90
|
|
75
91
|
- Light refactoring and add binstub and non-rails install
|
76
92
|
|
77
|
-
|
93
|
+
## v1.0.1
|
78
94
|
|
79
|
-
|
95
|
+
**Fixed bugs:**
|
80
96
|
|
81
|
-
|
97
|
+
- Update README.md
|
98
|
+
- Remove environment from rake task
|
99
|
+
- Fix contributing.md
|
100
|
+
|
101
|
+
## v1.0.0
|
82
102
|
|
83
103
|
**Implemented enhancements:**
|
84
104
|
|
85
|
-
- Update README.md
|
86
105
|
- Updates to README, CONTRIBUTING and add bin/test
|
87
|
-
- Update README and install template
|
88
106
|
|
89
107
|
**Fixed bugs:**
|
90
108
|
|
91
|
-
- Remove environment from rake task
|
92
|
-
- Fix contributing.md
|
93
109
|
- Fix linking/writing of none linked lines and frozen string modification
|
94
110
|
- Fix guard clause for rubocop
|
95
111
|
|
96
112
|
**Miscellaneous:**
|
97
113
|
|
98
|
-
-
|
99
|
-
- Bump release-notes to 1.0.0
|
114
|
+
- Update README and install template
|
100
115
|
|
101
116
|
## v1.0.0.pre
|
102
117
|
|
103
|
-
## v1.0.0
|
104
|
-
|
105
118
|
**Implemented enhancements:**
|
106
119
|
|
107
|
-
- Update README
|
108
120
|
- Add log_all option for configuration
|
109
121
|
- Add force_rewrite option to configuration
|
110
122
|
- Fix linking not adding the issue number correctly
|
111
123
|
- Add GH templates
|
112
124
|
- Add test around puts on rake task
|
113
|
-
- Refactor link.rb and increase test coverage
|
114
125
|
- Add rubocop & fix cops
|
115
126
|
- ignore .ruby-version since it's irrelevant and add different rubies to travis
|
116
|
-
- ruby version update -> 2.5.3
|
117
127
|
- Update README
|
118
128
|
|
119
129
|
**Fixed bugs:**
|
@@ -121,27 +131,31 @@
|
|
121
131
|
- Fix cops and depreciation warnings
|
122
132
|
- Fix spelling error
|
123
133
|
- Reduce cyclomatic complexity of Write.rb
|
134
|
+
- Refactor link.rb and increase test coverage
|
124
135
|
- Remove extra new line on output
|
125
136
|
- Remove extra header underline on output md file
|
126
137
|
- fix readme typo
|
127
138
|
|
128
139
|
**Miscellaneous:**
|
129
140
|
|
130
|
-
-
|
131
|
-
-
|
141
|
+
- Update README
|
142
|
+
- ruby version update -> 2.5.3
|
132
143
|
|
133
144
|
## v0.1.0
|
134
145
|
|
135
146
|
**Implemented enhancements:**
|
136
147
|
|
137
|
-
- Update prettify class
|
138
|
-
- update readme
|
139
|
-
- Update to linking commit messages
|
140
148
|
- Minor updates to layout of gem
|
141
|
-
- more readme updates
|
142
149
|
- add docs badge to readme
|
143
150
|
- add yard config
|
144
|
-
- update readme
|
145
151
|
- WIP adding test coverage to code climate
|
146
152
|
- Add badges to README
|
147
153
|
- Add some initial tests
|
154
|
+
|
155
|
+
**Miscellaneous:**
|
156
|
+
|
157
|
+
- Update prettify class
|
158
|
+
- update readme
|
159
|
+
- Update to linking commit messages
|
160
|
+
- more readme updates
|
161
|
+
- update readme
|
data/CODE_OF_CONDUCT.md
CHANGED
@@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
|
|
55
55
|
## Enforcement
|
56
56
|
|
57
57
|
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
58
|
-
reported by contacting the project maintainer at
|
58
|
+
reported by contacting the project maintainer at shackl3ton@pm.me. All
|
59
59
|
complaints will be reviewed and investigated and will result in a response that
|
60
60
|
is deemed necessary and appropriate to the circumstances. The project team is
|
61
61
|
obligated to maintain confidentiality with regard to the reporter of an incident.
|
data/LICENSE.txt
CHANGED
data/lib/release/notes.rb
CHANGED
@@ -3,9 +3,10 @@
|
|
3
3
|
require "active_support"
|
4
4
|
require "active_support/core_ext/time"
|
5
5
|
|
6
|
-
require "release/notes/
|
6
|
+
require "release/notes/configurable"
|
7
|
+
require "release/notes/date_formatter"
|
7
8
|
require "release/notes/link"
|
8
|
-
require "release/notes/
|
9
|
+
require "release/notes/prettify"
|
9
10
|
|
10
11
|
require "release/notes/version"
|
11
12
|
require "release/notes/configuration"
|
@@ -14,24 +15,30 @@ require "release/notes/system"
|
|
14
15
|
|
15
16
|
require "release/notes/write"
|
16
17
|
require "release/notes/log"
|
18
|
+
require "release/notes/tag"
|
19
|
+
require "release/notes/commits"
|
17
20
|
|
18
21
|
require "release/notes/railtie" if defined?(Rails)
|
19
22
|
require "release/notes/install" unless defined?(Rails)
|
20
23
|
|
21
24
|
module Release
|
22
25
|
module Notes
|
26
|
+
NEWLINE = "\n"
|
27
|
+
|
23
28
|
class << self
|
24
29
|
def generate
|
25
30
|
log.perform
|
26
31
|
end
|
27
32
|
|
28
|
-
def log
|
29
|
-
Release::Notes::Log.new
|
30
|
-
end
|
31
|
-
|
32
33
|
def root
|
33
34
|
File.expand_path("..", __dir__)
|
34
35
|
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def log
|
40
|
+
Log.new
|
41
|
+
end
|
35
42
|
end
|
36
43
|
end
|
37
44
|
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Release
|
4
|
+
module Notes
|
5
|
+
class Commits
|
6
|
+
include Configurable
|
7
|
+
REGEX_DELIMETER = /(?=-)/
|
8
|
+
|
9
|
+
attr_reader :title, :value
|
10
|
+
delegate :digest_title, prefix: :writer, to: :@writer
|
11
|
+
|
12
|
+
#
|
13
|
+
# Release::Notes::Commits initializer method
|
14
|
+
#
|
15
|
+
# @param [String] title - a label (**Implemented enhancements.**)
|
16
|
+
# @param [String] value - all commits and commit subjects (sha - message\n)
|
17
|
+
# @param [Release::Notes::Writer] writer - Writer obeject containing the message header (v2.0.0)
|
18
|
+
#
|
19
|
+
def initialize(title:, value:, writer:, tagger:)
|
20
|
+
@title = title
|
21
|
+
@value = value
|
22
|
+
@writer = writer
|
23
|
+
|
24
|
+
@tagger = tagger
|
25
|
+
end
|
26
|
+
|
27
|
+
#
|
28
|
+
# Perform method
|
29
|
+
#
|
30
|
+
# @return [File] File with array of git sha's
|
31
|
+
#
|
32
|
+
def perform
|
33
|
+
choose_messages_by_hash.tap do |obj|
|
34
|
+
next if obj.empty?
|
35
|
+
|
36
|
+
@tagger._hashes += obj.keys
|
37
|
+
output_unique_messages(obj.values)
|
38
|
+
end
|
39
|
+
|
40
|
+
self
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
#
|
46
|
+
# Determine what messages will be added to final output
|
47
|
+
#
|
48
|
+
# @return [Array] non-duplicated log messages
|
49
|
+
#
|
50
|
+
def choose_messages_by_hash
|
51
|
+
split_commits.tap do |obj|
|
52
|
+
remove_duplicate_hashes(obj)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
#
|
57
|
+
# Create the commits hash
|
58
|
+
#
|
59
|
+
# @param [Array] arr - Array where [0] is a commit hash and [1] is the first formatted commit message for...
|
60
|
+
# @param [Hash] hsh - Hash of formatted commit messages to be injected per sha
|
61
|
+
#
|
62
|
+
# @return [String] Commit message
|
63
|
+
#
|
64
|
+
def create_commits_hash(arr, hsh)
|
65
|
+
hsh[arr[0].strip] = arr[1..-1].join
|
66
|
+
end
|
67
|
+
|
68
|
+
#
|
69
|
+
# Determines whether key has already been added to the release_notes
|
70
|
+
#
|
71
|
+
# @param [String] key - commit sha
|
72
|
+
#
|
73
|
+
# @return [Boolean] Is this a duplicate commit message?
|
74
|
+
#
|
75
|
+
def duplicate_commit?(key)
|
76
|
+
config_single_label && @tagger._hashes.include?(key)
|
77
|
+
end
|
78
|
+
|
79
|
+
#
|
80
|
+
# Transforms an array of messages into a single
|
81
|
+
#
|
82
|
+
# @param [Array] arr - array formatted log messages
|
83
|
+
#
|
84
|
+
# @return [String] formatted log messages
|
85
|
+
#
|
86
|
+
def join_messages(arr)
|
87
|
+
"#{arr.join(NEWLINE)}#{NEWLINE}"
|
88
|
+
end
|
89
|
+
|
90
|
+
#
|
91
|
+
# Log messages without duplicates
|
92
|
+
#
|
93
|
+
# @param [Array] messages - Array of git commit subjects
|
94
|
+
#
|
95
|
+
# @return [String] - formatted messages
|
96
|
+
#
|
97
|
+
def output_unique_messages(messages)
|
98
|
+
writer_digest_title(title: title, log_message: join_messages(messages))
|
99
|
+
end
|
100
|
+
|
101
|
+
#
|
102
|
+
# Remove duplicate log messages
|
103
|
+
#
|
104
|
+
# @param [Hash] obj - Commit sha's and messages
|
105
|
+
#
|
106
|
+
# @return [Array] Array of unique git sha's
|
107
|
+
#
|
108
|
+
def remove_duplicate_hashes(obj)
|
109
|
+
obj.keys.each { |key| obj.delete(key) if duplicate_commit?(key) }
|
110
|
+
end
|
111
|
+
|
112
|
+
#
|
113
|
+
# Split commits by sha
|
114
|
+
#
|
115
|
+
# @return [Hash] Commit and message
|
116
|
+
#
|
117
|
+
def split_commits
|
118
|
+
split_values do |arr, obj|
|
119
|
+
arr.split(REGEX_DELIMETER).tap do |split_arr|
|
120
|
+
create_commits_hash(split_arr, obj) # "- Add our own release notes"
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
#
|
126
|
+
# Split messages by sha
|
127
|
+
#
|
128
|
+
# @param [Proc] &_block - optional block
|
129
|
+
#
|
130
|
+
# @return [Hash] commits and commit sha's
|
131
|
+
#
|
132
|
+
# NEWLINE = "\n"
|
133
|
+
#
|
134
|
+
def split_values(&_block)
|
135
|
+
value.split(NEWLINE).each_with_object({}) do |arr, obj|
|
136
|
+
yield arr, obj
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Release
|
4
|
+
module Notes
|
5
|
+
module Configurable
|
6
|
+
delegate :timezone, :grep_insensitive?, :regex_type,
|
7
|
+
:include_merges?, :link_to_labels, :link_to_sites, :link_to_humanize,
|
8
|
+
:log_all, :header_title, :header_title_type, :features,
|
9
|
+
:bugs, :misc, :feature_title,
|
10
|
+
:bug_title, :misc_title, :log_all_title, :single_label,
|
11
|
+
:output_file, :temp_file, :link_commits?, :all_labels,
|
12
|
+
:prettify_messages?, :release_notes_exist?,
|
13
|
+
:force_rewrite, prefix: :config, to: :"Release::Notes.configuration"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Release
|
4
|
+
module Notes
|
5
|
+
class DateFormatter
|
6
|
+
include Configurable
|
7
|
+
attr_reader :date
|
8
|
+
HUMANIZED = "%B %d, %Y %r %Z"
|
9
|
+
|
10
|
+
#
|
11
|
+
# Format the date
|
12
|
+
#
|
13
|
+
# @param [Date] date - parse date or return the current date/time
|
14
|
+
#
|
15
|
+
def initialize(date = nil)
|
16
|
+
Time.zone = config_timezone
|
17
|
+
@date = date.present? ? Time.zone.parse(date) : Time.zone.now
|
18
|
+
end
|
19
|
+
|
20
|
+
#
|
21
|
+
# Format date
|
22
|
+
#
|
23
|
+
# @return [String] Month Day, Year, Time AM/PM Time Zone
|
24
|
+
# ex: "January 17, 2019 10:22:53 PM EST"
|
25
|
+
#
|
26
|
+
def humanize
|
27
|
+
date.strftime(HUMANIZED)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|