diff options
| author | Max Howell | 2012-03-02 20:28:54 +0000 |
|---|---|---|
| committer | Max Howell | 2012-03-16 21:06:15 +0000 |
| commit | 0c7e7ae437900952b9f43f8a94e8b1aa57f3015f (patch) | |
| tree | 7951cde4085e3d05858715132ca87a9b8b13c099 /Library/Homebrew/cmd/tap.rb | |
| parent | a42714ce82545047921dc35b41b5fc08d4e9ac43 (diff) | |
| download | brew-0c7e7ae437900952b9f43f8a94e8b1aa57f3015f.tar.bz2 | |
`brew tap` and `brew untap`
Diffstat (limited to 'Library/Homebrew/cmd/tap.rb')
| -rw-r--r-- | Library/Homebrew/cmd/tap.rb | 38 |
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 |
