Module: Blockbuster::Packager

Included in:
Delta, Master
Defined in:
lib/blockbuster/concerns/packager.rb

Overview

pure ruby implmentation of tar gzip and diff

Instance Method Summary collapse

Instance Method Details

#create_cassette_fileObject



4
5
6
7
8
9
10
11
12
13
14
15
# File 'lib/blockbuster/concerns/packager.rb', line 4

def create_cassette_file
  FileUtils.rm(file_path) if File.exist?(file_path)
  File.open(target_path, 'wb') do |file|
    Zlib::GzipWriter.wrap(file) do |gz|
      Gem::Package::TarWriter.new(gz) do |tar|
        configuration.cassette_files.each do |cass|
          tar_file(tar, cass)
        end
      end
    end
  end
end

#tar_file(tar, file) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/blockbuster/concerns/packager.rb', line 17

def tar_file(tar, file)
  rel_path = configuration.key_from_path(file)

  if configuration.deltas_enabled?
    return unless @comparator.edited?(rel_path)
  end

  write_to_disk(tar, file)
end

#write_to_disk(tar, file) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/blockbuster/concerns/packager.rb', line 27

def write_to_disk(tar, file)
  mode     = File.stat(file).mode
  rel_path = configuration.key_from_path(file)

  if File.directory?(file)
    tar.mkdir rel_path, mode
  else
    tar.add_file_simple rel_path, mode, File.size(file) do |io|
      File.open(file, 'rb') { |f| io.write f.read }
    end
  end
end