class RepositoryMerger::TagImporter

Attributes

configuration[R]
original_tags[R]
tag_name_conversion[R]

Public Class Methods

new(tags, configuration:, tag_name_conversion:) click to toggle source
# File lib/repository_merger/tag_importer.rb, line 7
def initialize(tags, configuration:, tag_name_conversion:)
  @original_tags = tags
  @configuration = configuration
  @tag_name_conversion = tag_name_conversion
end

Public Instance Methods

import_tag_into_monorepo(original_tag, new_tag_name:) click to toggle source
# File lib/repository_merger/tag_importer.rb, line 41
def import_tag_into_monorepo(original_tag, new_tag_name:)
  target_commit_id_in_monorepo = monorepo_commit_id_for(original_tag)

  unless target_commit_id_in_monorepo
    commit_description = "#{original_tag.target_commit.message.chomp.inspect} (#{original_tag.target_commit.abbreviated_id}) in #{original_tag.repo.name}"
    logger.verbose "    The target commit #{commit_description} is not yet imported. Skipping."
    return nil
  end

  monorepo.import_tag(
    original_tag,
    new_commit_id: target_commit_id_in_monorepo,
    new_tag_name: new_tag_name
  )
end
logger() click to toggle source
# File lib/repository_merger/tag_importer.rb, line 66
def logger
  configuration.logger
end
monorepo() click to toggle source
# File lib/repository_merger/tag_importer.rb, line 62
def monorepo
  configuration.monorepo
end
monorepo_commit_id_for(original_tag) click to toggle source
# File lib/repository_merger/tag_importer.rb, line 57
def monorepo_commit_id_for(original_tag)
  # TODO: Choosing the first one might be wrong
  configuration.repo_commit_map.monorepo_commit_ids_for(original_tag.target_commit).first
end
process_tag(original_tag) click to toggle source
# File lib/repository_merger/tag_importer.rb, line 22
def process_tag(original_tag)
  logger.verbose "  [#{original_tag.repo.name}] #{original_tag.name}"

  new_tag_name = tag_name_conversion.call(original_tag)

  if new_tag_name
    if monorepo.tag_for(new_tag_name)
      logger.verbose "    Already imported as #{new_tag_name.inspect}. Skipping."
    else
      new_tag = import_tag_into_monorepo(original_tag, new_tag_name: new_tag_name)
      logger.verbose "    Imported as #{new_tag_name.inspect}." if new_tag
    end
  else
    logger.verbose '    Not for import. Skipping.'
  end

  logger.increment_progress
end
run() click to toggle source
# File lib/repository_merger/tag_importer.rb, line 13
def run
  logger.verbose('Importing tags', title: true)
  logger.start_tracking_progress_for('tags', total: original_tags.size)

  original_tags.each do |original_tag|
    process_tag(original_tag)
  end
end