mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
76 lines
1.9 KiB
Ruby
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
|