aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXu Cheng2016-02-15 22:31:47 +0800
committerXu Cheng2016-02-16 14:23:39 +0800
commit4e51c0b8ea371d15d2ae996700e1c988e79cab17 (patch)
treeee0cf40d3a6b095ac33c126e0095b601fe678ba9
parent578e68b2c1cda6af408ca04ed69877de15198b04 (diff)
downloadbrew-4e51c0b8ea371d15d2ae996700e1c988e79cab17.tar.bz2
add Tap#formula_file?
Return true if given path would present a Formula file in this Tap. Accepts both absolute path and relative path (relative to this Tap's path) It offer an abstraction such that caller would not need to worry about low level file system in the tap. It will be used in `brew pull` and `brew update`. Closes Homebrew/homebrew#49191. Signed-off-by: Xu Cheng <xucheng@me.com>
-rw-r--r--Library/Homebrew/cmd/pull.rb2
-rw-r--r--Library/Homebrew/tap.rb9
-rw-r--r--Library/Homebrew/test/test_tap.rb4
3 files changed, 14 insertions, 1 deletions
diff --git a/Library/Homebrew/cmd/pull.rb b/Library/Homebrew/cmd/pull.rb
index ad70f01f4..45c3bf76b 100644
--- a/Library/Homebrew/cmd/pull.rb
+++ b/Library/Homebrew/cmd/pull.rb
@@ -305,7 +305,7 @@ module Homebrew
files << $1 if line =~ %r{^\+\+\+ b/(.*)}
end
files.each do |file|
- if (tap.path/file).dirname == tap.formula_dir
+ if tap.formula_file?(file)
formula_name = File.basename(file, ".rb")
formulae << formula_name unless formulae.include?(formula_name)
else
diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb
index 712348d60..08e85688d 100644
--- a/Library/Homebrew/tap.rb
+++ b/Library/Homebrew/tap.rb
@@ -247,6 +247,15 @@ class Tap
end
end
+ # return true if given path would present a {Formula} file in this {Tap}.
+ # accepts both absolute path and relative path (relative to this {Tap}'s path)
+ # @private
+ def formula_file?(file)
+ file = Pathname.new(file) unless file.is_a? Pathname
+ file = file.expand_path(path)
+ file.extname == ".rb" && file.parent == formula_dir
+ end
+
# an array of all {Formula} names of this {Tap}.
def formula_names
@formula_names ||= formula_files.map { |f| formula_file_to_name(f) }
diff --git a/Library/Homebrew/test/test_tap.rb b/Library/Homebrew/test/test_tap.rb
index 6e497a070..1159eb992 100644
--- a/Library/Homebrew/test/test_tap.rb
+++ b/Library/Homebrew/test/test_tap.rb
@@ -95,6 +95,10 @@ class TapTest < Homebrew::TestCase
assert_equal @tap.formula_renames, "oldname" => "foo"
assert_equal [@cmd_file], @tap.command_files
assert_kind_of Hash, @tap.to_hash
+ assert_equal true, @tap.formula_file?(@formula_file)
+ assert_equal true, @tap.formula_file?("Formula/foo.rb")
+ assert_equal false, @tap.formula_file?("bar.rb")
+ assert_equal false, @tap.formula_file?("Formula/baz.sh")
end
def test_remote