Skip to content

Instantly share code, notes, and snippets.

@tizoc
Created February 14, 2012 10:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save tizoc/1825756 to your computer and use it in GitHub Desktop.
Save tizoc/1825756 to your computer and use it in GitHub Desktop.
#!/usr/bin/env ruby
require 'fileutils'
require 'rubygems'
gem_dirs = []
basedir = 'deps'
FileUtils.mkdir_p(basedir)
ARGV.each do |gemset|
File.open(gemset, 'r').each_line do |line|
next if line =~ /^#.*/
line = line.gsub(' -v', '-')
Gem.path.each do |gempath|
gemdir = File.join(gempath, 'gems', line.strip)
if File.directory?(gemdir)
gem_dirs << gemdir
break
end
end
end
end
def recursive_link(src, dst)
if File.directory?(src)
srcname = File.basename(src)
fulldst = File.join(dst, srcname)
FileUtils.mkdir_p(fulldst)
Dir.entries(src).each do |entry|
next if ['.', '..'].include? entry
recursive_link(File.join(src, entry), fulldst)
end
else
begin
FileUtils.ln_sf(src, dst)
rescue
puts "Warning: #{$!.message}"
end
end
end
gem_dirs.each do |gem_dir|
Dir.entries(gem_dir).each do |dir|
next if ['.', '..', 'spec'].include? dir
recursive_link(File.join(gem_dir, dir), basedir)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment