brew/Library/Homebrew/cask/lib/hbc/container.rb

69 lines
2.0 KiB
Ruby
Raw Normal View History

2016-08-18 22:11:42 +03:00
class Hbc::Container; end
require "hbc/container/base"
require "hbc/container/air"
require "hbc/container/bzip2"
require "hbc/container/cab"
require "hbc/container/criteria"
require "hbc/container/dmg"
require "hbc/container/generic_unar"
require "hbc/container/gzip"
require "hbc/container/lzma"
require "hbc/container/naked"
require "hbc/container/otf"
require "hbc/container/pkg"
require "hbc/container/seven_zip"
require "hbc/container/sit"
require "hbc/container/tar"
require "hbc/container/ttf"
require "hbc/container/rar"
require "hbc/container/xar"
require "hbc/container/xip"
require "hbc/container/xz"
require "hbc/container/zip"
class Hbc::Container
def self.autodetect_containers
[
Hbc::Container::Pkg,
Hbc::Container::Ttf,
Hbc::Container::Otf,
Hbc::Container::Air,
Hbc::Container::Cab,
Hbc::Container::Dmg,
Hbc::Container::SevenZip,
Hbc::Container::Sit,
Hbc::Container::Rar,
Hbc::Container::Zip,
Hbc::Container::Xip, # needs to be before xar as this is a cpio inside a gzip inside a xar
Hbc::Container::Xar, # need to be before tar as tar can also list xar
Hbc::Container::Tar, # or compressed tar (bzip2/gzip/lzma/xz)
Hbc::Container::Bzip2, # pure bzip2
Hbc::Container::Gzip, # pure gzip
Hbc::Container::Lzma, # pure lzma
Hbc::Container::Xz, # pure xz
]
# for explicit use only (never autodetected):
# Hbc::Container::Naked
# Hbc::Container::GenericUnar
end
def self.for_path(path, command)
odebug "Determining which containers to use based on filetype"
criteria = Hbc::Container::Criteria.new(path, command)
autodetect_containers.find do |c|
odebug "Checking container class #{c}"
c.me?(criteria)
end
end
def self.from_type(type)
odebug "Determining which containers to use based on 'container :type'"
begin
Hbc::Container.const_get(type.to_s.split("_").map(&:capitalize).join)
rescue NameError
false
end
end
end