Module | Gem::Package |
In: |
lib/rubygems/package.rb
|
FIX: zenspider said: does it really take an IO? passed to a method called open?!? that seems stupid.
# File lib/rubygems/package.rb, line 36 36: def self.open(io, mode = "r", signer = nil, &block) 37: tar_type = case mode 38: when 'r' then TarInput 39: when 'w' then TarOutput 40: else 41: raise "Unknown Package open mode" 42: end 43: 44: tar_type.open(io, signer, &block) 45: end
# File lib/rubygems/package.rb, line 47 47: def self.pack(src, destname, signer = nil) 48: TarOutput.open(destname, signer) do |outp| 49: dir_class.chdir(src) do 50: outp.metadata = (file_class.read("RPA/metadata") rescue nil) 51: find_class.find('.') do |entry| 52: case 53: when file_class.file?(entry) 54: entry.sub!(%r{\./}, "") 55: next if entry =~ /\ARPA\// 56: stat = File.stat(entry) 57: outp.add_file_simple(entry, stat.mode, stat.size) do |os| 58: file_class.open(entry, "rb") do |f| 59: os.write(f.read(4096)) until f.eof? 60: end 61: end 62: when file_class.dir?(entry) 63: entry.sub!(%r{\./}, "") 64: next if entry == "RPA" 65: outp.mkdir(entry, file_class.stat(entry).mode) 66: else 67: raise "Don't know how to pack this yet!" 68: end 69: end 70: end 71: end 72: end