rubyzip 2.3.2 → 3.3.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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +495 -0
  3. data/LICENSE.md +24 -0
  4. data/README.md +192 -44
  5. data/Rakefile +15 -13
  6. data/lib/zip/central_directory.rb +179 -125
  7. data/lib/zip/compressor.rb +3 -1
  8. data/lib/zip/constants.rb +29 -21
  9. data/lib/zip/crypto/aes_encryption.rb +120 -0
  10. data/lib/zip/crypto/decrypted_io.rb +21 -15
  11. data/lib/zip/crypto/encryption.rb +4 -2
  12. data/lib/zip/crypto/null_encryption.rb +5 -13
  13. data/lib/zip/crypto/traditional_encryption.rb +10 -6
  14. data/lib/zip/decompressor.rb +4 -3
  15. data/lib/zip/deflater.rb +12 -8
  16. data/lib/zip/dirtyable.rb +32 -0
  17. data/lib/zip/dos_time.rb +53 -6
  18. data/lib/zip/entry.rb +405 -240
  19. data/lib/zip/entry_set.rb +11 -9
  20. data/lib/zip/errors.rb +136 -16
  21. data/lib/zip/extra_field/aes.rb +50 -0
  22. data/lib/zip/extra_field/generic.rb +10 -11
  23. data/lib/zip/extra_field/ntfs.rb +6 -4
  24. data/lib/zip/extra_field/old_unix.rb +3 -1
  25. data/lib/zip/extra_field/universal_time.rb +3 -1
  26. data/lib/zip/extra_field/unix.rb +5 -3
  27. data/lib/zip/extra_field/unknown.rb +35 -0
  28. data/lib/zip/extra_field/zip64.rb +19 -5
  29. data/lib/zip/extra_field.rb +25 -23
  30. data/lib/zip/file.rb +185 -226
  31. data/lib/zip/file_split.rb +91 -0
  32. data/lib/zip/filesystem/dir.rb +86 -0
  33. data/lib/zip/filesystem/directory_iterator.rb +48 -0
  34. data/lib/zip/filesystem/file.rb +263 -0
  35. data/lib/zip/filesystem/file_stat.rb +110 -0
  36. data/lib/zip/filesystem/zip_file_name_mapper.rb +81 -0
  37. data/lib/zip/filesystem.rb +27 -596
  38. data/lib/zip/inflater.rb +13 -10
  39. data/lib/zip/input_stream.rb +98 -47
  40. data/lib/zip/ioextras/abstract_input_stream.rb +146 -58
  41. data/lib/zip/ioextras/abstract_output_stream.rb +13 -3
  42. data/lib/zip/ioextras.rb +7 -7
  43. data/lib/zip/null_compressor.rb +3 -1
  44. data/lib/zip/null_decompressor.rb +6 -3
  45. data/lib/zip/null_input_stream.rb +3 -1
  46. data/lib/zip/output_stream.rb +58 -48
  47. data/lib/zip/pass_thru_compressor.rb +3 -1
  48. data/lib/zip/pass_thru_decompressor.rb +12 -9
  49. data/lib/zip/streamable_directory.rb +3 -1
  50. data/lib/zip/streamable_stream.rb +4 -1
  51. data/lib/zip/version.rb +4 -1
  52. data/lib/zip.rb +25 -3
  53. data/rubyzip.gemspec +39 -0
  54. data/samples/example.rb +8 -3
  55. data/samples/example_filesystem.rb +3 -2
  56. data/samples/example_recursive.rb +3 -1
  57. data/samples/gtk_ruby_zip.rb +5 -3
  58. data/samples/qtzip.rb +7 -6
  59. data/samples/write_simple.rb +2 -1
  60. data/samples/zipfind.rb +1 -0
  61. metadata +81 -49
  62. data/TODO +0 -15
  63. data/lib/zip/extra_field/zip64_placeholder.rb +0 -15
