rubyzip 2.4.1 → 3.5.0

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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +525 -0
  3. data/LICENSE.md +24 -0
  4. data/README.md +222 -43
  5. data/Rakefile +15 -13
  6. data/lib/rubyzip.rb +3 -0
  7. data/lib/zip/central_directory.rb +194 -125
  8. data/lib/zip/compressor.rb +3 -1
  9. data/lib/zip/constants.rb +29 -21
  10. data/lib/zip/crypto/aes_encryption.rb +120 -0
  11. data/lib/zip/crypto/decrypted_io.rb +27 -15
  12. data/lib/zip/crypto/encryption.rb +4 -2
  13. data/lib/zip/crypto/null_encryption.rb +5 -13
  14. data/lib/zip/crypto/traditional_encryption.rb +13 -7
  15. data/lib/zip/decompressor.rb +4 -3
  16. data/lib/zip/deflater.rb +12 -8
  17. data/lib/zip/dirtyable.rb +32 -0
  18. data/lib/zip/dos_time.rb +45 -5
  19. data/lib/zip/entry.rb +396 -269
  20. data/lib/zip/entry_set.rb +11 -9
  21. data/lib/zip/errors.rb +152 -16
  22. data/lib/zip/extra_field/aes.rb +50 -0
  23. data/lib/zip/extra_field/generic.rb +10 -11
  24. data/lib/zip/extra_field/ntfs.rb +6 -4
  25. data/lib/zip/extra_field/old_unix.rb +3 -1
  26. data/lib/zip/extra_field/universal_time.rb +3 -1
  27. data/lib/zip/extra_field/unix.rb +5 -3
  28. data/lib/zip/extra_field/unknown.rb +35 -0
  29. data/lib/zip/extra_field/zip64.rb +19 -5
  30. data/lib/zip/extra_field.rb +25 -23
  31. data/lib/zip/file.rb +174 -267
  32. data/lib/zip/file_split.rb +91 -0
  33. data/lib/zip/filesystem/dir.rb +86 -0
  34. data/lib/zip/filesystem/directory_iterator.rb +48 -0
  35. data/lib/zip/filesystem/file.rb +263 -0
  36. data/lib/zip/filesystem/file_stat.rb +110 -0
  37. data/lib/zip/filesystem/zip_file_name_mapper.rb +81 -0
  38. data/lib/zip/filesystem.rb +27 -596
  39. data/lib/zip/inflater.rb +13 -10
  40. data/lib/zip/input_stream.rb +99 -60
  41. data/lib/zip/ioextras/abstract_input_stream.rb +146 -58
  42. data/lib/zip/ioextras/abstract_output_stream.rb +13 -3
  43. data/lib/zip/ioextras.rb +7 -7
  44. data/lib/zip/null_compressor.rb +3 -1
  45. data/lib/zip/null_decompressor.rb +6 -3
  46. data/lib/zip/null_input_stream.rb +3 -1
  47. data/lib/zip/output_stream.rb +60 -57
  48. data/lib/zip/pass_thru_compressor.rb +3 -1
  49. data/lib/zip/pass_thru_decompressor.rb +12 -9
  50. data/lib/zip/streamable_directory.rb +3 -1
  51. data/lib/zip/streamable_stream.rb +4 -1
  52. data/lib/zip/version.rb +4 -1
  53. data/lib/zip.rb +28 -23
  54. data/rubyzip.gemspec +39 -0
  55. data/samples/example.rb +8 -3
  56. data/samples/example_filesystem.rb +3 -2
  57. data/samples/example_recursive.rb +3 -1
  58. data/samples/gtk_ruby_zip.rb +5 -3
  59. data/samples/qtzip.rb +7 -6
  60. data/samples/write_simple.rb +2 -1
  61. data/samples/zipfind.rb +1 -0
  62. metadata +87 -52
  63. data/TODO +0 -15
  64. data/lib/zip/extra_field/zip64_placeholder.rb +0 -15
metadata CHANGED
@@ -1,16 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyzip
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 3.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Haines
8
8
  - John Lees-Miller
9
9
  - Alexander Simonov
10
- autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2025-01-05 00:00:00.000000000 Z
12
+ date: 1980-01-02 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: minitest
@@ -18,63 +17,112 @@ dependencies:
18
17
  requirements:
19
18
  - - "~>"
20
19
  - !ruby/object:Gem::Version
21
- version: '5.4'
20
+ version: '5.25'
22
21
  type: :development
23
22
  prerelease: false
24
23
  version_requirements: !ruby/object:Gem::Requirement
25
24
  requirements:
26
25
  - - "~>"
27
26
  - !ruby/object:Gem::Version
28
- version: '5.4'
27
+ version: '5.25'
29
28
  - !ruby/object:Gem::Dependency
30
- name: pry
29
+ name: rake
31
30
  requirement: !ruby/object:Gem::Requirement
32
31
  requirements:
33
32
  - - "~>"
34
33
  - !ruby/object:Gem::Version
35
- version: '0.10'
34
+ version: '13.2'
36
35
  type: :development
37
36
  prerelease: false
38
37
  version_requirements: !ruby/object:Gem::Requirement
39
38
  requirements:
40
39
  - - "~>"
41
40
  - !ruby/object:Gem::Version
42
- version: '0.10'
41
+ version: '13.2'
43
42
  - !ruby/object:Gem::Dependency
44
- name: rake
43
+ name: rdoc
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '6.11'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '6.11'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rubocop
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 1.80.2
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 1.80.2
70
+ - !ruby/object:Gem::Dependency
71
+ name: rubocop-performance
45
72
  requirement: !ruby/object:Gem::Requirement
46
73
  requirements:
47
74
  - - "~>"
48
75
  - !ruby/object:Gem::Version
49
- version: '12.3'
50
- - - ">="
76
+ version: 1.26.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: 1.26.0
84
+ - !ruby/object:Gem::Dependency
85
+ name: rubocop-rake
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
51
89
  - !ruby/object:Gem::Version
52
- version: 12.3.3
90
+ version: 0.7.1
53
91
  type: :development
54
92
  prerelease: false
55
93
  version_requirements: !ruby/object:Gem::Requirement
56
94
  requirements:
57
95
  - - "~>"
58
96
  - !ruby/object:Gem::Version
59
- version: '12.3'
60
- - - ">="
97
+ version: 0.7.1
98
+ - !ruby/object:Gem::Dependency
99
+ name: simplecov
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
61
103
  - !ruby/object:Gem::Version
62
- version: 12.3.3
104
+ version: 0.22.0
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: 0.22.0
63
112
  - !ruby/object:Gem::Dependency
64
- name: rubocop
113
+ name: simplecov-lcov
65
114
  requirement: !ruby/object:Gem::Requirement
66
115
  requirements:
67
116
  - - "~>"
68
117
  - !ruby/object:Gem::Version
69
- version: '0.79'
118
+ version: '0.8'
70
119
  type: :development
71
120
  prerelease: false
72
121
  version_requirements: !ruby/object:Gem::Requirement
73
122
  requirements:
74
123
  - - "~>"
75
124
  - !ruby/object:Gem::Version
76
- version: '0.79'
77
- description:
125
+ version: '0.8'
78
126
  email:
79
127
  - hainesr@gmail.com
80
128
  - jdleesmiller@gmail.com
@@ -83,33 +131,44 @@ executables: []
83
131
  extensions: []
84
132
  extra_rdoc_files: []
85
133
  files:
134
+ - Changelog.md
135
+ - LICENSE.md
86
136
  - README.md
87
137
  - Rakefile
88
- - TODO
138
+ - lib/rubyzip.rb
89
139
  - lib/zip.rb
90
140
  - lib/zip/central_directory.rb
91
141
  - lib/zip/compressor.rb
92
142
  - lib/zip/constants.rb
143
+ - lib/zip/crypto/aes_encryption.rb
93
144
  - lib/zip/crypto/decrypted_io.rb
94
145
  - lib/zip/crypto/encryption.rb
95
146
  - lib/zip/crypto/null_encryption.rb
96
147
  - lib/zip/crypto/traditional_encryption.rb
97
148
  - lib/zip/decompressor.rb
98
149
  - lib/zip/deflater.rb
150
+ - lib/zip/dirtyable.rb
99
151
  - lib/zip/dos_time.rb
100
152
  - lib/zip/entry.rb
101
153
  - lib/zip/entry_set.rb
102
154
  - lib/zip/errors.rb
103
155
  - lib/zip/extra_field.rb
156
+ - lib/zip/extra_field/aes.rb
104
157
  - lib/zip/extra_field/generic.rb
105
158
  - lib/zip/extra_field/ntfs.rb
106
159
  - lib/zip/extra_field/old_unix.rb
107
160
  - lib/zip/extra_field/universal_time.rb
108
161
  - lib/zip/extra_field/unix.rb
162
+ - lib/zip/extra_field/unknown.rb
109
163
  - lib/zip/extra_field/zip64.rb
110
- - lib/zip/extra_field/zip64_placeholder.rb
111
164
  - lib/zip/file.rb
165
+ - lib/zip/file_split.rb
112
166
  - lib/zip/filesystem.rb
167
+ - lib/zip/filesystem/dir.rb
168
+ - lib/zip/filesystem/directory_iterator.rb
169
+ - lib/zip/filesystem/file.rb
170
+ - lib/zip/filesystem/file_stat.rb
171
+ - lib/zip/filesystem/zip_file_name_mapper.rb
113
172
  - lib/zip/inflater.rb
114
173
  - lib/zip/input_stream.rb
115
174
  - lib/zip/ioextras.rb
@@ -124,6 +183,7 @@ files:
124
183
  - lib/zip/streamable_directory.rb
