2012-03-04 02:47:11 +00:00
|
|
|
require 'tempfile'
|
|
|
|
|
2012-03-02 20:28:54 +00:00
|
|
|
HOMEBREW_LIBRARY = HOMEBREW_REPOSITORY/"Library"
|
|
|
|
|
|
|
|
module Homebrew extend self
|
|
|
|
|
|
|
|
def tap
|
|
|
|
if ARGV.empty?
|
|
|
|
(HOMEBREW_LIBRARY/"Taps").children.each do |tap|
|
|
|
|
puts tap.basename.sub('-', '/') if (tap/'.git').directory?
|
|
|
|
end
|
|
|
|
else
|
|
|
|
install_tap(*tap_args)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def install_tap user, repo
|
|
|
|
raise "brew install git" unless system "/usr/bin/which -s git"
|
|
|
|
|
|
|
|
tapd = HOMEBREW_LIBRARY/"Taps/#{user}-#{repo}"
|
|
|
|
raise "Already tapped!" if tapd.directory?
|
|
|
|
abort unless system "git clone https://github.com/#{user}/homebrew-#{repo} #{tapd}"
|
|
|
|
|
2012-03-07 22:48:44 +00:00
|
|
|
files = []
|
|
|
|
tapd.find_formula{ |file| files << Pathname.new("#{user}-#{repo}").join(file) }
|
|
|
|
link_tap_formula(files)
|
|
|
|
end
|
|
|
|
|
|
|
|
def link_tap_formula formulae
|
|
|
|
ignores = (HOMEBREW_LIBRARY/"Formula/.gitignore").read.split rescue []
|
|
|
|
|
|
|
|
cd HOMEBREW_LIBRARY/"Formula" do
|
|
|
|
formulae.each do |formula|
|
|
|
|
# using the system ln is the only way to get relative symlinks
|
|
|
|
system "ln -s ../Taps/#{formula} 2>/dev/null"
|
|
|
|
if $?.success?
|
|
|
|
ignores << formula.basename.to_s
|
|
|
|
else
|
|
|
|
opoo "#{formula.basename('.rb')} conflicts"
|
|
|
|
end
|
2012-03-04 02:47:11 +00:00
|
|
|
end
|
2012-03-02 20:28:54 +00:00
|
|
|
end
|
2012-03-04 02:47:11 +00:00
|
|
|
|
|
|
|
tf = Tempfile.new("brew-tap")
|
2012-03-07 22:48:44 +00:00
|
|
|
tf.write(ignores.uniq.join("\n"))
|
2012-03-04 02:47:11 +00:00
|
|
|
tf.close
|
2012-03-04 14:17:54 +00:00
|
|
|
mv tf.path, "#{HOMEBREW_LIBRARY}/Formula/.gitignore"
|
2012-03-02 20:28:54 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def tap_args
|
|
|
|
ARGV.first =~ %r{^(\w+)/(homebrew-)?(\w+)$}
|
|
|
|
raise "Invalid usage" unless $1 and $3
|
|
|
|
[$1, $3]
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|