Skip to content

Instantly share code, notes, and snippets.

@defunkt
Created April 29, 2010 20:05
Show Gist options
  • Select an option

  • Save defunkt/384156 to your computer and use it in GitHub Desktop.

Select an option

Save defunkt/384156 to your computer and use it in GitHub Desktop.
rip-dependency-tree(1)
#!/usr/bin/env ruby
# Usage: rip-dependency-tree deps.rip
require 'rip'
packages = Rip::Parser.parse(ARGF.read, ARGF.path)
puts ARGF.filename
def print_package(package, last=false, prefix='')
print prefix
print last ? '`-- ' : '|-- '
print package[:source]
puts package[:version] ? " (#{package[:version]})" : ''
if deps = package[:dependencies]
deps.each do |dep|
print_package(dep, dep == deps.last,
last ? prefix + ' ' : prefix + '| ')
end
end
end
packages.each do |package|
print_package(package, last=package == packages.last)
end
require 'test/unit'
ENV['PATH'] = ".:#{ENV['PATH']}"
class DependencyTest < Test::Unit::TestCase
def setup
File.open('complex.rip', 'w') { |f| f.puts DATA.read }
File.open('basic.rip', 'w') { |f| f.puts <<-basic_rip }
git://github.com/defunkt/resque 8fb7daf8
git://github.com/rtomayko/ronn.git 0.4.1
bert
ernie 1.0.0
mustache
basic_rip
end
def teardown
`rm complex.rip`
`rm basic.rip`
end
def test_pretty_tree
assert_equal <<-tree, `rip-dependency-tree complex.rip`
complex.rip
|-- git://github.com/ezmobius/redis-rb.git
|-- git://github.com/brianmario/yajl-ruby.git (0.6.3)
|-- sinatra (0.9.4)
| |-- rack (1.0)
| | `-- url_escape
| | |-- cgi_escape
| | `-- url_parser (0.4.3)
| `-- haml (1.0.0)
| |-- temple
| `-- sass (1.2.1)
|-- rake
|-- git://github.com/quirkey/vegas.git (v0.1.2)
|-- git://github.com/defunkt/resque (8fb7daf8)
|-- git://github.com/rtomayko/ronn.git (0.4.1)
|-- bert
|-- ernie (1.0.0)
|-- mustache
`-- git://github.com/rails/rails.git
tree
end
end
__END__
git://github.com/ezmobius/redis-rb.git @1.0 =>redis
git://github.com/brianmario/yajl-ruby.git 0.6.3
sinatra 0.9.4
* rack 1.0
** url_escape
*** cgi_escape
*** url_parser 0.4.3
* haml 1.0.0
** temple
** sass 1.2.1
rake # any version
# !brew install mongodb
# Classier with caps
git://github.com/quirkey/vegas.git v0.1.2 =>Vegas
basic.rip
git://github.com/rails/rails.git /activerecord
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment