From 0c7e7ae437900952b9f43f8a94e8b1aa57f3015f Mon Sep 17 00:00:00 2001 From: Max Howell Date: Fri, 2 Mar 2012 20:28:54 +0000 Subject: `brew tap` and `brew untap` --- Library/Homebrew/cmd/tap.rb | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Library/Homebrew/cmd/tap.rb (limited to 'Library/Homebrew/cmd/tap.rb') diff --git a/Library/Homebrew/cmd/tap.rb b/Library/Homebrew/cmd/tap.rb new file mode 100644 index 000000000..e1f53db8b --- /dev/null +++ b/Library/Homebrew/cmd/tap.rb @@ -0,0 +1,38 @@ +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}" + + cd HOMEBREW_LIBRARY/"Formula" + tapd.find_formula do |relative_pathname| + # using the system ln is the only way to get relative symlinks + system "ln -s ../Taps/#{user}-#{repo}/#{relative_pathname} 2>/dev/null" + opoo "#{relative_pathname.basename(".rb")} conflicts" unless $?.success? + end + end + + private + + def tap_args + ARGV.first =~ %r{^(\w+)/(homebrew-)?(\w+)$} + raise "Invalid usage" unless $1 and $3 + [$1, $3] + end + +end -- cgit v1.2.3