Skip to content

Commit

Permalink
brew tap and brew untap
Browse files Browse the repository at this point in the history
  • Loading branch information
mxcl committed Mar 16, 2012
1 parent 36ebeb2 commit fb13b6a
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 1 deletion.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@
!/bin/brew
!/share/man/man1/brew.1
.DS_Store
/Library/LinkedKegs
/Library/LinkedKegs
/Library/Taps
38 changes: 38 additions & 0 deletions Library/Homebrew/cmd/tap.rb
Original file line number Diff line number Diff line change
@@ -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
17 changes: 17 additions & 0 deletions Library/Homebrew/cmd/untap.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
require 'cmd/tap' # for Pathname.recursive_formula

module Homebrew extend self
def untap
user, repo = tap_args
tapd = HOMEBREW_PREFIX/"Library/Taps/#{user}-#{repo}"

raise "No such tap!" unless tapd.directory?

tapd.find_formula do |pn|
pn = HOMEBREW_REPOSITORY/"Library/Formula"/pn.basename
pn.delete if pn.symlink? and pn.realpath.to_s =~ %r[^#{tapd.realpath}]
end

rm_rf tapd
end
end
11 changes: 11 additions & 0 deletions Library/Homebrew/extend/pathname.rb
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,17 @@ def uninstall_info
end
system '/usr/bin/install-info', '--delete', '--quiet', self.to_s, (self.dirname+'dir').to_s
end
def find_formula pwd = self
children.map{ |child| child.relative_path_from(pwd) }.each do |pn|
yield pn if pn.to_s =~ /.rb$/
end
children.each do |child|
child.find_formula(pwd) do |pn|
yield pn
end if child.directory?
end
end
end
# sets $n and $d so you can observe creation of stuff
Expand Down

0 comments on commit fb13b6a

Please sign in to comment.