rubyzip 2.3.2 → 3.6.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 +538 -0
  3. data/LICENSE.md +24 -0
  4. data/README.md +235 -48
  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 +123 -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 +72 -7
  19. data/lib/zip/entry.rb +407 -241
  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 +5 -3
  26. data/lib/zip/extra_field/universal_time.rb +3 -1
  27. data/lib/zip/extra_field/unix.rb +7 -5
  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 +185 -226
  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 -47
  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 +11 -8
  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 +66 -50
  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 -4
  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 +82 -49
  63. data/TODO +0 -15
  64. data/lib/zip/extra_field/zip64_placeholder.rb +0 -15
metadata CHANGED
@@ -1,125 +1,174 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubyzip
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.2
4
+ version: 3.6.0
5
5
  platform: ruby
6
6
  authors:
7
+ - Robert Haines
8
+ - John Lees-Miller
7
9
  - Alexander Simonov
8
- autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2021-07-05 00:00:00.000000000 Z
12
+ date: 1980-01-02 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: coveralls
15
+ name: minitest
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: '0.7'
20
+ version: '5.25'
20
21
  type: :development
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - "~>"
25
26
  - !ruby/object:Gem::Version
26
- version: '0.7'
27
+ version: '5.25'
27
28
  - !ruby/object:Gem::Dependency
28
- name: minitest
29
+ name: rake
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - "~>"
32
33
  - !ruby/object:Gem::Version
33
- version: '5.4'
34
+ version: '13.2'
34
35
  type: :development
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
39
  - - "~>"
39
40
  - !ruby/object:Gem::Version
40
- version: '5.4'
41
+ version: '13.2'
41
42
  - !ruby/object:Gem::Dependency
42
- name: pry
43
+ name: rdoc
43
44
  requirement: !ruby/object:Gem::Requirement
44
45
  requirements:
45
46
  - - "~>"
46
47
  - !ruby/object:Gem::Version
47
- version: '0.10'
48
+ version: '6.11'
48
49
  type: :development
49
50
  prerelease: false
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
53
  - - "~>"
53
54
  - !ruby/object:Gem::Version
54
- version: '0.10'
55
+ version: '6.11'
55
56
  - !ruby/object:Gem::Dependency
56
- name: rake
57
+ name: rubocop
57
58
  requirement: !ruby/object:Gem::Requirement
58
59
  requirements:
59
60
  - - "~>"
60
61
  - !ruby/object:Gem::Version
61
- version: '12.3'
62
- - - ">="
62
+ version: 1.80.2
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
63
68
  - !ruby/object:Gem::Version
64
- version: 12.3.3
69
+ version: 1.80.2
70
+ - !ruby/object:Gem::Dependency
71
+ name: rubocop-performance
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: 1.26.0
65
77
  type: :development
66
78
  prerelease: false
67
79
  version_requirements: !ruby/object:Gem::Requirement
68
80
  requirements:
69
81
  - - "~>"
70
82
  - !ruby/object:Gem::Version
71
- version: '12.3'
72
- - - ">="
83
+ version: 1.26.0
84
+ - !ruby/object:Gem::Dependency
85
+ name: rubocop-rake
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
73
89
  - !ruby/object:Gem::Version
74
- version: 12.3.3
90
+ version: 0.7.1
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: 0.7.1
75
98
  - !ruby/object:Gem::Dependency
76
- name: rubocop
99
+ name: simplecov
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
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
112
+ - !ruby/object:Gem::Dependency
113
+ name: simplecov-lcov
77
114
  requirement: !ruby/object:Gem::Requirement
78
115
  requirements:
79
116
  - - "~>"
80
117
  - !ruby/object:Gem::Version
81
- version: '0.79'
118
+ version: '0.8'
82
119
  type: :development
83
120
  prerelease: false
84
121
  version_requirements: !ruby/object:Gem::Requirement
85
122
  requirements:
86
123
  - - "~>"
87
124
  - !ruby/object:Gem::Version
88
- version: '0.79'
89
- description:
125
+ version: '0.8'
90
126
  email:
127
+ - hainesr@gmail.com
128
+ - jdleesmiller@gmail.com
91
129
  - alex@simonov.me
92
130
  executables: []
93
131
  extensions: []
94
132
  extra_rdoc_files: []
95
133
  files:
134
+ - Changelog.md
135
+ - LICENSE.md
96
136
  - README.md
97
137
  - Rakefile
98
- - TODO
138
+ - lib/rubyzip.rb
99
139
  - lib/zip.rb
100
140
  - lib/zip/central_directory.rb
