From fdbbaa8f07922e13cda076dc93dfe8864462ce61 Mon Sep 17 00:00:00 2001 From: Austin Ziegler Date: Mon, 15 Nov 2021 12:59:13 -0500 Subject: Move deps retrieval to a support file --- History.md | 1 + Rakefile | 45 ++++++++++++++++----------------------------- support/deps.rb | 42 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 29 deletions(-) create mode 100644 support/deps.rb diff --git a/History.md b/History.md index f30dfab..95e0574 100644 --- a/History.md +++ b/History.md @@ -21,6 +21,7 @@ - Igor Victor added TruffleRuby to the Travis CI configuration. [#149] - Koichi ITO loosened an excessively tight dependency. [#147] - Started using `standardrb` for Ruby formatting and validation. + - Moved `deps:top` functionality to a support file. ## 3.3.1 / 2019-12-26 diff --git a/Rakefile b/Rakefile index a4abe10..712141a 100644 --- a/Rakefile +++ b/Rakefile @@ -9,7 +9,8 @@ class Hoe def with_config config = Hoe::DEFAULT_CONFIG - homeconfig = load_config(File.expand_path("~/.hoerc")) + rc = File.expand_path("~/.hoerc") + homeconfig = load_config(rc) config = config.merge(homeconfig) localconfig = load_config(File.expand_path(File.join(Dir.pwd, ".hoerc"))) @@ -19,10 +20,19 @@ class Hoe end def load_config(name) - File.exist? name ? safe_load_yaml(name) : {} + File.exist?(name) ? safe_load_yaml(name) : {} end def safe_load_yaml(name) + return safe_load_yaml_file(name) if YAML.respond_to?(:safe_load_file) + + data = IO.binread(name) + YAML.safe_load(data, permitted_classes: [Regexp]) + rescue + YAML.safe_load(data, [Regexp]) + end + + def safe_load_yaml_file(name) YAML.safe_load_file(name, permitted_classes: [Regexp]) rescue YAML.safe_load_file(name, [Regexp]) @@ -240,33 +250,10 @@ namespace :convert do task docs: "convert:docs:run" end -task "deps:top", [:number] do |_, args| - require "net/http" - require "json" - - def rubygems_get(gem_name: "", endpoint: "") - path = File.join("/api/v1/gems/", gem_name, endpoint).chomp("/") + ".json" - Net::HTTP.start("rubygems.org", use_ssl: true) do |http| - JSON.parse(http.get(path).body) - end - end - - results = rubygems_get( - gem_name: "mime-types", - endpoint: "reverse_dependencies" - ) - - weighted_results = {} - results.each do |name| - weighted_results[name] = rubygems_get(gem_name: name)["downloads"] - rescue => e - puts "#{name} #{e.message}" - end - - weighted_results.sort { |(_k1, v1), (_k2, v2)| - v2 <=> v1 - }.first(args.number || 50).each_with_index do |(k, v), i| - puts "#{i}) #{k}: #{v}" +namespace :deps do + task :top, [:number] => "benchmark:support" do |_, args| + require "deps" + Deps.run(args) end end diff --git a/support/deps.rb b/support/deps.rb new file mode 100644 index 0000000..176c4d9 --- /dev/null +++ b/support/deps.rb @@ -0,0 +1,42 @@ +require "net/http" +require "json" + +class Deps + def self.run(args) + new.run(args) + end + + def run(args) + deps = rubygems_get(gem_name: "mime-types", endpoint: "reverse_dependencies") + weighted_deps = {} + + deps.each do |name| + downloads = gem_downloads(name) + weighted_deps[name] = downloads if downloads + rescue => e + puts "#{name} #{e.message}" + end + + weighted_deps + .sort { |(_k1, v1), (_k2, v2)| v2 <=> v1 } + .first(args.number || 50) + .each_with_index do |(k, v), i| + puts "#{i}) #{k}: #{v}" + end + end + + private + + def rubygems_get(gem_name: "", endpoint: "") + path = File.join("/api/v1/gems/", gem_name, endpoint).chomp("/") + ".json" + Net::HTTP.start("rubygems.org", use_ssl: true) do |http| + JSON.parse(http.get(path).body) + end + end + + def gem_downloads(name) + rubygems_get(gem_name: name)["downloads"] + rescue => e + puts "#{name} #{e.message}" + end +end -- cgit v1.2.1