aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorXu Cheng2015-06-08 18:05:58 +0800
committerXu Cheng2015-06-11 15:28:29 +0800
commit44383fecb865014142c8934eacf2c90837a5b57c (patch)
treea5d21ff2b08204312ad25ded9552a13c20e6c8a3 /Library
parentf7bcfe5115f92e5e88596bf77d34f9a954e4c4b0 (diff)
downloadbrew-44383fecb865014142c8934eacf2c90837a5b57c.tar.bz2
(un)tap/update/readall: use Tap class
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/readall.rb9
-rw-r--r--Library/Homebrew/cmd/tap.rb60
-rw-r--r--Library/Homebrew/cmd/untap.rb26
-rw-r--r--Library/Homebrew/cmd/update.rb8
4 files changed, 28 insertions, 75 deletions
diff --git a/Library/Homebrew/cmd/readall.rb b/Library/Homebrew/cmd/readall.rb
index 399618dd8..9216f6377 100644
--- a/Library/Homebrew/cmd/readall.rb
+++ b/Library/Homebrew/cmd/readall.rb
@@ -34,12 +34,9 @@ module Homebrew
if ARGV.named.empty?
formulae = Formula.full_names
else
- user, repo = tap_args
- user.downcase!
- repo.downcase!
- tap = HOMEBREW_LIBRARY/"Taps/#{user}/homebrew-#{repo}"
- raise "#{tap} does not exist!" unless tap.directory?
- tap.find_formula { |f| formulae << f }
+ tap = Tap.new(*tap_args)
+ raise "#{tap} does not exist!" unless tap.installed?
+ formulae = tap.formula_files
end
formulae.sort.each do |n|
diff --git a/Library/Homebrew/cmd/tap.rb b/Library/Homebrew/cmd/tap.rb
index 6dc8c4da0..3a0a1156b 100644
--- a/Library/Homebrew/cmd/tap.rb
+++ b/Library/Homebrew/cmd/tap.rb
@@ -1,9 +1,9 @@
+require "tap"
+
module Homebrew
def tap
if ARGV.empty?
- each_tap do |user, repo|
- puts "#{user.basename}/#{repo.basename.sub("homebrew-", "")}" if (repo/".git").directory?
- end
+ puts Tap.names
elsif ARGV.first == "--repair"
migrate_taps :force => true
else
@@ -14,35 +14,25 @@ module Homebrew
end
def install_tap user, repo, clone_target=nil
- # we special case homebrew so users don't have to shift in a terminal
- repouser = if user == "homebrew" then "Homebrew" else user end
- user = "homebrew" if user == "Homebrew"
-
- # we downcase to avoid case-insensitive filesystem issues
- tapd = HOMEBREW_LIBRARY/"Taps/#{user.downcase}/homebrew-#{repo.downcase}"
- return false if tapd.directory?
- ohai "Tapping #{repouser}/#{repo}"
- if clone_target
- args = %W[clone #{clone_target} #{tapd}]
- else
- args = %W[clone https://github.com/#{repouser}/homebrew-#{repo} #{tapd}]
- end
+ tap = Tap.new user, repo, clone_target
+ return false if tap.installed?
+ ohai "Tapping #{tap}"
+ args = %W[clone #{tap.remote} #{tap.path}]
args << "--depth=1" unless ARGV.include?("--full")
safe_system "git", *args
- files = []
- tapd.find_formula { |file| files << file }
- puts "Tapped #{files.length} formula#{plural(files.length, 'e')} (#{tapd.abv})"
+ formula_count = tap.formula_files.size
+ puts "Tapped #{formula_count} formula#{plural(formula_count, 'e')} (#{tap.path.abv})"
- if check_private?(clone_target, repouser, repo)
+ if !clone_target && tap.private?
puts <<-EOS.undent
It looks like you tapped a private repository. To avoid entering your
credentials each time you update, you can use git HTTP credential
caching or issue the following command:
- cd #{tapd}
- git remote set-url origin git@github.com:#{repouser}/homebrew-#{repo}.git
- EOS
+ cd #{tap.path}
+ git remote set-url origin git@github.com:#{tap.user}/homebrew-#{tap.repo}.git
+ EOS
end
true
@@ -58,33 +48,9 @@ module Homebrew
private
- def each_tap
- taps = HOMEBREW_LIBRARY.join("Taps")
-
- if taps.directory?
- taps.subdirs.each do |user|
- user.subdirs.each do |repo|
- yield user, repo
- end
- end
- end
- end
-
def tap_args(tap_name=ARGV.named.first)
tap_name =~ HOMEBREW_TAP_ARGS_REGEX
raise "Invalid tap name" unless $1 && $3
[$1, $3]
end
-
- def private_tap?(user, repo)
- GitHub.private_repo?(user, "homebrew-#{repo}")
- rescue GitHub::HTTPNotFoundError
- true
- rescue GitHub::Error
- false
- end
-
- def check_private?(clone_target, user, repo)
- !clone_target && private_tap?(user, repo)
- end
end
diff --git a/Library/Homebrew/cmd/untap.rb b/Library/Homebrew/cmd/untap.rb
index 937439e9d..dd66cec1b 100644
--- a/Library/Homebrew/cmd/untap.rb
+++ b/Library/Homebrew/cmd/untap.rb
@@ -4,26 +4,16 @@ module Homebrew
def untap
raise "Usage is `brew untap <tap-name>`" if ARGV.empty?
- ARGV.each do |tapname|
- user, repo = tap_args(tapname)
+ ARGV.named.each do |tapname|
+ tap = Tap.new(*tap_args(tapname))
- # We consistently downcase in tap to ensure we are not bitten by
- # case-insensitive filesystem issues, which is the default on mac. The
- # problem being the filesystem cares, but our regexps don't. So unless we
- # resolve *every* path we will get bitten.
- user.downcase!
- repo.downcase!
+ raise "No such tap!" unless tap.installed?
+ puts "Untapping #{tap}... (#{tap.path.abv})"
- tapd = HOMEBREW_LIBRARY/"Taps/#{user}/homebrew-#{repo}"
-
- raise "No such tap!" unless tapd.directory?
- puts "Untapping #{tapname}... (#{tapd.abv})"
-
- files = []
- tapd.find_formula { |file| files << file }
- tapd.rmtree
- tapd.dirname.rmdir_if_possible
- puts "Untapped #{files.length} formula#{plural(files.length, 'e')}"
+ formula_count = tap.formula_files.size
+ tap.path.rmtree
+ tap.path.dirname.rmdir_if_possible
+ puts "Untapped #{formula_count} formula#{plural(formula_count, 'e')}"
end
end
end
diff --git a/Library/Homebrew/cmd/update.rb b/Library/Homebrew/cmd/update.rb
index c8e1dec54..c01fb827a 100644
--- a/Library/Homebrew/cmd/update.rb
+++ b/Library/Homebrew/cmd/update.rb
@@ -27,14 +27,14 @@ module Homebrew
# this procedure will be removed in the future if it seems unnecessasry
rename_taps_dir_if_necessary
- each_tap do |user, repo|
- repo.cd do
- updater = Updater.new(repo)
+ Tap.each do |tap|
+ tap.path.cd do
+ updater = Updater.new(tap.path)
begin
updater.pull!
rescue
- onoe "Failed to update tap: #{user.basename}/#{repo.basename.sub("homebrew-", "")}"
+ onoe "Failed to update tap: #{tap}"
else
report.update(updater.report) do |key, oldval, newval|
oldval.concat(newval)