101
141
  - lib/zip/compressor.rb
102
142
  - lib/zip/constants.rb
143
+ - lib/zip/crypto/aes_encryption.rb
103
144
  - lib/zip/crypto/decrypted_io.rb
104
145
  - lib/zip/crypto/encryption.rb
105
146
  - lib/zip/crypto/null_encryption.rb
106
147
  - lib/zip/crypto/traditional_encryption.rb
107
148
  - lib/zip/decompressor.rb
108
149
  - lib/zip/deflater.rb
150
+ - lib/zip/dirtyable.rb
109
151
  - lib/zip/dos_time.rb
110
152
  - lib/zip/entry.rb
111
153
  - lib/zip/entry_set.rb
112
154
  - lib/zip/errors.rb
113
155
  - lib/zip/extra_field.rb
156
+ - lib/zip/extra_field/aes.rb
114
157
  - lib/zip/extra_field/generic.rb
115
158
  - lib/zip/extra_field/ntfs.rb
116
159
  - lib/zip/extra_field/old_unix.rb
117
160
  - lib/zip/extra_field/universal_time.rb
118
161
  - lib/zip/extra_field/unix.rb
162
+ - lib/zip/extra_field/unknown.rb
119
163
  - lib/zip/extra_field/zip64.rb
120
- - lib/zip/extra_field/zip64_placeholder.rb
121
164
  - lib/zip/file.rb
165
+ - lib/zip/file_split.rb
122
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
123
172
  - lib/zip/inflater.rb
124
173
  - lib/zip/input_stream.rb
125
174
  - lib/zip/ioextras.rb
@@ -134,6 +183,7 @@ files:
134
183
  - lib/zip/streamable_directory.rb
135
184
  - lib/zip/streamable_stream.rb
136
185
  - lib/zip/version.rb
186
+ - rubyzip.gemspec
137
187
  - samples/example.rb
138
188
  - samples/example_filesystem.rb
139
189
  - samples/example_recursive.rb
@@ -143,30 +193,14 @@ files:
143
193
  - samples/zipfind.rb
144
194
  homepage: http://github.com/rubyzip/rubyzip
145
195
  licenses:
146
- - BSD 2-Clause
196
+ - BSD-2-Clause
147
197
  metadata:
148
198
  bug_tracker_uri: https://github.com/rubyzip/rubyzip/issues
149
- changelog_uri: https://github.com/rubyzip/rubyzip/blob/v2.3.2/Changelog.md
150
- documentation_uri: https://www.rubydoc.info/gems/rubyzip/2.3.2
151
- source_code_uri: https://github.com/rubyzip/rubyzip/tree/v2.3.2
199
+ changelog_uri: https://github.com/rubyzip/rubyzip/blob/v3.6.0/Changelog.md
200
+ documentation_uri: https://www.rubydoc.info/gems/rubyzip/3.6.0
201
+ source_code_uri: https://github.com/rubyzip/rubyzip/tree/v3.6.0
152
202
  wiki_uri: https://github.com/rubyzip/rubyzip/wiki
153
- post_install_message: |
154
- RubyZip 3.0 is coming!
155
- **********************
156
-
157
- The public API of some Rubyzip classes has been modernized to use named
158
- parameters for optional arguments. Please check your usage of the
159
- following classes:
160
- * `Zip::File`
161
- * `Zip::Entry`
162
- * `Zip::InputStream`
163
- * `Zip::OutputStream`
164
-
165
- Please ensure that your Gemfiles and .gemspecs are suitably restrictive
166
- to avoid an unexpected breakage when 3.0 is released (e.g. ~> 2.3.0).
167
- See https://github.com/rubyzip/rubyzip for details. The Changelog also
168
- lists other enhancements and bugfixes that have been implemented since
169
- version 2.3.0.
203
+ rubygems_mfa_required: 'true'
170
204
  rdoc_options: []
171
205
  require_paths:
172
206
  - lib
@@ -174,15 +208,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
174
208
  requirements:
175
209
  - - ">="
176
210
  - !ruby/object:Gem::Version
177
- version: '2.4'
211
+ version: '3.0'
178
212
  required_rubygems_version: !ruby/object:Gem::Requirement
179
213
  requirements:
180
214
  - - ">="
181
215
  - !ruby/object:Gem::Version
182
216
  version: '0'
183
217
  requirements: []
184
- rubygems_version: 3.1.4
185
- signing_key:
218
+ rubygems_version: 4.0.17
186
219
  specification_version: 4
187
220
  summary: rubyzip is a ruby module for reading and writing zip files
188
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