Module: MacBinary

Defined in:
lib/macbinary_unpack.rb,
lib/unpack_macbinary.rb,
lib/unpack_macbinary/version.rb

Defined Under Namespace

Classes: MacunpackException

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.add_resource_fork(data_fork, resource_fork) ⇒ Object



32
33
34
# File 'lib/macbinary_unpack.rb', line 32

def self.add_resource_fork data_fork, resource_fork
  FileUtils.cp resource_fork, "#{data_fork}/..namedfork/rsrc"
end

.unpack(macbinary, target_dir = Dir.pwd) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/macbinary_unpack.rb', line 8

def self.unpack macbinary, target_dir=Dir.pwd
  # macunpack always unpacks into the working directory
  cd target_dir do
    # macunpack will sanitize the source filename if it contains spaces
    sanitized = File.basename(macbinary.gsub(" ", "_"), ".bin")

    # -3 extracts data and resource forks even if they're empty
    if !system "macunpack", "-3", macbinary
      raise MacunpackException, "macunpack returned non-zero exit status"
    end

    output_files = {
      data: "#{target_dir}/#{sanitized}.data",
      info: "#{target_dir}/#{sanitized}.info",
      rsrc: "#{target_dir}/#{sanitized}.rsrc"
    }

    raise MacunpackException, "macunpack did not generate a data fork" unless File.exist? output_files[:data]
    raise MacunpackException, "macunpack did not generate a data fork" unless File.exist? output_files[:rsrc]

    return output_files
  end
end