Look for container extraction programs in PATH.

This commit is contained in:
Markus Reiter 2016-10-18 17:17:19 +02:00
parent 9f76e2bbe3
commit 8d83516577
6 changed files with 12 additions and 30 deletions

View File

@ -6,17 +6,15 @@ module Hbc
class Container class Container
class Cab < Base class Cab < Base
def self.me?(criteria) def self.me?(criteria)
cabextract = Hbc.homebrew_prefix.join("bin", "cabextract") cabextract = which("cabextract")
criteria.magic_number(%r{^MSCF}n) && criteria.magic_number(%r{^MSCF}n) &&
cabextract.exist? && !cabextract.nil? &&
criteria.command.run(cabextract, args: ["-t", "--", criteria.path.to_s]).stderr.empty? criteria.command.run(cabextract, args: ["-t", "--", criteria.path.to_s]).stderr.empty?
end end
def extract def extract
cabextract = Hbc.homebrew_prefix.join("bin", "cabextract") if (cabextract = which("cabextract")).nil?
unless cabextract.exist?
raise CaskError, "Expected to find cabextract executable. Cask '#{@cask}' must add: depends_on formula: 'cabextract'" raise CaskError, "Expected to find cabextract executable. Cask '#{@cask}' must add: depends_on formula: 'cabextract'"
end end

View File

@ -14,9 +14,7 @@ module Hbc
end end
def extract def extract
unar = Hbc.homebrew_prefix.join("bin", "unar") if (unar = which("unar")).nil?
unless unar.exist?
raise CaskError, "Expected to find unar executable. Cask #{@cask} must add: depends_on formula: 'unar'" raise CaskError, "Expected to find unar executable. Cask #{@cask} must add: depends_on formula: 'unar'"
end end

View File

@ -10,9 +10,7 @@ module Hbc
end end
def extract def extract
unlzma = Hbc.homebrew_prefix.join("bin", "unlzma") if (unlzma = which("unlzma")).nil?
unless unlzma.exist?
raise CaskError, "Expected to find unlzma executable. Cask '#{@cask}' must add: depends_on formula: 'lzma'" raise CaskError, "Expected to find unlzma executable. Cask '#{@cask}' must add: depends_on formula: 'lzma'"
end end

View File

@ -10,9 +10,7 @@ module Hbc
end end
def extract def extract
unxz = Hbc.homebrew_prefix.join("bin", "unxz") if (unxz = which("unxz")).nil?
unless unxz.exist?
raise CaskError, "Expected to find unxz executable. Cask '#{@cask}' must add: depends_on formula: 'xz'" raise CaskError, "Expected to find unxz executable. Cask '#{@cask}' must add: depends_on formula: 'xz'"
end end

View File

@ -42,7 +42,7 @@ describe Hbc::Installer do
end end
it "works with cab-based Casks" do 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") asset = Hbc.load("container-cab")
empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil) empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil)
asset.stubs(:depends_on).returns(empty) asset.stubs(:depends_on).returns(empty)
@ -72,7 +72,7 @@ describe Hbc::Installer do
end end
it "works with 7z-based Casks" do 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") asset = Hbc.load("container-7z")
empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil) empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil)
asset.stubs(:depends_on).returns(empty) asset.stubs(:depends_on).returns(empty)
@ -101,7 +101,7 @@ describe Hbc::Installer do
end end
it "works with Stuffit-based Casks" do 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") asset = Hbc.load("container-sit")
empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil) empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil)
asset.stubs(:depends_on).returns(empty) asset.stubs(:depends_on).returns(empty)
@ -117,7 +117,7 @@ describe Hbc::Installer do
end end
it "works with RAR-based Casks" do 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") asset = Hbc.load("container-rar")
empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil) empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil)
asset.stubs(:depends_on).returns(empty) asset.stubs(:depends_on).returns(empty)
@ -159,7 +159,7 @@ describe Hbc::Installer do
end end
it "works with pure xz-based Casks" do 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") asset = Hbc.load("container-xz")
empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil) empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil)
asset.stubs(:depends_on).returns(empty) asset.stubs(:depends_on).returns(empty)
@ -175,7 +175,7 @@ describe Hbc::Installer do
end end
it "works with lzma-based Casks" do 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") asset = Hbc.load("container-lzma")
empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil) empty = stub(formula: [], cask: [], macos: nil, arch: nil, x11: nil)
asset.stubs(:depends_on).returns(empty) asset.stubs(:depends_on).returns(empty)

View File

@ -151,17 +151,7 @@ require "support/never_sudo_system_command"
require "tmpdir" require "tmpdir"
require "tempfile" 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 # Common superclass for test Casks for when we need to filter them out
module Hbc module Hbc
class TestCask < Cask; end class TestCask < Cask; end
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")