Skip to content

Instantly share code, notes, and snippets.

@lee-dohm
Last active August 29, 2015 14:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lee-dohm/80c65f90b250b039c04f to your computer and use it in GitHub Desktop.
Save lee-dohm/80c65f90b250b039c04f to your computer and use it in GitHub Desktop.
Count Atom package dependencies
#!/usr/bin/env ruby
require 'json'
require 'set'
package_dir = "#{ENV['HOME']}/.atom/packages"
packages = Dir[File.join(package_dir, '*')].select { |file| File.directory?(file) }
dependencies = {}
packages.each do |package|
metadata = JSON.parse(File.read(File.join(package, 'package.json')))
next unless metadata['dependencies']
metadata['dependencies'].each do |key, value|
dependencies[key] ||= Set.new
dependencies[key] << value
end
end
total = 0
keys = dependencies.keys.sort { |a, b| -(dependencies[a].count <=> dependencies[b].count) }
keys.each do |key|
total += dependencies[key].count
puts "#{key}: #{dependencies[key].count} => #{dependencies[key].to_a}"
end
puts
puts "Total Packages: #{packages.count}"
puts "Total Different Versions: #{total}"
puts "Average Dependencies per Package: #{total.to_f / packages.count}"
puts "Average Number of Versions per Dependency: #{total.to_f / keys.count}"
fs-plus: 5 => ["^2.0.4", "^2.3.0", "~2.2.1", "2.x", "^2"]
underscore-plus: 4 => ["1.x", ">=1.0.0", ">=1.5.1", "^1.6.6"]
season: 3 => ["^1.0.2", "~2.0.0", "~1.0"]
emissary: 3 => ["^1.0.0", "^1.3.1", "*"]
q: 3 => ["1.x", "~1.0.0", "~1.0.1"]
moment: 3 => ["^2.8.0", "2.6.x", ">=2.7.0"]
event-kit: 3 => ["0.7.x", "1.x", "latest"]
atom-space-pen-views: 3 => ["^2.0.3", ">= 0.20.0", "^2.0.0"]
grim: 2 => ["^1", ">=0.12.0"]
underscore: 2 => ["1.6.0", "*"]
mkdirp: 2 => ["^0.3.5", "0.5.x"]
temp: 2 => [">=0.7.0", "0.6.0"]
minimatch: 2 => ["^0.2.14", ">=0.2.14"]
fuzzaldrin: 2 => [">=1.0.0", "~1.0.0"]
sub-atom: 2 => ["*", "0.*.*"]
async: 2 => [">=0.9.0", "~0.7.0"]
request: 1 => ["~2.0.0"]
xml2js: 1 => ["^0.4.1"]
color: 1 => ["^0.5.0"]
node-uuid: 1 => [">=1.4.1"]
scoped-property-store: 1 => [">=0.16.2"]
lodash: 1 => ["^2.4.1"]
mixto: 1 => ["1.x"]
plist: 1 => ["^1.1.0"]
pigments: 1 => [">= 3.2.0"]
loophole: 1 => ["1.0.x"]
entities: 1 => ["^1.0.0"]
binarysearch: 1 => ["0.2.x"]
diff_match_patch: 1 => ["0.1.x"]
underscore.string: 1 => [">=2.3.0"]
text-archive-engine: 1 => ["git+https://github.com/mark-hahn/text-archive-engine#0.1.2"]
delegato: 1 => ["1.x"]
semver: 1 => ["^4.3.0"]
atom-utils: 1 => ["0.5.x"]
marked: 1 => ["0.3.1"]
Total Packages: 44
Total Different Versions: 62
Average Dependencies per Package: 1.4090909090909092
Average Number of Versions per Dependency: 1.7714285714285714
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment