class Milestoner::Tags::Creator

Handles the creation of project repository tags.

Attributes

builder[R]
collector[R]

Public Class Methods

new( collector: Commits::Collector.new, builder: Builders::Stream.new(io: StringIO.new), ** ) click to toggle source
Calls superclass method
# File lib/milestoner/tags/creator.rb, line 13
def initialize(
  collector: Commits::Collector.new,
  builder: Builders::Stream.new(io: StringIO.new),
  **
)
  @collector = collector
  @builder = builder
  super(**)
end

Public Instance Methods

call(version) click to toggle source
# File lib/milestoner/tags/creator.rb, line 23
def call version
  return Success version if local? version

  collect.bind { create version }
end

Private Instance Methods

build(version) click to toggle source
# File lib/milestoner/tags/creator.rb, line 46
  def build(version) = builder.call.fmap { |body| "Version #{version}\n\n#{body}\n\n" }
end
collect(= collector.call.alt_map { |message| message.sub("fatal: y", "Y").sub("\n", ".") }) click to toggle source
# File lib/milestoner/tags/creator.rb, line 42
      def collect = collector.call.alt_map { |message| message.sub("fatal: y", "Y").sub("\n", ".") }

      def create(version) = build(version).bind { |body| git.tag_create version, body }

      def build(version) = builder.call.fmap { |body| "Version #{version}\n\n#{body}\n\n" }
    end
  end
end
create(version) click to toggle source
# File lib/milestoner/tags/creator.rb, line 44
    def create(version) = build(version).bind { |body| git.tag_create version, body }

    def build(version) = builder.call.fmap { |body| "Version #{version}\n\n#{body}\n\n" }
  end
end
local?(version) click to toggle source
# File lib/milestoner/tags/creator.rb, line 33
def local? version
  if git.tag_local? version
    logger.warn { "Local tag exists: #{version}. Skipped." }
    true
  else
    false
  end
end