class Tapioca::Commands::Annotations

def fetch_annotations(project_gems)

def fetch_annotations(project_gems)
  say("Fetching gem annotations from central repository... ", [:blue, :bold])
  fetchable_gems = T.let(Hash.new { |h, k| h[k] = [] }, T::Hash[GemInfo, T::Array[String]])
  project_gems.each_with_object(fetchable_gems) do |gem_info, hash|
    @indexes.each do |uri, index|
      T.must(hash[gem_info]) << uri if index.has_gem?(gem_info.name)
    end
  end
  if fetchable_gems.empty?
    say(" Nothing to do")
    return []
  end
  say("\n")
  fetched_gems = fetchable_gems.select { |gem_info, repo_uris| fetch_annotation(repo_uris, gem_info) }
  say("\nDone", :green)
  fetched_gems.keys.map(&:name).sort
end