Class | Gem::Package::TarWriter |
In: |
lib/rubygems/package/tar_writer.rb
|
Parent: | Object |
Allows writing of tar files
Adds file name with permissions mode, and yields an IO for writing the file to
# File lib/rubygems/package/tar_writer.rb, line 102 102: def add_file(name, mode) # :yields: io 103: check_closed 104: 105: raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos= 106: 107: name, prefix = split_name name 108: 109: init_pos = @io.pos 110: @io.write "\0" * 512 # placeholder for the header 111: 112: yield RestrictedStream.new(@io) if block_given? 113: 114: size = @io.pos - init_pos - 512 115: 116: remainder = (512 - (size % 512)) % 512 117: @io.write "\0" * remainder 118: 119: final_pos = @io.pos 120: @io.pos = init_pos 121: 122: header = Gem::Package::TarHeader.new :name => name, :mode => mode, 123: :size => size, :prefix => prefix 124: 125: @io.write header 126: @io.pos = final_pos 127: 128: self 129: 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 135: def add_file_simple(name, mode, size) # :yields: io 136: check_closed 137: 138: name, prefix = split_name name 139: 140: header = Gem::Package::TarHeader.new(:name => name, :mode => mode, 141: :size => size, :prefix => prefix).to_s 142: 143: @io.write header 144: os = BoundedStream.new @io, size 145: 146: yield os if block_given? 147: 148: min_padding = size - os.written 149: @io.write("\0" * min_padding) 150: 151: remainder = (512 - (size % 512)) % 512 152: @io.write("\0" * remainder) 153: 154: self 155: end
Creates a new directory in the tar file name with mode
# File lib/rubygems/package/tar_writer.rb, line 195 195: def mkdir(name, mode) 196: check_closed 197: 198: name, prefix = split_name(name) 199: 200: header = Gem::Package::TarHeader.new :name => name, :mode => mode, 201: :typeflag => "5", :size => 0, 202: :prefix => prefix 203: 204: @io.write header 205: 206: self 207: end