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 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 "\0" * 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 "\0" * 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("\0" * min_padding) 151: 152: remainder = (512 - (size % 512)) % 512 153: @io.write("\0" * remainder) 154: 155: self 156: 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