minitar 0.8 → 0.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'minitar'
4
- require 'minitest_helper'
3
+ require "minitar"
4
+ require "minitest_helper"
5
5
 
6
6
  class TestTarWriter < Minitest::Test
7
7
  include Archive::Tar::Minitar::ByteSize
@@ -21,15 +21,15 @@ class TestTarWriter < Minitest::Test
21
21
  end
22
22
 
23
23
  def reset
24
- @data = ''
25
- @data.force_encoding('ascii-8bit') if @data.respond_to?(:force_encoding)
24
+ @data = ""
25
+ @data.force_encoding("ascii-8bit") if @data.respond_to?(:force_encoding)
26
26
  end
27
27
  end
28
28
 
29
29
  def setup
30
- @data = 'a' * 10
30
+ @data = "a" * 10
31
31
  @unicode = [0xc3.chr, 0xa5.chr].join * 10
32
- @unicode.force_encoding('utf-8') if @unicode.respond_to?(:force_encoding)
32
+ @unicode.force_encoding("utf-8") if @unicode.respond_to?(:force_encoding)
33
33
  @dummyos = DummyIO.new
34
34
  @os = Minitar::Writer.new(@dummyos)
35
35
  end
@@ -46,63 +46,61 @@ class TestTarWriter < Minitest::Test
46
46
  assert writer.closed?
47
47
  end
48
48
 
49
-
50
49
  def test_add_file_simple
51
50
  @dummyos.reset
52
51
 
53
52
  Minitar::Writer.open(@dummyos) do |os|
54
- os.add_file_simple('lib/foo/bar', :mode => 0o644, :size => 10) do |f|
55
- f.write 'a' * 10
53
+ os.add_file_simple("lib/foo/bar", :mode => 0o644, :size => 10) do |f|
54
+ f.write "a" * 10
56
55
  end
57
- os.add_file_simple('lib/bar/baz', :mode => 0o644, :size => 100) do |f|
58
- f.write 'fillme'
56
+ os.add_file_simple("lib/bar/baz", :mode => 0o644, :size => 100) do |f|
57
+ f.write "fillme"
59
58
  end
60
59
  end
61
60
 
