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