Object
Allows writing of tar files
Creates a new TarWriter, yielding it if a block is given
# File lib/rubygems/package/tar_writer.rb, line 77 77: def self.new(io) 78: writer = super 79: 80: return writer unless block_given? 81: 82: begin 83: yield writer 84: ensure 85: writer.close 86: end 87: 88: nil 89: end
Creates a new TarWriter that will write to io
# File lib/rubygems/package/tar_writer.rb, line 94 94: def initialize(io) 95: @io = io 96: @closed = false 97: end
Adds file name with permissions mode, and yields an IO for writing the file to
# File lib/rubygems/package/tar_writer.rb, line 103 103: def add_file(name, mode) # :yields: io 104: check_closed 105: 106: raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos= 107: 108: name, prefix = split_name name 109: 110: init_pos = @io.pos 111: @io.write "\00"" * 512 # placeholder for the header 112: 113: yield RestrictedStream.new(@io) if block_given? 114: 115: size = @io.pos - init_pos - 512 116: 117: remainder = (512 - (size % 512)) % 512 118: @io.write "\00"" * remainder 119: 120: final_pos = @io.pos 121: @io.pos = init_pos 122: 123: header = Gem::Package::TarHeader.new :name => name, :mode => mode, 124: :size => size, :prefix => prefix 125: 126: @io.write header 127: @io.pos = final_pos 128: 129: self 130: 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 136 136: def add_file_simple(name, mode, size) # :yields: io 137: check_closed 138: 139: name, prefix = split_name name 140: 141: header = Gem::Package::TarHeader.new(:name => name, :mode => mode, 142: :size => size, :prefix => prefix).to_s 143: 144: @io.write header 145: os = BoundedStream.new @io, size 146: 147: yield os if block_given? 148: 149: min_padding = size - os.written 150: @io.write("\00"" * min_padding) 151: 152: remainder = (512 - (size % 512)) % 512 153: @io.write("\00"" * remainder) 154: 155: self 156: end
Raises IOError if the TarWriter is closed
# File lib/rubygems/package/tar_writer.rb, line 161 161: def check_closed 162: raise IOError, "closed #{self.class}" if closed? 163: end
Closes the TarWriter
# File lib/rubygems/package/tar_writer.rb, line 168 168: def close 169: check_closed 170: 171: @io.write "\00"" * 1024 172: flush 173: 174: @closed = true 175: end
Is the TarWriter closed?
# File lib/rubygems/package/tar_writer.rb, line 180 180: def closed? 181: @closed 182: end
Flushes the TarWriter’s IO
# File lib/rubygems/package/tar_writer.rb, line 187 187: def flush 188: check_closed 189: 190: @io.flush if @io.respond_to? :flush 191: end
Creates a new directory in the tar file name with mode
# File lib/rubygems/package/tar_writer.rb, line 196 196: def mkdir(name, mode) 197: check_closed 198: 199: name, prefix = split_name(name) 200: 201: header = Gem::Package::TarHeader.new :name => name, :mode => mode, 202: :typeflag => "5", :size => 0, 203: :prefix => prefix 204: 205: @io.write header 206: 207: self 208: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.