class Milestoner::Tags::Manifest
Manages build manifest.
def build_path = settings.build_output.join name
def build_path = settings.build_output.join name
def content_for tags
def content_for tags generator.merge latest: tags.last.version, versions: tags.map(&:version) end
def diff path = build_path
def diff path = build_path git.tags.value_or(Core::EMPTY_ARRAY).then do |tags| return Core::EMPTY_HASH if tags.empty? content_for(tags).diff read(path) end end
def generator
def generator {generator: {label: settings.generator_label, version: settings.generator_version.to_s}} end
def initialize(name: "manifest.json", **)
def initialize(name: "manifest.json", **) super(**) @name = name end
def read(path = build_path) = JSON(path.read, {symbolize_names: true})
def read(path = build_path) = JSON(path.read, {symbolize_names: true})
def write(path = build_path, **)
def write(path = build_path, **) path.make_ancestors.write JSON.pretty_generate(generator.deep_merge(**)) end