diff options
| author | Markus Reiter | 2016-10-19 00:11:50 +0200 |
|---|---|---|
| committer | GitHub | 2016-10-19 00:11:50 +0200 |
| commit | 63122c241ce5c46e8201fe55773632e11e7eb187 (patch) | |
| tree | 001a7e56e82c0afd3fee053be09782774b48ebbf /Library | |
| parent | 9f76e2bbe316d7e8700d0811fcc097172d5e0c9b (diff) | |
| parent | 6e1c132f99166c716c991d687e4017167c2a37d0 (diff) | |
| download | brew-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.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/cask/lib/hbc/container/cab.rb | 8 | ||||
| -rw-r--r-- | Library/Homebrew/cask/lib/hbc/container/generic_unar.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/cask/lib/hbc/container/lzma.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/cask/lib/hbc/container/xz.rb | 4 | ||||
| -rw-r--r-- | Library/Homebrew/cask/lib/hbc/utils.rb | 28 | ||||
| -rw-r--r-- | Library/Homebrew/cask/test/cask/installer_test.rb | 12 | ||||
| -rw-r--r-- | Library/Homebrew/cask/test/test_helper.rb | 10 |
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") |
