namespace :katello do

namespace :upgrades do
  namespace '4.8' do
    desc "Regenerates metadata for library repositories that were imported"
    task :regenerate_imported_repository_metadata => ["dynflow:client", "environment"] do
      User.current = User.anonymous_admin #set a user for orchestration
      versions = Katello::ContentViewVersionImportHistory.all.map(&:content_view_version)
      repos = versions.map do |ver|
        rps = if ver.default?
                ver.repositories
              else
                ver.archived_repos
              end
        rps.exportable
          .map(&:library_instance_or_self)
          .select(&:using_mirrored_metadata?)
      end
      repos.flatten!
      repos.uniq!

      if repos.any?
        task = ForemanTasks.async_task(::Actions::BulkAction,
                                       ::Actions::Katello::Repository::MetadataGenerate,
                                       repos,
                                       force_publication: true)
        puts "Refreshing #{repos.count} repositories. You can monitor these on task id #{task.id}\n"
      else
        puts "No repositories found for regeneration."
      end
    end
  end
end

end