49 lines
1.4 KiB
Plaintext
Raw Normal View History

2009-05-21 00:04:43 +01:00
#!/usr/bin/ruby
# Copyright 2009 Max Howell <max@methylblue.com>
# Licensed as per the GPL version 3
require 'find'
require 'pathname'
2009-05-21 00:04:43 +01:00
$root = Pathname.new(__FILE__).realpath.dirname.parent.parent
case ARGV[0]
when 'brew', 'install' then
abort "You must specify a Formula" unless ARGV[1]
ARGV.shift
file="#{$root}/Formula/#{ARGV.shift}"
2009-05-21 00:04:43 +01:00
file+='.rb' unless File.exist? file
system "ruby #{file} #{ARGV.join ' '}"
2009-05-21 00:04:43 +01:00
when 'ln' then
abort "#{ARGV[1]} is not a directory" unless File.directory? ARGV[1]
2009-05-21 12:40:40 +01:00
#TODO if user specifies just name and not version dir, do latest version
2009-05-21 00:04:43 +01:00
#TODO you should mkdirs as you find them and symlink files otherwise
#TODO consider using hardlinks
2009-05-21 12:40:40 +01:00
2009-05-21 02:46:18 +01:00
target=Pathname.new(ARGV[1]).realpath
target.find do |from|
2009-05-21 00:04:43 +01:00
next if from == ARGV[1] #rubysucks
2009-05-21 02:46:18 +01:00
to=$root+from.relative_path_from(target)
2009-05-21 00:04:43 +01:00
if from.directory?
to.mkpath unless to.exist?
2009-05-21 00:04:43 +01:00
elsif from.file?
tod=to.dirname
2009-05-21 12:40:40 +01:00
Dir.chdir(tod) { `ln -s "#{from.relative_path_from tod}"` }
2009-05-21 00:04:43 +01:00
end
end
when 'prune', 'pasteurize' then
$root.find do |path|
if path.directory?
name=path.basename
Find.prune if name == 'Cellar' or name == 'Formula'
2009-05-21 00:04:43 +01:00
elsif path.symlink?
path.unlink unless path.readlink.exist?
end
end
else
2009-05-21 12:40:40 +01:00
puts "usage: #{$0} [prune] [ln path] [install pkg]"
2009-05-21 00:04:43 +01:00
end