Skip to content

Instantly share code, notes, and snippets.

@segiddins
Created January 30, 2015 01:07
Show Gist options
  • Save segiddins/ccde0e213bb96bee9bcc to your computer and use it in GitHub Desktop.
Save segiddins/ccde0e213bb96bee9bcc to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
require 'json'
require 'open-uri'
gems = %w(rails capybara bundler)
specs = []
begin
size = gems.size
specs = JSON.load open("http://bundler.rubygems.org/api/v1/dependencies.json?gems=#{gems.join(',')}")
gems += specs.flat_map { |s| s['dependencies'].map(&:first) }
gems.uniq!
end while gems.size != size
#puts "%w(#{gems.join ' '})"
#puts ''
#puts gems.size
specs.reject! { |s| s['platform'] != 'ruby' }
specs.uniq! { |s| [s['name'], s['number']] }
specs = specs.group_by { |s| s['name'] }.values.map do |s|
[s.first['name'], s.flat_map do |s|
{
'name' => s['name'],
'version' => s['number'],
'dependencies' => Hash[s['dependencies']]
}
end.sort_by { |s| Gem::Version.new(s['version']) }
]
end
specs = Hash[specs]
puts JSON.pretty_generate(specs)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment