archive-tar-external 1.4.2 → 1.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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGES.md +5 -1
- data/README.md +5 -2
- data/archive-tar-external.gemspec +1 -1
- data/lib/archive/tar/external.rb +17 -8
- data/spec/archive_tar_external_spec.rb +9 -6
- data/spec/spec_helper.rb +0 -1
- metadata +3 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 990b9b955f7f127b7e2cc3b74fc35116af8ea287fa24113a94c4027c76d859ba
|
4
|
+
data.tar.gz: 92b196efe6a52ddbc04dc5602cf0c1318cf5d1d0ac081e9701aa470046825e0b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 804c66f9312a14ff9a413eecef0ad30adb77f0400c63667747c6a4e9a9a3ddaf99efc9381a5f72e44d34df89a2f95f6565605debfea1ea400f1e8976f1945f73
|
7
|
+
data.tar.gz: b2930a7e498792a701a81991475707642d228acab91a6faeb74ea1104c0a2bcbaf23625c9dd5c5ab7b0e56e2678e242e574b4e665b89cad586f8acb59a127ac2
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGES.md
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
-
## 1.
|
1
|
+
## 1.5.0 - 1-May-2021
|
2
|
+
* A fourth option was added to the constructor. This allows you to set the
|
3
|
+
archive format. By default this is now set to 'pax'.
|
4
|
+
|
5
|
+
## 1.4.2 - 30-Apr-2021
|
2
6
|
* Switched from test-unit to rspec.
|
3
7
|
* Added tighter versioning for the development dependencies.
|
4
8
|
* Tests will now try to use gtar by default, if found.
|
data/README.md
CHANGED
@@ -29,8 +29,11 @@ try to expand a file from an archive that does not contain that file.
|
|
29
29
|
|
30
30
|
### OSX
|
31
31
|
It appears that the BSD tar that ships on Mac does not implement the -u
|
32
|
-
option properly, and will add a file to the archive even if
|
33
|
-
of the file hasn't changed.
|
32
|
+
option properly by default, and will add a file to the archive even if
|
33
|
+
the timestamp of the file hasn't changed.
|
34
|
+
|
35
|
+
The OSX issue was effectively addressed in version 1.5.0, where the default
|
36
|
+
archive format was added and set to 'pax'.
|
34
37
|
|
35
38
|
If you come across any other issues, please report them on the project
|
36
39
|
page at https://github.com/djberg96/archive-tar-external.
|
@@ -3,7 +3,7 @@ require 'rbconfig'
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |spec|
|
5
5
|
spec.name = 'archive-tar-external'
|
6
|
-
spec.version = '1.
|
6
|
+
spec.version = '1.5.0'
|
7
7
|
spec.summary = 'A simple way to create tar archives using external calls'
|
8
8
|
spec.license = 'Apache-2.0'
|
9
9
|
spec.author = 'Daniel Berger'
|
data/lib/archive/tar/external.rb
CHANGED
@@ -17,32 +17,40 @@ module Archive
|
|
17
17
|
# This class encapsulates tar & zip operations.
|
18
18
|
class Tar::External
|
19
19
|
# The version of the archive-tar-external library.
|
20
|
-
VERSION = '1.
|
20
|
+
VERSION = '1.5.0'
|
21
21
|
|
22
22
|
# The name of the archive file to be used, e.g. "test.tar"
|
23
23
|
attr_accessor :archive_name
|
24
24
|
|
25
|
-
# The name of the tar program you wish to use.
|
25
|
+
# The name of the tar program you wish to use. The default is "tar".
|
26
26
|
attr_accessor :tar_program
|
27
27
|
|
28
28
|
# The name of the archive file after compression, e.g. "test.tar.gz"
|
29
29
|
attr_reader :compressed_archive_name
|
30
30
|
|
31
|
-
#
|
32
|
-
|
31
|
+
# The format of the archive file. The default is "pax".
|
32
|
+
attr_reader :format
|
33
|
+
|
34
|
+
# Returns an Archive::Tar::External object. The +archive_name+ is the
|
35
|
+
# name of the tarball. While a .tar extension is recommended based on
|
33
36
|
# years of convention, it is not enforced.
|
34
37
|
#
|
35
38
|
# Note that this does not actually create the archive unless you
|
36
|
-
# pass a value to +file_pattern+.
|
39
|
+
# pass a value to +file_pattern+. This then becomes a shortcut for
|
37
40
|
# Archive::Tar::External.new + Archive::Tar::External#create_archive.
|
38
41
|
#
|
39
42
|
# If +program+ is provided, then it compresses the archive as well by
|
40
43
|
# calling Archive::Tar::External#compress_archive internally.
|
41
44
|
#
|
42
|
-
|
45
|
+
# You may also specify an archive format. As of version 1.5, the
|
46
|
+
# default is 'pax'. Previous versions used whatever your tar program
|
47
|
+
# used by default.
|
48
|
+
#
|
49
|
+
def initialize(archive_name, file_pattern = nil, program = nil, format = 'pax')
|
43
50
|
@archive_name = archive_name.to_s
|
44
51
|
@compressed_archive_name = nil
|
45
52
|
@tar_program = 'tar'
|
53
|
+
@format = 'pax'
|
46
54
|
|
47
55
|
create_archive(file_pattern) if file_pattern
|
48
56
|
compress_archive(program) if program
|
@@ -67,12 +75,13 @@ module Archive
|
|
67
75
|
end
|
68
76
|
|
69
77
|
# Creates the archive using +file_pattern+ using +options+ or 'cf'
|
70
|
-
# (create file) by default.
|
78
|
+
# (create file) by default. The 'f' option should always be present
|
79
|
+
# and always be last.
|
71
80
|
#
|
72
81
|
# Raises an Archive::Tar::Error if a failure occurs.
|
73
82
|
#
|
74
83
|
def create_archive(file_pattern, options = 'cf')
|
75
|
-
cmd = "#{@tar_program} #{options} #{@archive_name} #{file_pattern}"
|
84
|
+
cmd = "#{@tar_program} --format #{@format} -#{options} #{@archive_name} #{file_pattern}"
|
76
85
|
|
77
86
|
Open3.popen3(cmd) do |_tar_in, _tar_out, tar_err|
|
78
87
|
err = tar_err.gets
|
@@ -15,20 +15,18 @@ RSpec.describe Archive::Tar::External do
|
|
15
15
|
let(:tar_name) { 'test.tar' }
|
16
16
|
let(:tar_obj) { Archive::Tar::External.new(tar_name) }
|
17
17
|
let(:pattern) { '*.txt' }
|
18
|
-
let(:gtar) { File.basename(File.which('gtar')) }
|
19
18
|
|
20
19
|
let(:archive_name) { 'test.tar.gz' }
|
21
|
-
let(:tar_program) {
|
20
|
+
let(:tar_program) { 'tar' }
|
22
21
|
|
23
22
|
before do
|
24
|
-
tar_obj.tar_program = 'gtar' if File.which('gtar')
|
25
23
|
File.open(tmp_file1, 'w'){ |f| f.puts 'This is a temporary text file' }
|
26
24
|
File.open(tmp_file2, 'w'){ |f| f.puts 'This is a temporary text file' }
|
27
25
|
File.open(tmp_file3, 'w'){ |f| f.puts 'This is a temporary text file' }
|
28
26
|
end
|
29
27
|
|
30
28
|
example "version" do
|
31
|
-
expect(Archive::Tar::External::VERSION).to eq('1.
|
29
|
+
expect(Archive::Tar::External::VERSION).to eq('1.5.0')
|
32
30
|
expect(Archive::Tar::External::VERSION).to be_frozen
|
33
31
|
end
|
34
32
|
|
@@ -102,13 +100,18 @@ RSpec.describe Archive::Tar::External do
|
|
102
100
|
end
|
103
101
|
|
104
102
|
example "create_archive accepts optional parameters" do
|
105
|
-
expect{ tar_obj.create_archive(pattern, '
|
103
|
+
expect{ tar_obj.create_archive(pattern, 'jcf') }.not_to raise_error
|
106
104
|
end
|
107
105
|
|
108
106
|
example "create is an alias for create_archive" do
|
109
107
|
expect(tar_obj).to respond_to(:create)
|
110
108
|
expect(tar_obj.method(:create)).to eq(tar_obj.method(:create_archive))
|
111
109
|
end
|
110
|
+
|
111
|
+
example "format getter" do
|
112
|
+
expect(tar_obj).to respond_to(:format)
|
113
|
+
expect(tar_obj.format).to eq('pax')
|
114
|
+
end
|
112
115
|
end
|
113
116
|
|
114
117
|
context "compression" do
|
@@ -185,7 +188,7 @@ RSpec.describe Archive::Tar::External do
|
|
185
188
|
expect(tar_obj).to respond_to(:update_archive)
|
186
189
|
end
|
187
190
|
|
188
|
-
example "update_archive behaves as expected"
|
191
|
+
example "update_archive behaves as expected" do
|
189
192
|
tar_obj.create_archive(pattern)
|
190
193
|
expect(tar_obj.archive_info).to eq([tmp_file1, tmp_file2, tmp_file3])
|
191
194
|
tar_obj.update_archive(tmp_file2)
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: archive-tar-external
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Berger
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
|
36
36
|
WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2021-
|
38
|
+
date: 2021-05-01 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rake
|
@@ -132,5 +132,5 @@ signing_key:
|
|
132
132
|
specification_version: 4
|
133
133
|
summary: A simple way to create tar archives using external calls
|
134
134
|
test_files:
|
135
|
-
- spec/archive_tar_external_spec.rb
|
136
135
|
- spec/spec_helper.rb
|
136
|
+
- spec/archive_tar_external_spec.rb
|
metadata.gz.sig
CHANGED
Binary file
|