class Milestoner::Tags::Creator
Handles the creation of project repository tags.
def build version
def build version builder.call.fmap do |body| "Version #{version}\n\n#{body.reread}\n\n" end end
def call override = nil
def call override = nil version = compute_version override return false if local? version fail Error, "Unable to tag without commits." if collector.call.value_or([]).empty? create version end
def compute_version value
def compute_version value Version value || input.project_version rescue Versionaire::Error => error raise Error, error end
def create version
def create version build(version).fmap { |body| git.tag_create version, body } .or { |error| fail Error, error } .bind { true } end
def initialize(
def initialize( collector: Commits::Collector.new, builder: Builders::Stream.new(kernel: StringIO.new), ** ) @collector = collector @builder = builder super(**) end
def local? version
def local? version if git.tag_local? version logger.warn { "Local tag exists: #{version}. Skipped." } true else false end end