From 5cb23e40a8b69ac2a3e70cbb6d55cf50c3fa3942 Mon Sep 17 00:00:00 2001 From: fatkodima Date: Tue, 11 Jun 2024 15:29:39 +0300 Subject: [PATCH] Report problematic release dates only once per gem name --- lib/libyear_bundler/models/gem.rb | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/lib/libyear_bundler/models/gem.rb b/lib/libyear_bundler/models/gem.rb index a4e5da3..604f185 100644 --- a/lib/libyear_bundler/models/gem.rb +++ b/lib/libyear_bundler/models/gem.rb @@ -23,23 +23,32 @@ def release_date(gem_name, gem_version) begin dep = ::Bundler::Dependency.new(gem_name, gem_version) rescue ::Gem::Requirement::BadRequirementError => e - $stderr.puts "Could not find release date for: #{gem_name}" - $stderr.puts(e) - $stderr.puts( - "Maybe you used git in your Gemfile, which libyear doesn't support " \ - "yet. Contributions welcome." - ) + report_problem(gem_name, <<-MSG) +Could not find release date for: #{gem_name} +#{e} +Maybe you used git in your Gemfile, which libyear doesn't support yet. Contributions welcome. + MSG return nil end tuples, _errors = ::Gem::SpecFetcher.fetcher.search_for_dependency(dep) if tuples.empty? - $stderr.puts "Could not find release date for: #{gem_name}" + report_problem(gem_name, "Could not find release date for: #{gem_name}") return nil end tup, source = tuples.first # Gem::NameTuple spec = source.fetch_spec(tup) # raises Gem::RemoteFetcher::FetchError spec.date.to_date end + + private + + def report_problem(gem_name, message) + @reported_gems ||= {} + @reported_gems[gem_name] ||= begin + $stderr.puts(message) + true + end + end end def installed_version