summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Ziegler <austin@zieglers.ca>2021-11-15 12:59:13 -0500
committerAustin Ziegler <austin@zieglers.ca>2021-11-15 13:00:09 -0500
commitfdbbaa8f07922e13cda076dc93dfe8864462ce61 (patch)
tree58be8c5a64ab1587a18f1fd6b9fd5ed3f63ae42b
parent0c76e5cf28d85d6ff36e2d37b7292a115909d315 (diff)
downloadmime-types-fdbbaa8f07922e13cda076dc93dfe8864462ce61.tar.gz
Move deps retrieval to a support file
-rw-r--r--History.md1
-rw-r--r--Rakefile45
-rw-r--r--support/deps.rb42
3 files changed, 59 insertions, 29 deletions
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