Class: MultiCompress::DBDeployment::DeploymentBundle::DeterministicTarWriter

Inherits:
Gem::Package::TarWriter
  • Object
show all
Defined in:
lib/multi_compress/db_deployment.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(io, epoch) ⇒ DeterministicTarWriter

Returns a new instance of DeterministicTarWriter.



662
663
664
665
# File 'lib/multi_compress/db_deployment.rb', line 662

def initialize(io, epoch)
  @archive_epoch = epoch
  super(io)
end

Class Method Details

.new(io, epoch) ⇒ Object



648
649
650
651
652
653
654
655
656
657
658
659
660
# File 'lib/multi_compress/db_deployment.rb', line 648

def self.new(io, epoch)
  writer = allocate
  writer.send(:initialize, io, epoch)
  return writer unless block_given?

  begin
    yield writer
  ensure
    writer.close
  end

  nil
end

Instance Method Details

#add_file_simple(name, mode, size) {|output| ... } ⇒ Object

Yields:

  • (output)


667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
# File 'lib/multi_compress/db_deployment.rb', line 667

def add_file_simple(name, mode, size)
  check_closed

  name, prefix = split_name(name)
  header = Gem::Package::TarHeader.new(
    name: name,
    mode: mode,
    size: size,
    prefix: prefix,
    mtime: @archive_epoch
  ).to_s
  @io.write(header)
  output = BoundedStream.new(@io, size)
  yield output if block_given?
  @io.write("\0" * (size - output.written))
  @io.write("\0" * ((512 - (size % 512)) % 512))
  self
end

#mkdir(name, mode) ⇒ Object



686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
# File 'lib/multi_compress/db_deployment.rb', line 686

def mkdir(name, mode)
  check_closed

  name, prefix = split_name(name)
  header = Gem::Package::TarHeader.new(
    name: name,
    mode: mode,
    typeflag: "5",
    size: 0,
    prefix: prefix,
    mtime: @archive_epoch
  )
  @io.write(header)
  self
end