class Milestoner::Builders::Feed

Builds syndicated feed output.

Attributes

syndicator[R]
tagger[R]

Public Class Methods

new(tagger: Commits::Tagger.new, syndicator: Syndication::Builder.new, **) click to toggle source
Calls superclass method
# File lib/milestoner/builders/feed.rb, line 13
def initialize(tagger: Commits::Tagger.new, syndicator: Syndication::Builder.new, **)
  @tagger = tagger
  @syndicator = syndicator
  super(**)
end

Public Instance Methods

call() click to toggle source
# File lib/milestoner/builders/feed.rb, line 19
def call
  tagger.call
        .bind { |tags| syndicator.call tags }
        .fmap { |body| write body }
        .alt_map { |message| failure message }
end

Private Instance Methods

failure(message) click to toggle source
# File lib/milestoner/builders/feed.rb, line 38
def failure message
  logger.error { message }
  message
end
write(body) click to toggle source
# File lib/milestoner/builders/feed.rb, line 30
def write body
  root = settings.build_root
  path = root.join(settings.build_basename).make_ancestors.sub_ext(".xml").write body

  logger.info { "Built: #{path}." }
  root
end