| 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