aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMarkus Reiter2016-10-19 00:11:50 +0200
committerGitHub2016-10-19 00:11:50 +0200
commit63122c241ce5c46e8201fe55773632e11e7eb187 (patch)
tree001a7e56e82c0afd3fee053be09782774b48ebbf /Library
parent9f76e2bbe316d7e8700d0811fcc097172d5e0c9b (diff)
parent6e1c132f99166c716c991d687e4017167c2a37d0 (diff)
downloadbrew-63122c241ce5c46e8201fe55773632e11e7eb187.tar.bz2
Merge pull request #1319 from reitermarkus/refactor-containers
Look for container extraction programs in PATH.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cask/lib/hbc/cli.rb4
-rw-r--r--Library/Homebrew/cask/lib/hbc/container/cab.rb8
-rw-r--r--Library/Homebrew/cask/lib/hbc/container/generic_unar.rb4
-rw-r--r--Library/Homebrew/cask/lib/hbc/container/lzma.rb4
-rw-r--r--Library/Homebrew/cask/lib/hbc/container/xz.rb4
-rw-r--r--Library/Homebrew/cask/lib/hbc/utils.rb28
-rw-r--r--Library/Homebrew/cask/test/cask/installer_test.rb12
-rw-r--r--Library/Homebrew/cask/test/test_helper.rb10
8 files changed, 14 insertions, 60 deletions
diff --git a/Library/Homebrew/cask/lib/hbc/cli.rb b/Library/Homebrew/cask/lib/hbc/cli.rb
index ad8c02aab..11f8cc716 100644
--- a/Library/Homebrew/cask/lib/hbc/cli.rb
+++ b/Library/Homebrew/cask/lib/hbc/cli.rb
@@ -107,7 +107,7 @@ module Hbc
if command.respond_to?(:run)
# usual case: built-in command verb
command.run(*rest)
- elsif require? Utils.which("brewcask-#{command}.rb").to_s
+ elsif require? which("brewcask-#{command}.rb").to_s
# external command as Ruby library on PATH, Homebrew-style
elsif command.to_s.include?("/") && require?(command.to_s)
# external command as Ruby library with literal path, useful
@@ -124,7 +124,7 @@ module Hbc
# other Ruby libraries must do everything via "require"
klass.run(*rest)
end
- elsif Utils.which "brewcask-#{command}"
+ elsif which("brewcask-#{command}")
# arbitrary external executable on PATH, Homebrew-style
exec "brewcask-#{command}", *ARGV[1..-1]
elsif Pathname.new(command.to_s).executable? &&
diff --git a/Library/Homebrew/cask/lib/hbc/container/cab.rb b/Library/Homebrew/cask/lib/hbc/container/cab.rb
index d32b1b205..7ae6b0632 100644
--- a/Library/Homebrew/cask/lib/hbc/container/cab.rb
+++ b/Library/Homebrew/cask/lib/hbc/container/cab.rb
@@ -6,17 +6,15 @@ module Hbc
class Container
class Cab < Base
def self.me?(criteria)
- cabextract = Hbc.homebrew_prefix.join("bin", "cabextract")
+ cabextract = which("cabextract")
criteria.magic_number(%r{^MSCF}n) &&
- cabextract.exist? &&
+ !cabextract.nil? &&
criteria.command.run(cabextract, args: ["-t", "--", criteria.path.to_s]).stderr.empty?
end
def extract
- cabextract = Hbc.homebrew_prefix.join("bin", "cabextract")
-
- unless cabextract.exist?
+ if (cabextract = which("cabextract")).nil?
raise CaskError, "Expected to find cabextract executable. Cask '#{@cask}' must add: depends_on formula: 'cabextract'"
end
diff --git a/Library/Homebrew/cask/lib/hbc/container/generic_unar.rb b/Library/Homebrew/cask/lib/hbc/container/generic_unar.rb
index 32bbc8d15..5fa0dbdce 100644
--- a/Library/Homebrew/cask/lib/hbc/container/generic_unar.rb
+++ b/Library/Homebrew/cask/lib/hbc/container/generic_unar.rb
@@ -14,9 +14,7 @@ module Hbc
end
def extract
- unar = Hbc.homebrew_prefix.join("bin", "unar")
-
- unless unar.exist?
+ if (unar = which("unar")).nil?
raise CaskError, "Expected to find unar executable. Cask #{@cask} must add: depends_on formula: 'unar'"
end
diff --git a/Library/Homebrew/cask/lib/hbc/container/lzma.rb b/Library/Homebrew/cask/lib/hbc/container/lzma.rb
index a91132b55..cca4d814b 100644
--- a/Library/Homebrew/cask/lib/hbc/container/lzma.rb
+++ b/Library/Homebrew/cask/lib/hbc/container/lzma.rb
@@ -10,9 +10,7 @@ module Hbc
end
def extract
- unlzma = Hbc.homebrew_prefix.join("bin", "unlzma")
-
- unless unlzma.exist?
+ if (unlzma = which("unlzma")).nil?
raise CaskError, "Expected to find unlzma executable. Cask '#{@cask}' must add: depends_on formula: 'lzma'"
end
diff --git a/Library/Homebrew/cask/lib/hbc/container/xz.rb b/Library/Homebrew/cask/lib/hbc/container/xz.rb
index 831bef5aa..fc0ae064e 100644
--- a/Library/Homebrew/cask/lib/hbc/container/xz.rb
+++ b/Library/Homebrew/cask/lib/hbc/container/xz.rb
@@ -10,9 +10,7 @@ module Hbc
end
def extract
- unxz = Hbc.homebrew_prefix.join("bin", "unxz")
-
- unless unxz.exist?
+ if (unxz = which("unxz")).nil?
raise CaskError, "Expected to find unxz executable. Cask '#{@cask}' must add: depends_on formula: 'xz'"
end
diff --git a/Library/Homebrew/cask/lib/hbc/utils.rb b/Library/Homebrew/cask/lib/hbc/utils.rb
index c2c091698..38fa23463 100644
--- a/Library/Homebrew/cask/lib/hbc/utils.rb
+++ b/Library/Homebrew/cask/lib/hbc/utils.rb
@@ -38,34 +38,6 @@ end
module Hbc
module Utils
- def self.which(cmd, path = ENV["PATH"])
- unless File.basename(cmd) == cmd.to_s
- # cmd contains a directory element
- cmd_pn = Pathname(cmd)
- return nil unless cmd_pn.absolute?
- return resolve_executable(cmd_pn)
- end
- path.split(File::PATH_SEPARATOR).each do |elt|
- fq_cmd = Pathname(elt).expand_path.join(cmd)
- resolved = resolve_executable fq_cmd
- return resolved if resolved
- end
- nil
- end
-
- def self.resolve_executable(cmd)
- cmd_pn = Pathname(cmd)
- return nil unless cmd_pn.exist?
- return nil unless cmd_pn.executable?
- begin
- cmd_pn = Pathname(cmd_pn.realpath)
- rescue RuntimeError
- return nil
- end
- return nil unless cmd_pn.file?
- cmd_pn
- end
-
def self.gain_permissions_remove(path, command: SystemCommand)
if path.respond_to?(:rmtree) && path.exist?
gain_permissions(path, ["-R"], command, &:rmtree)
diff --git a/Library/Homebrew/cask/test/cask/installer_test.rb b/Library/Homebrew/cask/test/cask/installer_test.rb
index 64a0e9b87..6d8981f64 100644
--- a/Library/Homebrew/cask/test/cask/installer_test.rb
+++ b/Library/Homebrew/cask/test/cask/installer_test.rb
@@ -42,7 +42,7 @@ describe Hbc::Installer do
end
it "works with cab-based Casks" do
- skip("cabextract not installed") unless Hbc.homebrew_prefix.join("bin", "cabextract").exist?
+ skip("cabextract not installed") if which("cabextract").nil?
asset = Hbc.load("container-cab")
empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil)
asset.stubs(:depends_on).returns(empty)
@@ -72,7 +72,7 @@ describe Hbc::Installer do
end
it "works with 7z-based Casks" do
- skip("unar not installed") unless Hbc.homebrew_prefix.join("bin", "unar").exist?
+ skip("unar not installed") if which("unar").nil?
asset = Hbc.load("container-7z")
empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil)
asset.stubs(:depends_on).returns(empty)
@@ -101,7 +101,7 @@ describe Hbc::Installer do
end
it "works with Stuffit-based Casks" do
- skip("unar not installed") unless Hbc.homebrew_prefix.join("bin", "unar").exist?
+ skip("unar not installed") if which("unar").nil?
asset = Hbc.load("container-sit")
empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil)
asset.stubs(:depends_on).returns(empty)
@@ -117,7 +117,7 @@ describe Hbc::Installer do
end
it "works with RAR-based Casks" do
- skip("unar not installed") unless Hbc.homebrew_prefix.join("bin", "unar").exist?
+ skip("unar not installed") if which("unar").nil?
asset = Hbc.load("container-rar")
empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil)
asset.stubs(:depends_on).returns(empty)
@@ -159,7 +159,7 @@ describe Hbc::Installer do
end
it "works with pure xz-based Casks" do
- skip("unxz not installed") unless Hbc.homebrew_prefix.join("bin", "unxz").exist?
+ skip("unxz not installed") if which("unxz").nil?
asset = Hbc.load("container-xz")
empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil)
asset.stubs(:depends_on).returns(empty)
@@ -175,7 +175,7 @@ describe Hbc::Installer do
end
it "works with lzma-based Casks" do
- skip("unlzma not installed") unless Hbc.homebrew_prefix.join("bin", "unlzma").exist?
+ skip("unlzma not installed") if which("unlzma").nil?
asset = Hbc.load("container-lzma")
empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil)
asset.stubs(:depends_on).returns(empty)
diff --git a/Library/Homebrew/cask/test/test_helper.rb b/Library/Homebrew/cask/test/test_helper.rb
index 40e718ad5..25b32d2de 100644
--- a/Library/Homebrew/cask/test/test_helper.rb
+++ b/Library/Homebrew/cask/test/test_helper.rb
@@ -151,17 +151,7 @@ require "support/never_sudo_system_command"
require "tmpdir"
require "tempfile"
-# create directories
-FileUtils.mkdir_p Hbc.homebrew_prefix.join("bin")
-
# Common superclass for test Casks for when we need to filter them out
module Hbc
class TestCask < Cask; end
end
-
-# jack in some optional utilities
-FileUtils.ln_s "/usr/local/bin/cabextract", Hbc.homebrew_prefix.join("bin/cabextract")
-FileUtils.ln_s "/usr/local/bin/unar", Hbc.homebrew_prefix.join("bin/unar")
-FileUtils.ln_s "/usr/local/bin/unlzma", Hbc.homebrew_prefix.join("bin/unlzma")
-FileUtils.ln_s "/usr/local/bin/unxz", Hbc.homebrew_prefix.join("bin/unxz")
-FileUtils.ln_s "/usr/local/bin/lsar", Hbc.homebrew_prefix.join("bin/lsar")