brew/Library/Homebrew/cask/lib/hbc/container.rb
2018-06-18 16:23:35 +02:00

76 lines
1.9 KiB
Ruby

require "hbc/utils"
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/directory"
require "hbc/container/executable"
require "hbc/container/generic_unar"
require "hbc/container/gpg"
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/svn_repository"
require "hbc/container/tar"
require "hbc/container/ttf"
require "hbc/container/rar"
require "hbc/container/xar"
require "hbc/container/xz"
require "hbc/container/zip"
module Hbc
class Container
def self.autodetect_containers
[
Pkg,
Ttf,
Otf,
Air,
Cab,
Dmg,
SevenZip,
Sit,
Rar,
Zip,
Xar, # need to be before tar as tar can also list xar
Tar, # or compressed tar (bzip2/gzip/lzma/xz)
Bzip2, # pure bzip2
Gzip, # pure gzip
Lzma, # pure lzma
Xz, # pure xz
Gpg, # GnuPG signed data
Executable,
SvnRepository,
]
# 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 = 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
const_get(type.to_s.split("_").map(&:capitalize).join)
rescue NameError
nil
end
end
end
end