Skip to content

Instantly share code, notes, and snippets.

@tenderlove
Created November 25, 2008 18:24
Show Gist options
  • Save tenderlove/29013 to your computer and use it in GitHub Desktop.
Save tenderlove/29013 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
####
# Generate a dot file graphing of all gems that *depend on* ARGV[0]
require 'rubygems'
require 'yaml'
puts("#{$0} <gemname>") || exit(1) unless ARGV[0]
file = 'yaml.marshal'
if !File.exists?(file)
system("wget http://gems.rubyforge.org/yaml ||" +
" curl -O http://gems.rubyforge.org/yaml")
File.open(file, 'wb') { |f|
f.write(Marshal.dump(YAML.load_file('yaml')))
}
end
latest_gems = {}
Marshal.load(File.read(file)).gems.each do |name, spec|
latest_gems[spec.name] ||= spec
latest_gems[spec.name] = spec if spec.version > latest_gems[spec.name].version
end
nodes = []
arrows = []
dep_stack = [ARGV[0]]
while dep_stack.length > 0
current_dep = dep_stack.shift
display_name = current_dep.gsub(/-/, '_')
nodes << "#{display_name} [label=\"#{display_name}\"];"
latest_gems.each do |name, spec|
if spec.dependencies.map { |x| x.name }.include?(current_dep)
arrows << "#{name.gsub(/-/, '_')} -> #{display_name};"
dep_stack << name
end
end
end
puts <<-eodot
digraph G {
#{nodes.join("\n")}
#{arrows.join("\n")}
}
eodot
digraph G {
nokogiri [label="nokogiri"];
elementor [label="elementor"];
webrat [label="webrat"];
merb_core [label="merb_core"];
merb_auth [label="merb_auth"];
thorero_builder [label="thorero_builder"];
thorero_mailer [label="thorero_mailer"];
merb_mailer [label="merb_mailer"];
thorero_cache [label="thorero_cache"];
merb_more [label="merb_more"];
merb_datamapper [label="merb_datamapper"];
merb_strokedb [label="merb_strokedb"];
thorero_helpers [label="thorero_helpers"];
thorero_freezer [label="thorero_freezer"];
hashtoxml [label="hashtoxml"];
merb_action_args [label="merb_action_args"];
merb [label="merb"];
thorero_slices [label="thorero_slices"];
merb_param_protection [label="merb_param_protection"];
merb_r18n [label="merb_r18n"];
thorero_assets [label="thorero_assets"];
merb_jquery [label="merb_jquery"];
merb_slices [label="merb_slices"];
merb_pagination [label="merb_pagination"];
merb_laszlo [label="merb_laszlo"];
merb_assets [label="merb_assets"];
merb_cache [label="merb_cache"];
merb_activerecord [label="merb_activerecord"];
thorero_jquery [label="thorero_jquery"];
merb_global [label="merb_global"];
merb_has_flash [label="merb_has_flash"];
merb_jquery [label="merb_jquery"];
thorero_action_args [label="thorero_action_args"];
merb_sequel [label="merb_sequel"];
halcyon [label="halcyon"];
merb_gets_ass [label="merb_gets_ass"];
merb_freezer [label="merb_freezer"];
thorero_gen [label="thorero_gen"];
merb_exceptions [label="merb_exceptions"];
merbful_authentication [label="merbful_authentication"];
merb_rubi18n [label="merb_rubi18n"];
merb_haml [label="merb_haml"];
merb_builder [label="merb_builder"];
merb_test_unit [label="merb_test_unit"];
merb_screw_unit [label="merb_screw_unit"];
merb_parts [label="merb_parts"];
thorero_parts [label="thorero_parts"];
sproutcore [label="sproutcore"];
merb_helpers [label="merb_helpers"];
merb_auth_core [label="merb_auth_core"];
merb_gen [label="merb_gen"];
merb_builder [label="merb_builder"];
merb_param_protection [label="merb_param_protection"];
thorero_haml [label="thorero_haml"];
merbiful_release [label="merbiful_release"];
merb_parts [label="merb_parts"];
merb_helpers [label="merb_helpers"];
merb_more [label="merb_more"];
merb_more [label="merb_more"];
merb [label="merb"];
merb_more [label="merb_more"];
merbiful_release [label="merbiful_release"];
merb_more [label="merb_more"];
merbiful_release [label="merbiful_release"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_more [label="merb_more"];
fiveruns_tuneup_merb [label="fiveruns_tuneup_merb"];
merb_auth_slice_password [label="merb_auth_slice_password"];
merb_screw_unit [label="merb_screw_unit"];
auth_slice [label="auth_slice"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_more [label="merb_more"];
merbiful_release [label="merbiful_release"];
merb_more [label="merb_more"];
aurora [label="aurora"];
merb_more [label="merb_more"];
merb_more [label="merb_more"];
merbiful_release [label="merbiful_release"];
merb_more [label="merb_more"];
merb_auth [label="merb_auth"];
merb_auth_slice_password [label="merb_auth_slice_password"];
merb_auth_more [label="merb_auth_more"];
merb_more [label="merb_more"];
merbful_authentication [label="merbful_authentication"];
merb_more [label="merb_more"];
merbiful_release [label="merbiful_release"];
merb [label="merb"];
merb [label="merb"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb [label="merb"];
merb [label="merb"];
merb [label="merb"];
merb_auth [label="merb_auth"];
merb [label="merb"];
merb [label="merb"];
merb [label="merb"];
merb [label="merb"];
merb [label="merb"];
merb_more [label="merb_more"];
merb_auth [label="merb_auth"];
merb_auth [label="merb_auth"];
merb_auth_slice_password [label="merb_auth_slice_password"];
merb [label="merb"];
merb [label="merb"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_more [label="merb_more"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb [label="merb"];
merb_more [label="merb_more"];
merb_more [label="merb_more"];
merb_auth [label="merb_auth"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb [label="merb"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb [label="merb"];
merb [label="merb"];
merb_more [label="merb_more"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
merb [label="merb"];
merb_plugins_app_config [label="merb_plugins_app_config"];
merb_virtuozzo [label="merb_virtuozzo"];
merb_signupto [label="merb_signupto"];
merb_manage [label="merb_manage"];
merb_openid [label="merb_openid"];
merb_has_rails_plugins [label="merb_has_rails_plugins"];
attachmerb_fu [label="attachmerb_fu"];
merb_stories [label="merb_stories"];
elementor -> nokogiri;
webrat -> nokogiri;
merb_core -> webrat;
merb_auth -> merb_core;
thorero_builder -> merb_core;
thorero_mailer -> merb_core;
merb_mailer -> merb_core;
thorero_cache -> merb_core;
merb_more -> merb_core;
merb_datamapper -> merb_core;
merb_strokedb -> merb_core;
thorero_helpers -> merb_core;
thorero_freezer -> merb_core;
hashtoxml -> merb_core;
merb_action_args -> merb_core;
merb -> merb_core;
thorero_slices -> merb_core;
merb_param_protection -> merb_core;
merb_r18n -> merb_core;
thorero_assets -> merb_core;
merb_jquery -> merb_core;
merb_slices -> merb_core;
merb_pagination -> merb_core;
merb_laszlo -> merb_core;
merb_assets -> merb_core;
merb_cache -> merb_core;
merb_activerecord -> merb_core;
thorero_jquery -> merb_core;
merb_global -> merb_core;
merb_has_flash -> merb_core;
merb_jquery -> merb_core;
thorero_action_args -> merb_core;
merb_sequel -> merb_core;
halcyon -> merb_core;
merb_gets_ass -> merb_core;
merb_freezer -> merb_core;
thorero_gen -> merb_core;
merb_exceptions -> merb_core;
merbful_authentication -> merb_core;
merb_rubi18n -> merb_core;
merb_haml -> merb_core;
merb_builder -> merb_core;
merb_test_unit -> merb_core;
merb_screw_unit -> merb_core;
merb_parts -> merb_core;
thorero_parts -> merb_core;
sproutcore -> merb_core;
merb_helpers -> merb_core;
merb_auth_core -> merb_core;
merb_gen -> merb_core;
merb_builder -> merb_core;
merb_param_protection -> merb_core;
thorero_haml -> merb_core;
merbiful_release -> merb_core;
merb_parts -> merb_core;
merb_helpers -> merb_core;
merb_more -> merb_auth;
merb_more -> merb_mailer;
merb -> merb_more;
merb_more -> merb_datamapper;
merbiful_release -> merb_datamapper;
merb_more -> merb_action_args;
merbiful_release -> merb_action_args;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_more -> merb_slices;
fiveruns_tuneup_merb -> merb_slices;
merb_auth_slice_password -> merb_slices;
merb_screw_unit -> merb_slices;
auth_slice -> merb_slices;
merb_plugins_app_config -> merb_assets;
merb_more -> merb_assets;
merbiful_release -> merb_assets;
merb_more -> merb_cache;
aurora -> halcyon;
merb_more -> merb_exceptions;
merb_more -> merb_haml;
merbiful_release -> merb_haml;
merb_more -> merb_helpers;
merb_auth -> merb_auth_core;
merb_auth_slice_password -> merb_auth_core;
merb_auth_more -> merb_auth_core;
merb_more -> merb_gen;
merbful_authentication -> merb_gen;
merb_more -> merb_param_protection;
merbiful_release -> merb_helpers;
merb -> merb_more;
merb -> merb_more;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb -> merb_more;
merb -> merb_more;
merb -> merb_more;
merb_auth -> merb_auth_slice_password;
merb -> merb_more;
merb -> merb_more;
merb -> merb_more;
merb -> merb_more;
merb -> merb_more;
merb_more -> merb_auth;
merb_auth -> merb_auth_slice_password;
merb_auth -> merb_auth_more;
merb_auth_slice_password -> merb_auth_more;
merb -> merb_more;
merb -> merb_more;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_more -> merb_auth;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb -> merb_more;
merb_more -> merb_auth;
merb_more -> merb_auth;
merb_auth -> merb_auth_slice_password;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb -> merb_more;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb -> merb_more;
merb -> merb_more;
merb_more -> merb_auth;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
merb -> merb_more;
merb_plugins_app_config -> merb;
merb_virtuozzo -> merb;
merb_signupto -> merb;
merb_manage -> merb;
merb_openid -> merb;
merb_has_rails_plugins -> merb;
attachmerb_fu -> merb;
merb_stories -> merb;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment