aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd/tap.rb
diff options
context:
space:
mode:
authorMax Howell2012-03-02 20:28:54 +0000
committerMax Howell2012-03-16 21:06:15 +0000
commit0c7e7ae437900952b9f43f8a94e8b1aa57f3015f (patch)
tree7951cde4085e3d05858715132ca87a9b8b13c099 /Library/Homebrew/cmd/tap.rb
parenta42714ce82545047921dc35b41b5fc08d4e9ac43 (diff)
downloadbrew-0c7e7ae437900952b9f43f8a94e8b1aa57f3015f.tar.bz2
`brew tap` and `brew untap`
Diffstat (limited to 'Library/Homebrew/cmd/tap.rb')
-rw-r--r--Library/Homebrew/cmd/tap.rb38
1 files changed, 38 insertions, 0 deletions
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