125
184
  - lib/zip/streamable_stream.rb
126
185
  - lib/zip/version.rb
186
+ - rubyzip.gemspec
127
187
  - samples/example.rb
128
188
  - samples/example_filesystem.rb
129
189
  - samples/example_recursive.rb
@@ -133,38 +193,14 @@ files:
133
193
  - samples/zipfind.rb
134
194
  homepage: http://github.com/rubyzip/rubyzip
135
195
  licenses:
136
- - BSD 2-Clause
196
+ - BSD-2-Clause
137
197
  metadata:
138
198
  bug_tracker_uri: https://github.com/rubyzip/rubyzip/issues
139
- changelog_uri: https://github.com/rubyzip/rubyzip/blob/v2.4.1/Changelog.md
140
- documentation_uri: https://www.rubydoc.info/gems/rubyzip/2.4.1
141
- source_code_uri: https://github.com/rubyzip/rubyzip/tree/v2.4.1
199
+ changelog_uri: https://github.com/rubyzip/rubyzip/blob/v3.5.0/Changelog.md
200
+ documentation_uri: https://www.rubydoc.info/gems/rubyzip/3.5.0
201
+ source_code_uri: https://github.com/rubyzip/rubyzip/tree/v3.5.0
142
202
  wiki_uri: https://github.com/rubyzip/rubyzip/wiki
143
203
  rubygems_mfa_required: 'true'
144
- post_install_message: |
145
- RubyZip 3.0 is coming!
146
- **********************
147
-
148
- The public API of some Rubyzip classes has been modernized to use named
149
- parameters for optional arguments. Please check your usage of the
150
- following classes:
151
- * `Zip::File`
152
- * `Zip::Entry`
153
- * `Zip::InputStream`
154
- * `Zip::OutputStream`
155
- * `Zip::DOSTime`
156
-
157
- Run your test suite with the `RUBYZIP_V3_API_WARN` environment
158
- variable set to see warnings about usage of the old API. This will
159
- help you to identify any changes that you need to make to your code.
160
- See https://github.com/rubyzip/rubyzip/wiki/Updating-to-version-3.x for
161
- more information.
162
-
163
- Please ensure that your Gemfiles and .gemspecs are suitably restrictive
164
- to avoid an unexpected breakage when 3.0 is released (e.g. ~> 2.3.0).
165
- See https://github.com/rubyzip/rubyzip for details. The Changelog also
166
- lists other enhancements and bugfixes that have been implemented since
167
- version 2.3.0.
168
204
  rdoc_options: []
169
205
  require_paths:
170
206
  - lib
@@ -172,15 +208,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
208
  requirements:
173
209
  - - ">="
174
210
  - !ruby/object:Gem::Version
175
- version: '2.4'
211
+ version: '3.0'
176
212
  required_rubygems_version: !ruby/object:Gem::Requirement
177
213
  requirements:
178
214
  - - ">="
179
215
  - !ruby/object:Gem::Version
180
216
  version: '0'
181
217
  requirements: []
182
- rubygems_version: 3.1.6
183
- signing_key:
218
+ rubygems_version: 4.0.17
184
219
  specification_version: 4
185
220
  summary: rubyzip is a ruby module for reading and writing zip files
186
221
  test_files: []
data/TODO DELETED
@@ -1,15 +0,0 @@
1
-
2
- * ZipInputStream: Support zip-files with trailing data descriptors
3
- * Adjust rdoc stylesheet to advertise inherited methods if possible
4
- * Suggestion: Add ZipFile/ZipInputStream example that demonstrates extracting all entries.
5
- * Suggestion: ZipFile#extract destination should default to "."
6
- * Suggestion: ZipEntry should have extract(), get_input_stream() methods etc
7
- * (is buffering used anywhere with write?)
8
- * Inflater.sysread should pass the buffer to produce_input.
9
- * Implement ZipFsDir.glob
10
- * ZipFile.checkIntegrity method
11
- * non-MSDOS permission attributes
12
- ** See mail from Ned Konz to ruby-talk subj. "Re: SV: [ANN] Archive 0.2"
13
- * Packager version, required unpacker version in zip headers
14
- ** See mail from Ned Konz to ruby-talk subj. "Re: SV: [ANN] Archive 0.2"
15
- * implement storing attributes and ownership information
@@ -1,15 +0,0 @@
1
- module Zip
2
- # placeholder to reserve space for a Zip64 extra information record, for the
3
- # local file header only, that we won't know if we'll need until after
4
- # we write the file data
5
- class ExtraField::Zip64Placeholder < ExtraField::Generic
6
- HEADER_ID = ['9999'].pack('H*') # this ID is used by other libraries such as .NET's Ionic.zip
7
- register_map
8
-
9
- def initialize(_binstr = nil); end
10
-
11
- def pack_for_local
12
- "\x00" * 16
13
- end
14
- end
15
- end