62
- assert_headers_equal(tar_file_header('lib/foo/bar', '', 0o644, 10),
61
+ assert_headers_equal(tar_file_header("lib/foo/bar", "", 0o644, 10),
63
62
  @dummyos.data[0, 512])
64
- assert_equal('a' * 10 + "\0" * 502, @dummyos.data[512, 512])
65
- assert_headers_equal(tar_file_header('lib/bar/baz', '', 0o644, 100),
63
+ assert_equal("a" * 10 + "\0" * 502, @dummyos.data[512, 512])
64
+ assert_headers_equal(tar_file_header("lib/bar/baz", "", 0o644, 100),
66
65
  @dummyos.data[512 * 2, 512])
67
- assert_equal('fillme' + "\0" * 506, @dummyos.data[512 * 3, 512])
66
+ assert_equal("fillme" + "\0" * 506, @dummyos.data[512 * 3, 512])
68
67
  assert_equal("\0" * 512, @dummyos.data[512 * 4, 512])
69
68
  assert_equal("\0" * 512, @dummyos.data[512 * 5, 512])
70
69
  end
71
70
 
72
71
  def test_write_operations_fail_after_closed
73
72
  @dummyos.reset
74
- @os.add_file_simple('sadd', :mode => 0o644, :size => 20) { |f| }
73
+ @os.add_file_simple("sadd", :mode => 0o644, :size => 20) { |f| }
75
74
  @os.close
76
75
  assert_raises(Minitar::ClosedStream) { @os.flush }
77
- assert_raises(Minitar::ClosedStream) {
78
- @os.add_file('dfdsf', :mode => 0o644) {}
79
- }
80
- assert_raises(Minitar::ClosedStream) { @os.mkdir 'sdfdsf', :mode => 0o644 }
76
+ assert_raises(Minitar::ClosedStream) { @os.add_file("dfdsf", :mode => 0o644) {} }
77
+ assert_raises(Minitar::ClosedStream) { @os.mkdir "sdfdsf", :mode => 0o644 }
78
+ assert_raises(Minitar::ClosedStream) { @os.symlink "a", "b", :mode => 0o644 }
81
79
  end
82
80
 
83
81
  def test_file_name_is_split_correctly
84
82
  # test insane file lengths, and: a{100}/b{155}, etc
85
83
  @dummyos.reset
86
84
  names = [
87
- "#{'a' * 155}/#{'b' * 100}",
88
- "#{'a' * 151}/#{'qwer/' * 19}bla",
89
- "/#{'a' * 49}/#{'b' * 50}",
90
- "#{'a' * 49}/#{'b' * 50}x",
91
- "#{'a' * 49}x/#{'b' * 50}"
85
+ "#{"a" * 155}/#{"b" * 100}",
86
+ "#{"a" * 151}/#{"qwer/" * 19}bla",
87
+ "/#{"a" * 49}/#{"b" * 50}",
88
+ "#{"a" * 49}/#{"b" * 50}x",
89
+ "#{"a" * 49}x/#{"b" * 50}"
92
90
  ]
93
91
  o_names = [
94
- 'b' * 100,
95
- "#{'qwer/' * 19}bla",
96
- 'b' * 50,
97
- "#{'b' * 50}x",
98
- 'b' * 50
92
+ "b" * 100,
93
+ "#{"qwer/" * 19}bla",
94
+ "b" * 50,
95
+ "#{"b" * 50}x",
96
+ "b" * 50
99
97
  ]
100
98
  o_prefixes = [
101
- 'a' * 155,
102
- 'a' * 151,
103
- "/#{'a' * 49}",
104
- 'a' * 49,
105
- "#{'a' * 49}x"
99
+ "a" * 155,
100
+ "a" * 151,
101
+ "/#{"a" * 49}",
102
+ "a" * 49,
103
+ "#{"a" * 49}x"
106
104
  ]
107
105
  names.each do |name|
108
106
  @os.add_file_simple(name, :mode => 0o644, :size => 10) {}
@@ -118,46 +116,83 @@ class TestTarWriter < Minitest::Test
118
116
  def test_file_name_is_long
119
117
  @dummyos.reset
120
118
 
121
- @os.add_file_simple(File.join('a' * 152, 'b' * 10, 'c' * 92),
122
- :mode => 0o644, :size => 10) {}
123
- @os.add_file_simple(File.join('d' * 162, 'e' * 10),
124
- :mode => 0o644, :size => 10) {}
125
- @os.add_file_simple(File.join('f' * 10, 'g' * 110),
126
- :mode => 0o644, :size => 10) {}
119
+ @os.add_file_simple(File.join("a" * 152, "b" * 10, "c" * 92),
120
+ :mode => 0o644, :size => 10) {}
121
+ @os.add_file_simple(File.join("d" * 162, "e" * 10),
122
+ :mode => 0o644, :size => 10) {}
123
+ @os.add_file_simple(File.join("f" * 10, "g" * 110),
124
+ :mode => 0o644, :size => 10) {}
127
125
  # Issue #6.
128
- @os.add_file_simple('a' * 114, :mode => 0o644, :size => 10) {}
126
+ @os.add_file_simple("a" * 114, :mode => 0o644, :size => 10) {}
129
127
 
130
128
  # "././@LongLink", a file name, its actual header, its data, ...
131
129
  4.times do |i|
132
130
  assert_equal(Minitar::PosixHeader::GNU_EXT_LONG_LINK,
133
- @dummyos.data[4 * i * 512, 32].rstrip)
131
+ @dummyos.data[4 * i * 512, 32].rstrip)
134
132
  end
135
133
  end
136
134
 
135
+ def test_add_file_simple_content_with_long_name
136
+ @dummyos.reset
137
+
138
+ long_name_file_content = "where_is_all_the_content_gone"
139
+
140
+ @os.add_file_simple("a" * 114, :mode => 0o0644, :data => long_name_file_content)
141
+
142
+ assert_equal(long_name_file_content,
143
+ @dummyos.data[3 * 512, long_name_file_content.bytesize])
144
+ end
145
+
146
+ def test_add_file_content_with_long_name
147
+ dummyos = StringIO.new
148
+ def dummyos.method_missing(meth, *a)
149
+ string.send(meth, *a)
150
+ end
151
+
152
+ def dummyos.respond_to_missing?(meth, all)
153
+ string.respond_to?(meth, all)
154
+ end
155
+
156
+ long_name_file_content = "where_is_all_the_content_gone"
157
+
158
+ Minitar::Writer.open(dummyos) do |os|
159
+ os.add_file("a" * 114, :mode => 0o0644) do |f|
160
+ f.write(long_name_file_content)
161
+ end
162
+ end
163
+
164
+ assert_equal(long_name_file_content,
165
+ dummyos[3 * 512, long_name_file_content.bytesize])
166
+ end
167
+
137
168
  def test_add_file
138
169
  dummyos = StringIO.new
139
- def dummyos.method_missing(meth, *a) # rubocop:disable Style/MethodMissing
170
+ def dummyos.method_missing(meth, *a)
140
171
  string.send(meth, *a)
141
172
  end
142
- content1 = ('a'..'z').to_a.join('') # 26
143
- content2 = ('aa'..'zz').to_a.join('') # 1352
173
+
174
+ def dummyos.respond_to_missing?(meth, all)
175
+ string.respond_to?(meth, all)
176
+ end
177
+ content1 = ("a".."z").to_a.join("") # 26
178
+ content2 = ("aa".."zz").to_a.join("") # 1352
144
179
  Minitar::Writer.open(dummyos) do |os|
145
- os.add_file('lib/foo/bar', :mode => 0o644) { |f, _opts| f.write 'a' * 10 }
146
- os.add_file('lib/bar/baz', :mode => 0o644) { |f, _opts| f.write content1 }
147
- os.add_file('lib/bar/baz', :mode => 0o644) { |f, _opts| f.write content2 }
148
- os.add_file('lib/bar/baz', :mode => 0o644) { |_f, _opts| }
180
+ os.add_file("lib/foo/bar", :mode => 0o644) { |f, _opts| f.write "a" * 10 }
181
+ os.add_file("lib/bar/baz", :mode => 0o644) { |f, _opts| f.write content1 }
182
+ os.add_file("lib/bar/baz", :mode => 0o644) { |f, _opts| f.write content2 }
183
+ os.add_file("lib/bar/baz", :mode => 0o644) { |_f, _opts| }
149
184
  end
150
- assert_headers_equal(tar_file_header('lib/foo/bar', '', 0o644, 10),
185
+ assert_headers_equal(tar_file_header("lib/foo/bar", "", 0o644, 10),
151
186
  dummyos[0, 512])
152
- assert_equal(%Q(#{'a' * 10}#{"\0" * 502}), dummyos[512, 512])
187
+ assert_equal(%(#{"a" * 10}#{"\0" * 502}), dummyos[512, 512])
153
188
  offset = 512 * 2
154
- [content1, content2, ''].each do |data|
155
- assert_headers_equal(tar_file_header('lib/bar/baz', '', 0o644,
189
+ [content1, content2, ""].each do |data|
190
+ assert_headers_equal(tar_file_header("lib/bar/baz", "", 0o644,
156
191
  bytesize(data)), dummyos[offset, 512])
157
192
  offset += 512
158
- until !data || data == ''
193
+ until !data || data == ""
159
194
  chunk = data[0, 512]
160
- data[0, 512] = ''
195
+ data[0, 512] = ""
161
196
  assert_equal(chunk + "\0" * (512 - bytesize(chunk)),
162
197
  dummyos[offset, 512])
163
198
  offset += 512
@@ -168,28 +203,28 @@ class TestTarWriter < Minitest::Test
168
203
 
169
204
  def test_add_file_tests_seekability
170
205
  assert_raises(Archive::Tar::Minitar::NonSeekableStream) do
171
- @os.add_file('libdfdsfd', :mode => 0o644) { |f| }
206
+ @os.add_file("libdfdsfd", :mode => 0o644) { |f| }
172
207
  end
173
208
  end
174
209
 
175
210
  def test_write_header
176
211
  @dummyos.reset
177
- @os.add_file_simple('lib/foo/bar', :mode => 0o644, :size => 0) {}
212
+ @os.add_file_simple("lib/foo/bar", :mode => 0o644, :size => 0) {}
178
213
  @os.flush
179
- assert_headers_equal(tar_file_header('lib/foo/bar', '', 0o644, 0),
214
+ assert_headers_equal(tar_file_header("lib/foo/bar", "", 0o644, 0),
180
215
  @dummyos.data[0, 512])
181
216
  @dummyos.reset
182
- @os.mkdir('lib/foo', :mode => 0o644)
183
- assert_headers_equal(tar_dir_header('lib/foo', '', 0o644),
217
+ @os.mkdir("lib/foo", :mode => 0o644)
218
+ assert_headers_equal(tar_dir_header("lib/foo", "", 0o644),
184
219
  @dummyos.data[0, 512])
185
- @os.mkdir('lib/bar', :mode => 0o644)
186
- assert_headers_equal(tar_dir_header('lib/bar', '', 0o644),
220
+ @os.mkdir("lib/bar", :mode => 0o644)
221
+ assert_headers_equal(tar_dir_header("lib/bar", "", 0o644),
187
222
  @dummyos.data[512 * 1, 512])
188
223
  end
189
224
 
190
225
  def test_write_data
191
226
  @dummyos.reset
192
- @os.add_file_simple('lib/foo/bar', :mode => 0o644, :size => 10) do |f|
227
+ @os.add_file_simple("lib/foo/bar", :mode => 0o644, :size => 10) do |f|
193
228
  f.write @data
194
229
  end
195
230
  @os.flush
@@ -203,10 +238,10 @@ class TestTarWriter < Minitest::Test
203
238
  if @unicode.respond_to?(:bytesize)
204
239
  assert_equal 10, @unicode.size
205
240
  assert_equal 20, @unicode.bytesize
206
- @unicode.force_encoding('ascii-8bit')
241
+ @unicode.force_encoding("ascii-8bit")
207
242
  end
208
243
 
209
- file = ['lib/foo/b', 0xc3.chr, 0xa5.chr, 'r'].join
244
+ file = ["lib/foo/b", 0xc3.chr, 0xa5.chr, "r"].join
210
245
 
211
246
  @os.add_file_simple(file, :mode => 0o644, :size => 20) do |f|
212
247
  f.write @unicode
@@ -219,10 +254,25 @@ class TestTarWriter < Minitest::Test
219
254
  def test_file_size_is_checked
220
255
  @dummyos.reset
221
256
  assert_raises(Minitar::Writer::WriteBoundaryOverflow) do
222
- @os.add_file_simple('lib/foo/bar', :mode => 0o644, :size => 10) do |f|
223
- f.write '1' * 100
257
+ @os.add_file_simple("lib/foo/bar", :mode => 0o644, :size => 10) do |f|
258
+ f.write "1" * 100
224
259
  end
225
260
  end
226
- @os.add_file_simple('lib/foo/bar', :mode => 0o644, :size => 10) { |f| }
261
+ @os.add_file_simple("lib/foo/bar", :mode => 0o644, :size => 10) { |f| }
262
+ end
263
+
264
+ def test_symlink
265
+ @dummyos.reset
266
+ @os.symlink("lib/foo/bar", "lib/foo/baz", :mode => 0o644)
267
+ @os.flush
268
+ assert_headers_equal(tar_symlink_header("lib/foo/bar", "", 0o644, "lib/foo/baz"),
269
+ @dummyos.data[0, 512])
270
+ end
271
+
272
+ def test_symlink_target_size_is_checked
273
+ @dummyos.reset
274
+ assert_raises(Minitar::FileNameTooLong) do
275
+ @os.symlink("lib/foo/bar", "x" * 101)
276
+ end
227
277
  end
228
278
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitar
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.8'
4
+ version: '0.12'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Austin Ziegler
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-05 00:00:00.000000000 Z
11
+ date: 2024-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -16,14 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '5.11'
19
+ version: '5.24'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '5.11'
26
+ version: '5.24'
27
+ - !ruby/object:Gem::Dependency
28
+ name: base64
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.2'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: hoe
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '4.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '4.0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: hoe-doofus
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -53,19 +81,19 @@ dependencies:
53
81
  - !ruby/object:Gem::Version
54
82
  version: '1.1'
55
83
  - !ruby/object:Gem::Dependency
56
- name: hoe-git
84
+ name: hoe-git2
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
87
  - - "~>"
60
88
  - !ruby/object:Gem::Version
61
- version: '1.6'
89
+ version: '1.7'
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
- version: '1.6'
96
+ version: '1.7'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: hoe-rubygems
71
99
  requirement: !ruby/object:Gem::Requirement
@@ -81,39 +109,33 @@ dependencies:
81
109
  - !ruby/object:Gem::Version
82
110
  version: '1.0'
83
111
  - !ruby/object:Gem::Dependency
84
- name: hoe-travis
112
+ name: minitest-autotest
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
115
  - - "~>"
88
116
  - !ruby/object:Gem::Version
89
- version: '1.2'
117
+ version: '1.0'
90
118
  type: :development
91
119
  prerelease: false
92
120
  version_requirements: !ruby/object:Gem::Requirement
93
121
  requirements:
94
122
  - - "~>"
95
123
  - !ruby/object:Gem::Version
96
- version: '1.2'
124
+ version: '1.0'
97
125
  - !ruby/object:Gem::Dependency
98
- name: minitest-autotest
126
+ name: minitest-focus
99
127
  requirement: !ruby/object:Gem::Requirement
100
128
  requirements:
101
- - - ">="
129
+ - - "~>"
102
130
  - !ruby/object:Gem::Version
103
131
  version: '1.0'
104
- - - "<"
105
- - !ruby/object:Gem::Version
106
- version: '2'
107
132
  type: :development
108
133
  prerelease: false
109
134
  version_requirements: !ruby/object:Gem::Requirement
110
135
  requirements:
111
- - - ">="
136
+ - - "~>"
112
137
  - !ruby/object:Gem::Version
113
138
  version: '1.0'
114
- - - "<"
115
- - !ruby/object:Gem::Version
116
- version: '2'
117
139
  - !ruby/object:Gem::Dependency
118
140
  name: rake
119
141
  requirement: !ruby/object:Gem::Requirement
@@ -123,7 +145,7 @@ dependencies:
123
145
  version: '10.0'
124
146
  - - "<"
125
147
  - !ruby/object:Gem::Version
126
- version: '12'
148
+ version: '14'
127
149
  type: :development
128
150
  prerelease: false
129
151
  version_requirements: !ruby/object:Gem::Requirement
@@ -133,7 +155,7 @@ dependencies:
133
155
  version: '10.0'
134
156
  - - "<"
135
157
  - !ruby/object:Gem::Version
136
- version: '12'
158
+ version: '14'
137
159
  - !ruby/object:Gem::Dependency
138
160
  name: rdoc
139
161
  requirement: !ruby/object:Gem::Requirement
@@ -149,41 +171,38 @@ dependencies:
149
171
  - !ruby/object:Gem::Version
150
172
  version: '0.0'
151
173
  - !ruby/object:Gem::Dependency
152
- name: hoe
174
+ name: standard
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '1.0'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '1.0'
187
+ - !ruby/object:Gem::Dependency
188
+ name: simplecov
153
189
  requirement: !ruby/object:Gem::Requirement
154
190
  requirements:
155
191
  - - "~>"
156
192
  - !ruby/object:Gem::Version
157
- version: '3.17'
193
+ version: '0.21'
158
194
  type: :development
159
195
  prerelease: false
160
196
  version_requirements: !ruby/object:Gem::Requirement
161
197
  requirements:
162
198
  - - "~>"
163
199
  - !ruby/object:Gem::Version
164
- version: '3.17'
200
+ version: '0.21'
165
201
  description: |-
166
202
  The minitar library is a pure-Ruby library that provides the ability to deal
167
203
  with POSIX tar(1) archive files.
168
204
 
169
- This is release 0.7, providing fixes for several issues and clarifying the
170
- Minitar security stance. There are two minor breaking changes in this version
171
- so that exceptions will be thrown if a negative size is provided in a tar
172
- stream header or if the tar stream header is otherwise invalid.
173
-
174
- This release continues the migration and modernization of the code:
175
-
176
- * the licence has been changed to match the modern Ruby licensing scheme
177
- (Ruby and Simplified BSD instead of Ruby and GNU GPL);
178
- * the +minitar+ command-line program has been separated into the
179
- +minitar-cli+ gem; and
180
- * the +archive-tar-minitar+ gem now points to the +minitar+ and +minitar-cli+
181
- gems and discourages its installation.
182
-
183
- Some of these changes may break existing programs that depend on the internal
184
- structure of the minitar library, but every effort has been made to ensure
185
- compatibility; inasmuch as is possible, this compatibility will be maintained
186
- through the release of minitar 1.0 (which will have strong breaking changes).
205
+ This is release 0.12. This is likely the last revision before 1.0.
187
206
 
188
207
  minitar (previously called Archive::Tar::Minitar) is based heavily on code
189
208
  originally written by Mauricio Julio Fernández Pradier for the rpa-base
@@ -219,6 +238,7 @@ files:
219
238
  - lib/archive/tar/minitar/reader.rb
220
239
  - lib/archive/tar/minitar/writer.rb
221
240
  - lib/minitar.rb
241
+ - support/hoe/deprecated_gem.rb
222
242
  - test/minitest_helper.rb
223
243
  - test/support/tar_test_helpers.rb
224
244
  - test/test_tar_header.rb
@@ -230,7 +250,11 @@ homepage: https://github.com/halostatue/minitar/
230
250
  licenses:
231
251
  - Ruby
232
252
  - BSD-2-Clause
233
- metadata: {}
253
+ metadata:
254
+ homepage_uri: https://github.com/halostatue/minitar/
255
+ source_code_uri: https://github.com/halostatue/minitar/
256
+ bug_tracker_uri: https://github.com/halostatue/minitar/issues
257
+ rubygems_mfa_required: 'true'
234
258
  post_install_message: |
235
259
  The `minitar` executable is no longer bundled with `minitar`. If you are
236
260
  expecting this executable, make sure you also install `minitar-cli`.
@@ -250,9 +274,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
250
274
  - !ruby/object:Gem::Version
251
275
  version: '0'
252
276
  requirements: []
253
- rubyforge_project:
254
- rubygems_version: 2.7.7
255
- signing_key:
277
+ rubygems_version: 3.5.17
278
+ signing_key:
256
279
  specification_version: 4
257
280
  summary: The minitar library is a pure-Ruby library that provides the ability to deal
258
281
  with POSIX tar(1) archive files