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

71 lines
1.8 KiB
Ruby
Raw Normal View History

2016-08-18 22:11:42 +03:00
require "hbc/container/base"
require "hbc/container/air"
require "hbc/container/bzip2"
require "hbc/container/cab"
require "hbc/container/criteria"
require "hbc/container/dmg"
2017-03-28 15:34:34 +02:00
require "hbc/container/executable"
2016-08-18 22:11:42 +03:00
require "hbc/container/generic_unar"
require "hbc/container/gpg"
2016-08-18 22:11:42 +03:00
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/xz"
require "hbc/container/zip"
2016-09-24 13:52:43 +02:00
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
2017-03-28 15:34:34 +02:00
Executable,
2016-09-24 13:52:43 +02:00
]
# for explicit use only (never autodetected):
# Hbc::Container::Naked
# Hbc::Container::GenericUnar
end
2016-08-18 22:11:42 +03:00
2016-09-24 13:52:43 +02:00
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
2016-08-18 22:11:42 +03:00
end
2016-09-24 13:52:43 +02:00
def self.from_type(type)
odebug "Determining which containers to use based on 'container :type'"
begin
2016-10-14 20:55:09 +02:00
const_get(type.to_s.split("_").map(&:capitalize).join)
2016-09-24 13:52:43 +02:00
rescue NameError
2017-04-21 13:43:13 +02:00
nil
2016-09-24 13:52:43 +02:00
end
2016-08-18 22:11:42 +03:00
end
end
end