Class: Kubernetes::Release::Changelog
- Inherits:
-
Object
- Object
- Kubernetes::Release::Changelog
- Defined in:
- lib/kubernetes/release/changelog.rb
Constant Summary collapse
- Error =
Class.new(StandardError)
- SECTION_HEADER =
/^## \[(?<name>[^\]]+)\](?: - (?<label>[^\n]+))?$/.freeze
- EMPTY_UNRELEASED_PLACEHOLDER =
"- Nothing yet."
Instance Attribute Summary collapse
-
#path ⇒ Object
readonly
Returns the value of attribute path.
Instance Method Summary collapse
- #include?(name) ⇒ Boolean
-
#initialize(path) ⇒ Changelog
constructor
A new instance of Changelog.
- #release_notes(name) ⇒ Object
- #unreleased_empty? ⇒ Boolean
- #validate_release!(version:, tag: nil, require_empty_unreleased: false) ⇒ Object
Constructor Details
#initialize(path) ⇒ Changelog
Returns a new instance of Changelog.
13 14 15 |
# File 'lib/kubernetes/release/changelog.rb', line 13 def initialize(path) @path = File.(path) end |
Instance Attribute Details
#path ⇒ Object (readonly)
Returns the value of attribute path.
11 12 13 |
# File 'lib/kubernetes/release/changelog.rb', line 11 def path @path end |
Instance Method Details
#include?(name) ⇒ Boolean
17 18 19 |
# File 'lib/kubernetes/release/changelog.rb', line 17 def include?(name) entries.key?(name) end |
#release_notes(name) ⇒ Object
21 22 23 |
# File 'lib/kubernetes/release/changelog.rb', line 21 def release_notes(name) entry(name).fetch(:body) end |
#unreleased_empty? ⇒ Boolean
25 26 27 28 29 30 |
# File 'lib/kubernetes/release/changelog.rb', line 25 def unreleased_empty? return false unless include?("Unreleased") body = release_notes("Unreleased").strip body.empty? || body == EMPTY_UNRELEASED_PLACEHOLDER end |
#validate_release!(version:, tag: nil, require_empty_unreleased: false) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/kubernetes/release/changelog.rb', line 32 def validate_release!(version:, tag: nil, require_empty_unreleased: false) errors = [] has_unreleased = include?("Unreleased") errors << "missing Unreleased section in #{path}" unless has_unreleased errors << "missing CHANGELOG entry for #{version} in #{path}" unless include?(version) expected_tag = "v#{version}" if tag && tag != expected_tag errors << "release tag #{tag} does not match version #{version} (expected #{expected_tag})" end if require_empty_unreleased && has_unreleased && !unreleased_empty? errors << "Unreleased section must be empty before cutting #{expected_tag}" end raise Error, errors.join("\n") unless errors.empty? true end |