class Milestoner::Commits::Versioner
Calculates next version based on commit trailer version keys.
Constants
- DEFAULTS
Attributes
collector[R]
defaults[R]
Public Class Methods
new(defaults: DEFAULTS, collector: Collector.new, **)
click to toggle source
Calls superclass method
# File lib/milestoner/commits/versioner.rb, line 18 def initialize(defaults: DEFAULTS, collector: Collector.new, **) @defaults = defaults @collector = collector super(**) end
Public Instance Methods
call()
click to toggle source
# File lib/milestoner/commits/versioner.rb, line 24 def call trailer_milestones.then { |milestones| bump milestones } .value_or(fallback) end
Private Instance Methods
bump(milestones)
click to toggle source
# File lib/milestoner/commits/versioner.rb, line 39 def bump milestones last_tag_or_fallback_for milestones rescue Versionaire::Error => error logger.debug { error.message } Failure error end
fallback(= defaults.fetch __method__)
click to toggle source
# File lib/milestoner/commits/versioner.rb, line 53 def fallback = defaults.fetch __method__ end
last_tag_or_fallback_for(milestones)
click to toggle source
# File lib/milestoner/commits/versioner.rb, line 46 def last_tag_or_fallback_for milestones target = fallback.members.intersection(milestones).first git.tag_last.fmap { |tag| target ? Version(tag).bump(target) : fallback } end
trailer_key(= defaults.fetch __method__)
click to toggle source
# File lib/milestoner/commits/versioner.rb, line 51 def trailer_key = defaults.fetch __method__ def fallback = defaults.fetch __method__ end end
trailer_milestones()
click to toggle source
# File lib/milestoner/commits/versioner.rb, line 33 def trailer_milestones collector.call.value_or(Core::EMPTY_ARRAY).each.with_object [] do |commit, values| commit.trailer_value_for(trailer_key).bind { |milestone| values.append milestone.to_sym } end end