instance method
Gem::Package::TarWriter#add_file
add_file(name, mode, mtime = nil) { |io| ... }
lib/rubygems/package/tar_writer.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.0.0/lib/rubygems/package/tar_writer.rb, line 102
def add_file(name, mode, mtime = nil) # :yields: io
check_closed
name, prefix = split_name name
init_pos = @io.pos
@io.write Gem::Package::TarHeader::EMPTY_HEADER # placeholder for the header
yield RestrictedStream.new(@io) if block_given?
size = @io.pos - init_pos - 512
remainder = (512 - (size % 512)) % 512
@io.write "\0" * remainder
final_pos = @io.pos
@io.pos = init_pos
header = Gem::Package::TarHeader.new name: name, mode: mode,
size: size, prefix: prefix,
mtime: mtime || Gem.source_date_epoch
@io.write header
@io.pos = final_pos
self
end
Adds file name with permissions mode and mtime mtime (sets Gem.source_date_epoch if not specified), and yields an IO for writing the file to