Sha256: 0abca398750e2259bf7bd861788e0a332f4ab6dbe5ec929f1d8ca806d1e80e98
Contents?: true
Size: 1.81 KB
Versions: 6
Compression:
Stored size: 1.81 KB
Contents
# frozen_string_literal: true require "git_plus" require "versionaire" module Milestoner module Tags # Handles the creation of project repository tags. class Creator using Versionaire::Cast def initialize categorizer: Commits::Categorizer.new, presenter: Presenters::Commit, container: Container @categorizer = categorizer @presenter = presenter @container = container end def call configuration = CLI::Configuration::Loader.call return false if local? configuration fail Error, "Unable to tag without commits." if categorizer.call.empty? sign configuration rescue Versionaire::Error, GitPlus::Error => error raise Error, error.message end private attr_reader :categorizer, :presenter, :container def local? configuration version = Version configuration.version if repository.tag_local? version logger.warn "Local tag exists: #{version}. Skipped." true else false end end def sign configuration version = configuration.version content = message configuration if configuration.sign repository.tag_sign version, content else repository.tag_unsign version, content end logger.debug "Local tag created: #{version}." end def message configuration categorizer.call(configuration) .map { |record| presenter.new(record).line_item } .then do |line_items| %(Version #{configuration.version}\n\n#{line_items.join "\n"}\n\n) end end def repository = container[__method__] def logger = container[__method__] end end end
Version data entries
6 entries across 6 versions & 1 rubygems