Merge pull request #2410 from reitermarkus/container-exectuable

Add `Container::Executable`.
This commit is contained in:
Vítor Galvão 2017-03-30 15:40:20 +01:00 committed by GitHub
commit 0882e9ddbc
2 changed files with 20 additions and 0 deletions

View File

@ -4,6 +4,7 @@ require "hbc/container/bzip2"
require "hbc/container/cab"
require "hbc/container/criteria"
require "hbc/container/dmg"
require "hbc/container/executable"
require "hbc/container/generic_unar"
require "hbc/container/gzip"
require "hbc/container/lzma"
@ -39,6 +40,7 @@ module Hbc
Gzip, # pure gzip
Lzma, # pure lzma
Xz, # pure xz
Executable,
]
# for explicit use only (never autodetected):
# Hbc::Container::Naked

View File

@ -0,0 +1,18 @@
require "hbc/container/naked"
require "vendor/macho/macho"
module Hbc
class Container
class Executable < Naked
def self.me?(criteria)
return true if criteria.magic_number(/^#!\s*\S+/)
begin
MachO.open(criteria.path).header.executable?
rescue MachO::MagicError
false
end
end
end
end
end