aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBaptiste Fontaine2016-01-18 01:22:35 +0100
committerBaptiste Fontaine2016-01-20 22:27:13 +0100
commit5775d3b326949eba3a83a39b31595e0f56bc9a82 (patch)
treea1f127d3b4a8c6c1d567ff1e6a467e8cb18e66fe
parentc1e673e19a0c02eafb6c24a4ce391b53c2fdbfdc (diff)
downloadbrew-5775d3b326949eba3a83a39b31595e0f56bc9a82.tar.bz2
command: support .sh commands
Closes Homebrew/homebrew#48192. Signed-off-by: Baptiste Fontaine <batifon@yahoo.fr>
-rw-r--r--Library/Homebrew/cmd/command.rb17
-rw-r--r--Library/Homebrew/test/test_commands.rb22
2 files changed, 35 insertions, 4 deletions
diff --git a/Library/Homebrew/cmd/command.rb b/Library/Homebrew/cmd/command.rb
index 4790a6952..ad7f99288 100644
--- a/Library/Homebrew/cmd/command.rb
+++ b/Library/Homebrew/cmd/command.rb
@@ -4,9 +4,7 @@ module Homebrew
cmd = ARGV.first
cmd = HOMEBREW_INTERNAL_COMMAND_ALIASES.fetch(cmd, cmd)
- if (path = HOMEBREW_LIBRARY_PATH/"cmd/#{cmd}.rb").file?
- puts path
- elsif ARGV.homebrew_developer? && (path = HOMEBREW_LIBRARY_PATH/"dev-cmd/#{cmd}.rb").file?
+ if (path = internal_command_path cmd)
puts path
elsif (path = which("brew-#{cmd}") || which("brew-#{cmd}.rb"))
puts path
@@ -14,4 +12,17 @@ module Homebrew
odie "Unknown command: #{cmd}"
end
end
+
+ private
+
+ def internal_command_path(cmd)
+ extensions = %w[rb sh]
+ paths = extensions.map { |ext| HOMEBREW_LIBRARY_PATH/"cmd/#{cmd}.#{ext}" }
+
+ if ARGV.homebrew_developer?
+ paths += extensions.map { |ext| HOMEBREW_LIBRARY_PATH/"dev-cmd/#{cmd}.#{ext}" }
+ end
+
+ paths.find { |p| p.file? }
+ end
end
diff --git a/Library/Homebrew/test/test_commands.rb b/Library/Homebrew/test/test_commands.rb
index 0fb46dd9c..78a5d1c28 100644
--- a/Library/Homebrew/test/test_commands.rb
+++ b/Library/Homebrew/test/test_commands.rb
@@ -1,8 +1,9 @@
require "testing_env"
+require "cmd/command"
require "cmd/commands"
require "fileutils"
-class CommandsCommandTests < Homebrew::TestCase
+class CommandsTests < Homebrew::TestCase
def setup
@cmds = [
# internal commands
@@ -59,4 +60,23 @@ class CommandsCommandTests < Homebrew::TestCase
ensure
ENV.replace(env)
end
+
+ def test_internal_command_path
+ assert_equal HOMEBREW_LIBRARY_PATH/"cmd/rbcmd.rb",
+ Homebrew.send(:internal_command_path, "rbcmd")
+ assert_equal HOMEBREW_LIBRARY_PATH/"cmd/shcmd.sh",
+ Homebrew.send(:internal_command_path, "shcmd")
+ assert_nil Homebrew.send(:internal_command_path, "idontexist1234")
+ end
+
+ def test_internal_dev_command_path
+ ARGV.stubs(:homebrew_developer?).returns false
+ assert_nil Homebrew.send(:internal_command_path, "rbdevcmd")
+
+ ARGV.stubs(:homebrew_developer?).returns true
+ assert_equal HOMEBREW_LIBRARY_PATH/"dev-cmd/rbdevcmd.rb",
+ Homebrew.send(:internal_command_path, "rbdevcmd")
+ assert_equal HOMEBREW_LIBRARY_PATH/"dev-cmd/shdevcmd.sh",
+ Homebrew.send(:internal_command_path, "shdevcmd")
+ end
end