Class: EasyChangelog
- Inherits:
-
Object
show all
- Defined in:
- lib/easy_changelog.rb,
lib/easy_changelog/entry.rb,
lib/easy_changelog/railtie.rb,
lib/easy_changelog/utility.rb,
lib/easy_changelog/version.rb,
lib/easy_changelog/configuration.rb,
lib/easy_changelog/task_options_parser.rb
Defined Under Namespace
Classes: Configuration, ConfigurationError, EmptyReleaseError, Entry, Error, Railtie, TaskOptionsParser, Utility
Constant Summary
collapse
/### (.*)/.freeze
- CONTRIBUTOR =
'[@%<user>s]: https://github.com/%<user>s'
- EOF =
"\n"
- VERSION =
'1.2.0'
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(content: File.read(EasyChangelog.configuration.changelog_filename), entries: EasyChangelog.read_entries) ⇒ EasyChangelog
Returns a new instance of EasyChangelog.
Instance Attribute Details
#entries ⇒ Object
Returns the value of attribute entries.
53
54
55
|
# File 'lib/easy_changelog.rb', line 53
def entries
@entries
end
|
Returns the value of attribute header.
53
54
55
|
# File 'lib/easy_changelog.rb', line 53
def
@header
end
|
Class Method Details
24
25
26
|
# File 'lib/easy_changelog.rb', line 24
def configure
yield(configuration)
end
|
.merge_and_delete! ⇒ Object
32
33
34
|
# File 'lib/easy_changelog.rb', line 32
def merge_and_delete!
new.merge_and_delete!
end
|
.pending? ⇒ Boolean
28
29
30
|
# File 'lib/easy_changelog.rb', line 28
def pending?
entry_paths.any?
end
|
.read_entries ⇒ Object
44
45
46
|
# File 'lib/easy_changelog.rb', line 44
def read_entries
entry_paths.to_h { |path| [path, File.read(path)] }
end
|
.release! ⇒ Object
36
37
38
|
# File 'lib/easy_changelog.rb', line 36
def release!
new.release!
end
|
.release_count(pattern) ⇒ Object
48
49
50
|
# File 'lib/easy_changelog.rb', line 48
def release_count(pattern)
File.read(EasyChangelog.configuration.changelog_filename).scan(pattern).size
end
|
Instance Method Details
#contributors ⇒ Object
119
120
121
122
123
|
# File 'lib/easy_changelog.rb', line 119
def contributors
@entries.values.flat_map do |entry|
EasyChangelog::Utility.attr_from_entry(:username, entry)&.gsub(/@/, '')
end
end
|
#delete! ⇒ Object
73
74
75
|
# File 'lib/easy_changelog.rb', line 73
def delete!
@entries.each_key { |path| File.delete(path) }
end
|
#merge_and_delete! ⇒ Object
63
64
65
66
|
# File 'lib/easy_changelog.rb', line 63
def merge_and_delete!
merge!
delete!
end
|
#merge_content ⇒ Object
94
95
96
97
98
|
# File 'lib/easy_changelog.rb', line 94
def merge_content
merged_content = [@header, unreleased_content, @rest.chomp, *new_contributor_lines].join("\n")
merged_content << EOF
end
|
#new_contributor_lines ⇒ Object
111
112
113
114
115
116
117
|
# File 'lib/easy_changelog.rb', line 111
def new_contributor_lines
return [] unless EasyChangelog.configuration.user_signature
unique_contributor_names = contributors.map { |user| format(CONTRIBUTOR, user: user) }.uniq
unique_contributor_names.reject { |line| @rest.include?(line) }
end
|
#release_content ⇒ Object
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/easy_changelog.rb', line 100
def release_content
unreleased = unreleased_content
raise EmptyReleaseError, 'No unreleased content to release' if unreleased.empty?
release_message = EasyChangelog.configuration.release_message_template
release_message = "\n#{release_message}" unless release_message.start_with?("\n")
released_content = [@header, release_message, unreleased, @rest.chomp, *new_contributor_lines].join("\n")
released_content << EOF
end
|
#unreleased_content ⇒ Object
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/easy_changelog.rb', line 82
def unreleased_content
entry_map = parse_entries(@entries)
merged_map = merge_entries(entry_map)
merged_map.flat_map do |, things|
if .empty?
[*things, '']
else
["### #{}\n", *things, '']
end
end.join("\n")
end
|