metadata CHANGED
@@ -1,125 +1,173 @@
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.3.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
99
138
  - lib/zip.rb
100
139
  - lib/zip/central_directory.rb
101
140
  - lib/zip/compressor.rb
102
141
  - lib/zip/constants.rb
142
+ - lib/zip/crypto/aes_encryption.rb
103
143
  - lib/zip/crypto/decrypted_io.rb
104
144
  - lib/zip/crypto/encryption.rb
105
145
  - lib/zip/crypto/null_encryption.rb
106
146
  - lib/zip/crypto/traditional_encryption.rb
107
147
  - lib/zip/decompressor.rb
108
148
  - lib/zip/deflater.rb
149
+ - lib/zip/dirtyable.rb
109
150
  - lib/zip/dos_time.rb
110
151
  - lib/zip/entry.rb
111
152
  - lib/zip/entry_set.rb
112
153
  - lib/zip/errors.rb
113
154
  - lib/zip/extra_field.rb
155
+ - lib/zip/extra_field/aes.rb
114
156
  - lib/zip/extra_field/generic.rb
115
157
  - lib/zip/extra_field/ntfs.rb
116
158
  - lib/zip/extra_field/old_unix.rb
117
159
  - lib/zip/extra_field/universal_time.rb
118
160
  - lib/zip/extra_field/unix.rb
161
+ - lib/zip/extra_field/unknown.rb
119
162
  - lib/zip/extra_field/zip64.rb
120
- - lib/zip/extra_field/zip64_placeholder.rb
121
163
  - lib/zip/file.rb
164
+ - lib/zip/file_split.rb
122
165
  - lib/zip/filesystem.rb
166
+ - lib/zip/filesystem/dir.rb
167
+ - lib/zip/filesystem/directory_iterator.rb
168
+ - lib/zip/filesystem/file.rb
169
+ - lib/zip/filesystem/file_stat.rb
170
+ - lib/zip/filesystem/zip_file_name_mapper.rb
123
171
  - lib/zip/inflater.rb
124
172
  - lib/zip/input_stream.rb
125
173
  - lib/zip/ioextras.rb
@@ -134,6 +182,7 @@ files:
134
182
  - lib/zip/streamable_directory.rb
135
183
  - lib/zip/streamable_stream.rb
136
184
  - lib/zip/version.rb
185
+ - rubyzip.gemspec
137
186
  - samples/example.rb
138
187
  - samples/example_filesystem.rb
139
188
  - samples/example_recursive.rb
@@ -143,30 +192,14 @@ files:
143
192
  - samples/zipfind.rb
144
193
  homepage: http://github.com/rubyzip/rubyzip
145
194
  licenses:
146
- - BSD 2-Clause
195
+ - BSD-2-Clause
147
196
  metadata:
148
197
  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
198
+ changelog_uri: https://github.com/rubyzip/rubyzip/blob/v3.3.0/Changelog.md
199
+ documentation_uri: https://www.rubydoc.info/gems/rubyzip/3.3.0
200
+ source_code_uri: https://github.com/rubyzip/rubyzip/tree/v3.3.0
152
201
  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.
202
+ rubygems_mfa_required: 'true'
170
203
  rdoc_options: []
171
204
  require_paths:
172
205
  - lib
@@ -174,15 +207,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
174
207
  requirements:
175
208
  - - ">="
176
209
  - !ruby/object:Gem::Version
177
- version: '2.4'
210
+ version: '3.0'
178
211
  required_rubygems_version: !ruby/object:Gem::Requirement
179
212
  requirements:
180
213
  - - ">="
181
214
  - !ruby/object:Gem::Version
182
215
  version: '0'
183
216
  requirements: []
184
- rubygems_version: 3.1.4
185
- signing_key:
217
+ rubygems_version: 3.7.2
186
218
  specification_version: 4
187
219
  summary: rubyzip is a ruby module for reading and writing zip files
188
220
  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