rubyzip 3.0.0.alpha → 3.0.0.rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Changelog.md +53 -0
- data/LICENSE.md +24 -0
- data/README.md +37 -12
- data/Rakefile +1 -1
- data/lib/zip/central_directory.rb +10 -10
- data/lib/zip/constants.rb +4 -0
- data/lib/zip/crypto/decrypted_io.rb +1 -1
- data/lib/zip/crypto/null_encryption.rb +1 -1
- data/lib/zip/crypto/traditional_encryption.rb +3 -3
- data/lib/zip/dos_time.rb +11 -1
- data/lib/zip/entry.rb +97 -59
- data/lib/zip/entry_set.rb +2 -2
- data/lib/zip/errors.rb +24 -3
- data/lib/zip/extra_field/generic.rb +3 -3
- data/lib/zip/extra_field/ntfs.rb +2 -2
- data/lib/zip/extra_field.rb +2 -2
- data/lib/zip/file.rb +38 -15
- data/lib/zip/file_split.rb +1 -7
- data/lib/zip/filesystem/dir.rb +2 -2
- data/lib/zip/filesystem/zip_file_name_mapper.rb +1 -1
- data/lib/zip/filesystem.rb +1 -1
- data/lib/zip/input_stream.rb +13 -18
- data/lib/zip/ioextras/abstract_input_stream.rb +2 -2
- data/lib/zip/ioextras.rb +1 -1
- data/lib/zip/output_stream.rb +8 -8
- data/lib/zip/version.rb +1 -1
- data/lib/zip.rb +4 -3
- data/rubyzip.gemspec +16 -15
- data/samples/example_filesystem.rb +1 -1
- data/samples/write_simple.rb +1 -1
- metadata +23 -21
data/lib/zip/file.rb
CHANGED
@@ -52,8 +52,9 @@ module Zip
|
|
52
52
|
extend Forwardable
|
53
53
|
extend FileSplit
|
54
54
|
|
55
|
-
IO_METHODS = [:tell, :seek, :read, :eof, :close].freeze
|
55
|
+
IO_METHODS = [:tell, :seek, :read, :eof, :close].freeze # :nodoc:
|
56
56
|
|
57
|
+
# The name of this zip archive.
|
57
58
|
attr_reader :name
|
58
59
|
|
59
60
|
# default -> false.
|
@@ -69,28 +70,40 @@ module Zip
|
|
69
70
|
|
70
71
|
# Opens a zip archive. Pass create: true to create
|
71
72
|
# a new archive if it doesn't exist already.
|
72
|
-
def initialize(path_or_io, create: false, buffer: false,
|
73
|
+
def initialize(path_or_io, create: false, buffer: false,
|
74
|
+
restore_ownership: DEFAULT_RESTORE_OPTIONS[:restore_ownership],
|
75
|
+
restore_permissions: DEFAULT_RESTORE_OPTIONS[:restore_permissions],
|
76
|
+
restore_times: DEFAULT_RESTORE_OPTIONS[:restore_times],
|
77
|
+
compression_level: ::Zip.default_compression)
|
73
78
|
super()
|
74
|
-
|
75
|
-
.merge(compression_level: ::Zip.default_compression)
|
76
|
-
.merge(options)
|
79
|
+
|
77
80
|
@name = path_or_io.respond_to?(:path) ? path_or_io.path : path_or_io
|
78
81
|
@create = create ? true : false # allow any truthy value to mean true
|
79
82
|
|
80
83
|
initialize_cdir(path_or_io, buffer: buffer)
|
81
84
|
|
82
|
-
@restore_ownership =
|
83
|
-
@restore_permissions =
|
84
|
-
@restore_times =
|
85
|
-
@compression_level =
|
85
|
+
@restore_ownership = restore_ownership
|
86
|
+
@restore_permissions = restore_permissions
|
87
|
+
@restore_times = restore_times
|
88
|
+
@compression_level = compression_level
|
86
89
|
end
|
87
90
|
|
88
91
|
class << self
|
89
92
|
# Similar to ::new. If a block is passed the Zip::File object is passed
|
90
93
|
# to the block and is automatically closed afterwards, just as with
|
91
94
|
# ruby's builtin File::open method.
|
92
|
-
def open(file_name, create: false,
|
93
|
-
|
95
|
+
def open(file_name, create: false,
|
96
|
+
restore_ownership: DEFAULT_RESTORE_OPTIONS[:restore_ownership],
|
97
|
+
restore_permissions: DEFAULT_RESTORE_OPTIONS[:restore_permissions],
|
98
|
+
restore_times: DEFAULT_RESTORE_OPTIONS[:restore_times],
|
99
|
+
compression_level: ::Zip.default_compression)
|
100
|
+
|
101
|
+
zf = ::Zip::File.new(file_name, create: create,
|
102
|
+
restore_ownership: restore_ownership,
|
103
|
+
restore_permissions: restore_permissions,
|
104
|
+
restore_times: restore_times,
|
105
|
+
compression_level: compression_level)
|
106
|
+
|
94
107
|
return zf unless block_given?
|
95
108
|
|
96
109
|
begin
|
@@ -104,7 +117,12 @@ module Zip
|
|
104
117
|
# stream, and outputs data to a buffer.
|
105
118
|
# (This can be used to extract data from a
|
106
119
|
# downloaded zip archive without first saving it to disk.)
|
107
|
-
def open_buffer(io = ::StringIO.new, create: false,
|
120
|
+
def open_buffer(io = ::StringIO.new, create: false,
|
121
|
+
restore_ownership: DEFAULT_RESTORE_OPTIONS[:restore_ownership],
|
122
|
+
restore_permissions: DEFAULT_RESTORE_OPTIONS[:restore_permissions],
|
123
|
+
restore_times: DEFAULT_RESTORE_OPTIONS[:restore_times],
|
124
|
+
compression_level: ::Zip.default_compression)
|
125
|
+
|
108
126
|
unless IO_METHODS.map { |method| io.respond_to?(method) }.all? || io.kind_of?(String)
|
109
127
|
raise 'Zip::File.open_buffer expects a String or IO-like argument' \
|
110
128
|
"(responds to #{IO_METHODS.join(', ')}). Found: #{io.class}"
|
@@ -112,7 +130,12 @@ module Zip
|
|
112
130
|
|
113
131
|
io = ::StringIO.new(io) if io.kind_of?(::String)
|
114
132
|
|
115
|
-
zf = ::Zip::File.new(io, create: create, buffer: true,
|
133
|
+
zf = ::Zip::File.new(io, create: create, buffer: true,
|
134
|
+
restore_ownership: restore_ownership,
|
135
|
+
restore_permissions: restore_permissions,
|
136
|
+
restore_times: restore_times,
|
137
|
+
compression_level: compression_level)
|
138
|
+
|
116
139
|
return zf unless block_given?
|
117
140
|
|
118
141
|
yield zf
|
@@ -278,7 +301,7 @@ module Zip
|
|
278
301
|
|
279
302
|
# Write buffer write changes to buffer and return
|
280
303
|
def write_buffer(io = ::StringIO.new)
|
281
|
-
return unless commit_required?
|
304
|
+
return io unless commit_required?
|
282
305
|
|
283
306
|
::Zip::OutputStream.write_buffer(io) do |zos|
|
284
307
|
@cdir.each { |e| e.write_to_zip_output_stream(zos) }
|
@@ -356,7 +379,7 @@ module Zip
|
|
356
379
|
# This zip is probably a non-empty StringIO.
|
357
380
|
@create = false
|
358
381
|
@cdir.read_from_stream(path_or_io)
|
359
|
-
elsif !@create && ::File.
|
382
|
+
elsif !@create && ::File.empty?(@name)
|
360
383
|
# A file exists, but it is empty, and we've said we're
|
361
384
|
# NOT creating a new zip.
|
362
385
|
raise Error, "File #{@name} has zero size. Did you mean to pass the create flag?"
|
data/lib/zip/file_split.rb
CHANGED
@@ -7,13 +7,7 @@ module Zip
|
|
7
7
|
DATA_BUFFER_SIZE = 8192
|
8
8
|
|
9
9
|
def get_segment_size_for_split(segment_size)
|
10
|
-
|
11
|
-
MIN_SEGMENT_SIZE
|
12
|
-
elsif MAX_SEGMENT_SIZE < segment_size
|
13
|
-
MAX_SEGMENT_SIZE
|
14
|
-
else
|
15
|
-
segment_size
|
16
|
-
end
|
10
|
+
segment_size.clamp(MIN_SEGMENT_SIZE, MAX_SEGMENT_SIZE)
|
17
11
|
end
|
18
12
|
|
19
13
|
def get_partial_zip_file_name(zip_file_name, partial_zip_file_name)
|
data/lib/zip/filesystem/dir.rb
CHANGED
data/lib/zip/filesystem.rb
CHANGED
data/lib/zip/input_stream.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
##
|
3
4
|
module Zip
|
4
5
|
# InputStream is the basic class for reading zip entries in a
|
5
6
|
# zip file. It is possible to create a InputStream object directly,
|
@@ -39,9 +40,8 @@ module Zip
|
|
39
40
|
#
|
40
41
|
# java.util.zip.ZipInputStream is the original inspiration for this
|
41
42
|
# class.
|
42
|
-
|
43
43
|
class InputStream
|
44
|
-
CHUNK_SIZE = 32_768
|
44
|
+
CHUNK_SIZE = 32_768 # :nodoc:
|
45
45
|
|
46
46
|
include ::Zip::IOExtras::AbstractInputStream
|
47
47
|
|
@@ -60,6 +60,7 @@ module Zip
|
|
60
60
|
@complete_entry = nil
|
61
61
|
end
|
62
62
|
|
63
|
+
# Close this InputStream. All further IO will raise an IOError.
|
63
64
|
def close
|
64
65
|
@archive_io.close
|
65
66
|
end
|
@@ -78,7 +79,7 @@ module Zip
|
|
78
79
|
open_entry
|
79
80
|
end
|
80
81
|
|
81
|
-
# Rewinds the stream to the beginning of the current entry
|
82
|
+
# Rewinds the stream to the beginning of the current entry.
|
82
83
|
def rewind
|
83
84
|
return if @current_entry.nil?
|
84
85
|
|
@@ -114,16 +115,11 @@ module Zip
|
|
114
115
|
zio.close if zio
|
115
116
|
end
|
116
117
|
end
|
117
|
-
|
118
|
-
def open_buffer(filename_or_io, offset: 0)
|
119
|
-
warn 'open_buffer is deprecated!!! Use open instead!'
|
120
|
-
::Zip::InputStream.open(filename_or_io, offset: offset)
|
121
|
-
end
|
122
118
|
end
|
123
119
|
|
124
120
|
protected
|
125
121
|
|
126
|
-
def get_io(io_or_file, offset = 0)
|
122
|
+
def get_io(io_or_file, offset = 0) # :nodoc:
|
127
123
|
if io_or_file.respond_to?(:seek)
|
128
124
|
io = io_or_file.dup
|
129
125
|
io.seek(offset, ::IO::SEEK_SET)
|
@@ -135,7 +131,7 @@ module Zip
|
|
135
131
|
end
|
136
132
|
end
|
137
133
|
|
138
|
-
def open_entry
|
134
|
+
def open_entry # :nodoc:
|
139
135
|
@current_entry = ::Zip::Entry.read_local_entry(@archive_io)
|
140
136
|
return if @current_entry.nil?
|
141
137
|
|
@@ -144,8 +140,7 @@ module Zip
|
|
144
140
|
'A password is required to decode this zip file'
|
145
141
|
end
|
146
142
|
|
147
|
-
if @current_entry.incomplete? && @current_entry.compressed_size == 0
|
148
|
-
&& !@complete_entry
|
143
|
+
if @current_entry.incomplete? && @current_entry.compressed_size == 0 && !@complete_entry
|
149
144
|
raise StreamingError, @current_entry
|
150
145
|
end
|
151
146
|
|
@@ -155,19 +150,19 @@ module Zip
|
|
155
150
|
@current_entry
|
156
151
|
end
|
157
152
|
|
158
|
-
def get_decrypted_io
|
153
|
+
def get_decrypted_io # :nodoc:
|
159
154
|
header = @archive_io.read(@decrypter.header_bytesize)
|
160
155
|
@decrypter.reset!(header)
|
161
156
|
|
162
157
|
::Zip::DecryptedIo.new(@archive_io, @decrypter)
|
163
158
|
end
|
164
159
|
|
165
|
-
def get_decompressor
|
160
|
+
def get_decompressor # :nodoc:
|
166
161
|
return ::Zip::NullDecompressor if @current_entry.nil?
|
167
162
|
|
168
163
|
decompressed_size =
|
169
|
-
if @current_entry.incomplete? && @current_entry.crc == 0
|
170
|
-
|
164
|
+
if @current_entry.incomplete? && @current_entry.crc == 0 &&
|
165
|
+
@current_entry.size == 0 && @complete_entry
|
171
166
|
@complete_entry.size
|
172
167
|
else
|
173
168
|
@current_entry.size
|
@@ -183,11 +178,11 @@ module Zip
|
|
183
178
|
decompressor_class.new(@decrypted_io, decompressed_size)
|
184
179
|
end
|
185
180
|
|
186
|
-
def produce_input
|
181
|
+
def produce_input # :nodoc:
|
187
182
|
@decompressor.read(CHUNK_SIZE)
|
188
183
|
end
|
189
184
|
|
190
|
-
def input_finished?
|
185
|
+
def input_finished? # :nodoc:
|
191
186
|
@decompressor.eof
|
192
187
|
end
|
193
188
|
end
|
@@ -76,13 +76,13 @@ module Zip
|
|
76
76
|
a_sep_string = "#{$INPUT_RECORD_SEPARATOR}#{$INPUT_RECORD_SEPARATOR}" if a_sep_string.empty?
|
77
77
|
|
78
78
|
buffer_index = 0
|
79
|
-
over_limit =
|
79
|
+
over_limit = number_of_bytes && @output_buffer.bytesize >= number_of_bytes
|
80
80
|
while (match_index = @output_buffer.index(a_sep_string, buffer_index)).nil? && !over_limit
|
81
81
|
buffer_index = [buffer_index, @output_buffer.bytesize - a_sep_string.bytesize].max
|
82
82
|
return @output_buffer.empty? ? nil : flush if input_finished?
|
83
83
|
|
84
84
|
@output_buffer << produce_input
|
85
|
-
over_limit =
|
85
|
+
over_limit = number_of_bytes && @output_buffer.bytesize >= number_of_bytes
|
86
86
|
end
|
87
87
|
sep_index = [
|
88
88
|
match_index + a_sep_string.bytesize,
|
data/lib/zip/ioextras.rb
CHANGED
data/lib/zip/output_stream.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'forwardable'
|
4
4
|
|
5
|
+
##
|
5
6
|
module Zip
|
6
7
|
# ZipOutputStream is the basic class for writing zip files. It is
|
7
8
|
# possible to create a ZipOutputStream object directly, passing
|
@@ -20,7 +21,6 @@ module Zip
|
|
20
21
|
#
|
21
22
|
# java.util.zip.ZipOutputStream is the original inspiration for this
|
22
23
|
# class.
|
23
|
-
|
24
24
|
class OutputStream
|
25
25
|
extend Forwardable
|
26
26
|
include ::Zip::IOExtras::AbstractOutputStream
|
@@ -47,10 +47,10 @@ module Zip
|
|
47
47
|
@current_entry = nil
|
48
48
|
end
|
49
49
|
|
50
|
-
# Same as #initialize but if a block is passed the opened
|
51
|
-
# stream is passed to the block and closed when the block
|
52
|
-
# returns.
|
53
50
|
class << self
|
51
|
+
# Same as #initialize but if a block is passed the opened
|
52
|
+
# stream is passed to the block and closed when the block
|
53
|
+
# returns.
|
54
54
|
def open(file_name, encrypter: nil)
|
55
55
|
return new(file_name) unless block_given?
|
56
56
|
|
@@ -114,7 +114,7 @@ module Zip
|
|
114
114
|
@current_entry = new_entry
|
115
115
|
end
|
116
116
|
|
117
|
-
def copy_raw_entry(entry)
|
117
|
+
def copy_raw_entry(entry) # :nodoc:
|
118
118
|
entry = entry.dup
|
119
119
|
raise Error, 'zip stream is closed' if @closed
|
120
120
|
raise Error, 'entry is not a ZipEntry' unless entry.kind_of?(Entry)
|
@@ -139,8 +139,8 @@ module Zip
|
|
139
139
|
return unless @current_entry
|
140
140
|
|
141
141
|
finish
|
142
|
-
@current_entry.compressed_size = @output_stream.tell -
|
143
|
-
@current_entry.local_header_offset -
|
142
|
+
@current_entry.compressed_size = @output_stream.tell -
|
143
|
+
@current_entry.local_header_offset -
|
144
144
|
@current_entry.calculate_local_header_size
|
145
145
|
@current_entry.size = @compressor.size
|
146
146
|
@current_entry.crc = @compressor.crc
|
@@ -185,7 +185,7 @@ module Zip
|
|
185
185
|
|
186
186
|
protected
|
187
187
|
|
188
|
-
def finish
|
188
|
+
def finish # :nodoc:
|
189
189
|
@compressor.finish
|
190
190
|
end
|
191
191
|
|
data/lib/zip/version.rb
CHANGED
data/lib/zip.rb
CHANGED
@@ -57,15 +57,15 @@ module Zip
|
|
57
57
|
restore_ownership: false,
|
58
58
|
restore_permissions: true,
|
59
59
|
restore_times: true
|
60
|
-
}.freeze
|
60
|
+
}.freeze # :nodoc:
|
61
61
|
|
62
|
-
def reset!
|
62
|
+
def reset! # :nodoc:
|
63
63
|
@_ran_once = false
|
64
64
|
@unicode_names = false
|
65
65
|
@on_exists_proc = false
|
66
66
|
@continue_on_exists_proc = false
|
67
67
|
@sort_entries = false
|
68
|
-
@default_compression =
|
68
|
+
@default_compression = Zlib::DEFAULT_COMPRESSION
|
69
69
|
@write_zip64_support = true
|
70
70
|
@warn_invalid_date = true
|
71
71
|
@case_insensitive_match = false
|
@@ -73,6 +73,7 @@ module Zip
|
|
73
73
|
@validate_entry_sizes = true
|
74
74
|
end
|
75
75
|
|
76
|
+
# Set options for RubyZip in one block.
|
76
77
|
def setup
|
77
78
|
yield self unless @_ran_once
|
78
79
|
@_ran_once = true
|
data/rubyzip.gemspec
CHANGED
@@ -4,7 +4,7 @@ require_relative 'lib/zip/version'
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'rubyzip'
|
7
|
-
s.version =
|
7
|
+
s.version = Zip::VERSION
|
8
8
|
s.authors = ['Robert Haines', 'John Lees-Miller', 'Alexander Simonov']
|
9
9
|
s.email = [
|
10
10
|
'hainesr@gmail.com', 'jdleesmiller@gmail.com', 'alex@simonov.me'
|
@@ -13,26 +13,27 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.platform = Gem::Platform::RUBY
|
14
14
|
s.summary = 'rubyzip is a ruby module for reading and writing zip files'
|
15
15
|
s.files = Dir.glob('{samples,lib}/**/*.rb') +
|
16
|
-
%w[README.md Changelog.md Rakefile rubyzip.gemspec]
|
16
|
+
%w[LICENSE.md README.md Changelog.md Rakefile rubyzip.gemspec]
|
17
17
|
s.require_paths = ['lib']
|
18
18
|
s.license = 'BSD-2-Clause'
|
19
19
|
|
20
20
|
s.metadata = {
|
21
|
-
'bug_tracker_uri'
|
22
|
-
'changelog_uri'
|
23
|
-
'documentation_uri'
|
24
|
-
'source_code_uri'
|
25
|
-
'wiki_uri'
|
21
|
+
'bug_tracker_uri' => 'https://github.com/rubyzip/rubyzip/issues',
|
22
|
+
'changelog_uri' => "https://github.com/rubyzip/rubyzip/blob/v#{s.version}/Changelog.md",
|
23
|
+
'documentation_uri' => "https://www.rubydoc.info/gems/rubyzip/#{s.version}",
|
24
|
+
'source_code_uri' => "https://github.com/rubyzip/rubyzip/tree/v#{s.version}",
|
25
|
+
'wiki_uri' => 'https://github.com/rubyzip/rubyzip/wiki',
|
26
|
+
'rubygems_mfa_required' => 'true'
|
26
27
|
}
|
27
28
|
|
28
|
-
s.required_ruby_version = '>=
|
29
|
+
s.required_ruby_version = '>= 3.0'
|
29
30
|
|
30
|
-
s.add_development_dependency 'minitest', '~> 5.
|
31
|
-
s.add_development_dependency 'rake', '~>
|
32
|
-
s.add_development_dependency 'rdoc', '~> 6.
|
33
|
-
s.add_development_dependency 'rubocop', '~> 1.
|
34
|
-
s.add_development_dependency 'rubocop-performance', '~> 1.
|
35
|
-
s.add_development_dependency 'rubocop-rake', '~> 0.
|
36
|
-
s.add_development_dependency 'simplecov', '~> 0.
|
31
|
+
s.add_development_dependency 'minitest', '~> 5.25'
|
32
|
+
s.add_development_dependency 'rake', '~> 13.2'
|
33
|
+
s.add_development_dependency 'rdoc', '~> 6.11'
|
34
|
+
s.add_development_dependency 'rubocop', '~> 1.61.0'
|
35
|
+
s.add_development_dependency 'rubocop-performance', '~> 1.20.0'
|
36
|
+
s.add_development_dependency 'rubocop-rake', '~> 0.6.0'
|
37
|
+
s.add_development_dependency 'simplecov', '~> 0.22.0'
|
37
38
|
s.add_development_dependency 'simplecov-lcov', '~> 0.8'
|
38
39
|
end
|
@@ -7,7 +7,7 @@ require 'zip/filesystem'
|
|
7
7
|
|
8
8
|
EXAMPLE_ZIP = 'filesystem.zip'
|
9
9
|
|
10
|
-
|
10
|
+
FileUtils.rm_f(EXAMPLE_ZIP)
|
11
11
|
|
12
12
|
Zip::File.open(EXAMPLE_ZIP, create: true) do |zf|
|
13
13
|
zf.file.open('file1.txt', 'w') { |os| os.write 'first file1.txt' }
|
data/samples/write_simple.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyzip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.0.
|
4
|
+
version: 3.0.0.rc2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Haines
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2025-02-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: minitest
|
@@ -18,98 +18,98 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - "~>"
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '5.
|
21
|
+
version: '5.25'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - "~>"
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: '5.
|
28
|
+
version: '5.25'
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rake
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
33
|
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
35
|
+
version: '13.2'
|
36
36
|
type: :development
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
40
|
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
42
|
+
version: '13.2'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: rdoc
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
47
|
- - "~>"
|
48
48
|
- !ruby/object:Gem::Version
|
49
|
-
version: 6.
|
49
|
+
version: '6.11'
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
54
|
- - "~>"
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 6.
|
56
|
+
version: '6.11'
|
57
57
|
- !ruby/object:Gem::Dependency
|
58
58
|
name: rubocop
|
59
59
|
requirement: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: 1.
|
63
|
+
version: 1.61.0
|
64
64
|
type: :development
|
65
65
|
prerelease: false
|
66
66
|
version_requirements: !ruby/object:Gem::Requirement
|
67
67
|
requirements:
|
68
68
|
- - "~>"
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 1.
|
70
|
+
version: 1.61.0
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: rubocop-performance
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
75
|
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: 1.
|
77
|
+
version: 1.20.0
|
78
78
|
type: :development
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
82
|
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: 1.
|
84
|
+
version: 1.20.0
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: rubocop-rake
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
89
|
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: 0.
|
91
|
+
version: 0.6.0
|
92
92
|
type: :development
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
96
|
- - "~>"
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: 0.
|
98
|
+
version: 0.6.0
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: simplecov
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
102
102
|
requirements:
|
103
103
|
- - "~>"
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: 0.
|
105
|
+
version: 0.22.0
|
106
106
|
type: :development
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
110
|
- - "~>"
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: 0.
|
112
|
+
version: 0.22.0
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: simplecov-lcov
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,6 +134,7 @@ extensions: []
|
|
134
134
|
extra_rdoc_files: []
|
135
135
|
files:
|
136
136
|
- Changelog.md
|
137
|
+
- LICENSE.md
|
137
138
|
- README.md
|
138
139
|
- Rakefile
|
139
140
|
- lib/zip.rb
|
@@ -194,10 +195,11 @@ licenses:
|
|
194
195
|
- BSD-2-Clause
|
195
196
|
metadata:
|
196
197
|
bug_tracker_uri: https://github.com/rubyzip/rubyzip/issues
|
197
|
-
changelog_uri: https://github.com/rubyzip/rubyzip/blob/v3.0.0.
|
198
|
-
documentation_uri: https://www.rubydoc.info/gems/rubyzip/3.0.0.
|
199
|
-
source_code_uri: https://github.com/rubyzip/rubyzip/tree/v3.0.0.
|
198
|
+
changelog_uri: https://github.com/rubyzip/rubyzip/blob/v3.0.0.rc2/Changelog.md
|
199
|
+
documentation_uri: https://www.rubydoc.info/gems/rubyzip/3.0.0.rc2
|
200
|
+
source_code_uri: https://github.com/rubyzip/rubyzip/tree/v3.0.0.rc2
|
200
201
|
wiki_uri: https://github.com/rubyzip/rubyzip/wiki
|
202
|
+
rubygems_mfa_required: 'true'
|
201
203
|
post_install_message:
|
202
204
|
rdoc_options: []
|
203
205
|
require_paths:
|
@@ -206,14 +208,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
206
208
|
requirements:
|
207
209
|
- - ">="
|
208
210
|
- !ruby/object:Gem::Version
|
209
|
-
version: '
|
211
|
+
version: '3.0'
|
210
212
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
211
213
|
requirements:
|
212
214
|
- - ">"
|
213
215
|
- !ruby/object:Gem::Version
|
214
216
|
version: 1.3.1
|
215
217
|
requirements: []
|
216
|
-
rubygems_version: 3.
|
218
|
+
rubygems_version: 3.4.1
|
217
219
|
signing_key:
|
218
220
|
specification_version: 4
|
219
221
|
summary: rubyzip is a ruby module for reading and writing zip files
|