Allows writing of tar files
Creates a new TarWriter, yielding it if a block is given
# File lib/rubygems/package/tar_writer.rb, line 76 def self.new(io) writer = super return writer unless block_given? begin yield writer ensure writer.close end nil end
Creates a new TarWriter that will write to io
# File lib/rubygems/package/tar_writer.rb, line 93 def initialize(io) @io = io @closed = false end
Adds file name with permissions mode, and yields an IO for writing the file to
# File lib/rubygems/package/tar_writer.rb, line 102 def add_file(name, mode) # :yields: io check_closed raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos= name, prefix = split_name name init_pos = @io.pos @io.write "\00"" * 512 # placeholder for the header yield RestrictedStream.new(@io) if block_given? size = @io.pos - init_pos - 512 remainder = (512 - (size % 512)) % 512 @io.write "\00"" * remainder final_pos = @io.pos @io.pos = init_pos header = Gem::Package::TarHeader.new :name => name, :mode => mode, :size => size, :prefix => prefix @io.write header @io.pos = final_pos self end
Add file name with permissions mode size bytes long. Yields an IO to write the file to.
# File lib/rubygems/package/tar_writer.rb, line 135 def add_file_simple(name, mode, size) # :yields: io check_closed name, prefix = split_name name header = Gem::Package::TarHeader.new(:name => name, :mode => mode, :size => size, :prefix => prefix).to_s @io.write header os = BoundedStream.new @io, size yield os if block_given? min_padding = size - os.written @io.write("\00"" * min_padding) remainder = (512 - (size % 512)) % 512 @io.write("\00"" * remainder) self end
Raises IOError if the TarWriter is closed
# File lib/rubygems/package/tar_writer.rb, line 160 def check_closed raise IOError, "closed #{self.class}" if closed? end
Closes the TarWriter
# File lib/rubygems/package/tar_writer.rb, line 167 def close check_closed @io.write "\00"" * 1024 flush @closed = true end
Is the TarWriter closed?
# File lib/rubygems/package/tar_writer.rb, line 179 def closed? @closed end
Flushes the TarWriter’s IO
# File lib/rubygems/package/tar_writer.rb, line 186 def flush check_closed @io.flush if @io.respond_to? :flush end
Creates a new directory in the tar file name with mode
# File lib/rubygems/package/tar_writer.rb, line 195 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 @io.write header self end
Generated with the Darkfish Rdoc Generator 2.