Module: LibGems::Package
- Included in:
- TarReader
- Defined in:
- lib/libgems/package.rb
Defined Under Namespace
Classes: BadCheckSum, ClosedIO, Error, FormatError, NonSeekableIO, TooLongFileName
Class Method Summary
collapse
Class Method Details
.open(io, mode = "r", signer = nil, &block) ⇒ Object
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/libgems/package.rb', line 51
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/libgems/package.rb', line 62
def self.pack(src, destname, signer = nil)
TarOutput.open(destname, signer) do |outp|
dir_class.chdir(src) do
outp.metadata = (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
|