rubyzip 3.0.0.alpha → 3.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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, **options)
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
- options = DEFAULT_RESTORE_OPTIONS
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 = options[:restore_ownership]
83
- @restore_permissions = options[:restore_permissions]
84
- @restore_times = options[:restore_times]
85
- @compression_level = options[: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, **options)
93
- zf = ::Zip::File.new(file_name, create: create, **options)
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, **options)
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, **options)
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.zero?(@name)
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?"
@@ -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
- if MIN_SEGMENT_SIZE > segment_size
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)
@@ -45,8 +45,8 @@ module Zip
45
45
  entries
46
46
  end
47
47
 
48
- def glob(*args, &block)
49
- @mapped_zip.glob(*args, &block)
48
+ def glob(...)
49
+ @mapped_zip.glob(...)
50
50
  end
51
51
 
52
52
  def foreach(directory_name)
@@ -74,7 +74,7 @@ module Zip
74
74
  private
75
75
 
76
76
  def expand_to_entry(path)
77
- expand_path(path)[1..-1]
77
+ expand_path(path)[1..]
78
78
  end
79
79
  end
80
80
  end
@@ -64,7 +64,7 @@ module Zip
64
64
  end
65
65
  end
66
66
 
67
- class File
67
+ class File # :nodoc:
68
68
  include FileSystem
69
69
  end
70
70
  end
@@ -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
- && @current_entry.size == 0 && @complete_entry
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 = (number_of_bytes && @output_buffer.bytesize >= number_of_bytes)
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 = (number_of_bytes && @output_buffer.bytesize >= number_of_bytes)
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
@@ -12,7 +12,7 @@ module Zip
12
12
  def copy_stream_n(ostream, istream, nbytes)
13
13
  toread = nbytes
14
14
  while toread > 0 && !istream.eof?
15
- tr = toread > CHUNK_SIZE ? CHUNK_SIZE : toread
15
+ tr = [toread, CHUNK_SIZE].min
16
16
  ostream.write(istream.read(tr, +''))
17
17
  toread -= tr
18
18
  end
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Zip
4
- VERSION = '3.0.0.alpha'
4
+ VERSION = '3.0.0.rc1' # :nodoc:
5
5
  end
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 = ::Zlib::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 = ::Zip::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' => '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'
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 = '>= 2.5'
29
+ s.required_ruby_version = '>= 3.0'
29
30
 
30
- s.add_development_dependency 'minitest', '~> 5.4'
31
- s.add_development_dependency 'rake', '~> 12.3.3'
32
- s.add_development_dependency 'rdoc', '~> 6.4.0'
33
- s.add_development_dependency 'rubocop', '~> 1.12.0'
34
- s.add_development_dependency 'rubocop-performance', '~> 1.10.0'
35
- s.add_development_dependency 'rubocop-rake', '~> 0.5.0'
36
- s.add_development_dependency 'simplecov', '~> 0.18.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
- File.delete(EXAMPLE_ZIP) if File.exist?(EXAMPLE_ZIP)
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' }
@@ -5,7 +5,7 @@ $LOAD_PATH << '../lib'
5
5
 
6
6
  require 'zip'
7
7
 
8
- ::Zip::OutputStream.open('simple.zip') do |zos|
8
+ Zip::OutputStream.open('simple.zip') do |zos|
9
9
  zos.put_next_entry 'entry.txt'
10
10
  zos.puts 'Hello world'
11
11
  end
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.alpha
4
+ version: 3.0.0.rc1
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: 2023-04-16 00:00:00.000000000 Z
13
+ date: 2025-01-26 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.4'
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.4'
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: 12.3.3
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: 12.3.3
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.4.0
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.4.0
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.12.0
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.12.0
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.10.0
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.10.0
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.5.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.5.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.18.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.18.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.alpha/Changelog.md
198
- documentation_uri: https://www.rubydoc.info/gems/rubyzip/3.0.0.alpha
199
- source_code_uri: https://github.com/rubyzip/rubyzip/tree/v3.0.0.alpha
198
+ changelog_uri: https://github.com/rubyzip/rubyzip/blob/v3.0.0.rc1/Changelog.md
199
+ documentation_uri: https://www.rubydoc.info/gems/rubyzip/3.0.0.rc1
200
+ source_code_uri: https://github.com/rubyzip/rubyzip/tree/v3.0.0.rc1
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: '2.5'
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.3.23
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