zipr 0.2.2 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/zipr.rb +1 -1
- data/lib/zipr/archive.rb +11 -6
- data/lib/zipr/helper.rb +3 -2
- metadata +6 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 937bdb977ae3c5773f446384d75a99909dce1525b37a7178d962d0e0b0e7303d
|
4
|
+
data.tar.gz: 520bd57c12f5cd9418fe94eff77c9760d3a04e67d2b45ae773fae8722fe7636b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 937864d6924a089ede4705c5cba15bd361c050bfc5548230362b4c29eb6c03abcae3209d3178a6e168838cf4078fbcda7792b43c2548d365c76f04a87a905acc
|
7
|
+
data.tar.gz: d529bd61f887f1a663245cfa4ce16e2a7469990a071d18b3b49fd9f359352bee4ac3a880cb803b45ed949f2eada808f91bb3cd803035507e6e2deb79418d186b
|
data/lib/zipr.rb
CHANGED
data/lib/zipr/archive.rb
CHANGED
@@ -14,6 +14,7 @@ module Zipr
|
|
14
14
|
# :archive_type - The type of archive - :seven_zip or :zip - Can be omitted if the archive exists or using default. Default: :zip
|
15
15
|
# :exclude_files - Array of files to be excluded from archiving/extracting - Can be relative or exact paths.
|
16
16
|
# :exclude_unless_missing - Array of files to be excluded from archiving/extracting only if they already exist - Can be relative or exact paths.
|
17
|
+
# :exclude_unless_archive_changed - Array of files to be excluded from extracting only if the archive hasn't changed and they already exist - Use relative paths.
|
17
18
|
# :password - the archive password - currently :seven_zip is the only supported archive_type for encrypted archives.
|
18
19
|
# :silent - [true/false] No info messages if flagged
|
19
20
|
# checksums: A hash of checksums of the archived files. If you checked one of the determine_files methods for idempotency first, pass the result to this parameter to avoid duplicate processing.
|
@@ -208,9 +209,9 @@ module Zipr
|
|
208
209
|
|
209
210
|
unless ::File.exist?(@path)
|
210
211
|
# If the archive doesn't exist but checksums were provided, check for files to extract based off of checksums
|
211
|
-
return @checksums.select { |entry_name, checksum| _extract_file?(entry_name, checksum == 'directory', destination_folder, files_to_check) }.keys
|
212
|
+
return @checksums.select { |entry_name, checksum| _extract_file?(entry_name, checksum == 'directory', destination_folder, files_to_check) }.keys unless @checksums.nil? || @checksums.empty?
|
212
213
|
# If the archive doesn't exist and no checksums were found, extract all files_to_check or :all files
|
213
|
-
return files_to_check
|
214
|
+
return files_to_check
|
214
215
|
end
|
215
216
|
|
216
217
|
files_to_extract = case @options[:archive_type]
|
@@ -441,20 +442,24 @@ module Zipr
|
|
441
442
|
def _excluded_file?(file_path, destination_path: '', exists_in_zip: false)
|
442
443
|
@options[:exclude_files] ||= []
|
443
444
|
@options[:exclude_unless_missing] ||= []
|
445
|
+
@options[:exclude_unless_archive_changed] ||= []
|
444
446
|
return true if @options[:exclude_files].any? { |e| file_path.tr('\\', '/') =~ /^#{Zipr.wildcard_to_regex(e.tr('\\', '/'))}$/i }
|
445
447
|
return true if ::File.exist?(destination_path) && @options[:exclude_unless_missing].any? { |e| file_path.tr('\\', '/') =~ /^#{Zipr.wildcard_to_regex(e.tr('\\', '/'))}$/i }
|
446
448
|
return true if exists_in_zip && @options[:exclude_unless_missing].any? { |e| file_path.tr('\\', '/') =~ /^#{Zipr.wildcard_to_regex(e.tr('\\', '/'))}$/i }
|
449
|
+
return true if !@archive_changed && ::File.exist?(destination_path) && @options[:exclude_unless_archive_changed].any? { |e| file_path.tr('\\', '/') =~ /^#{Zipr.wildcard_to_regex(e.tr('\\', '/'))}$/i }
|
447
450
|
false
|
448
451
|
end
|
449
452
|
|
450
453
|
def _assign_common_accessors(options: nil, checksums: nil, mode: nil)
|
454
|
+
_assign_checksums(checksums)
|
451
455
|
@options = options || @options || {}
|
452
|
-
@checksums = checksums || @checksums || {}
|
453
456
|
@mode = mode || @mode || :idempotent
|
457
|
+
@archive_changed = ::File.exist?(@path) && @checksums['archive_checksum'] != Digest::SHA256.file(@path).hexdigest
|
458
|
+
end
|
454
459
|
|
455
|
-
|
456
|
-
|
457
|
-
|
460
|
+
def _assign_checksums(checksums)
|
461
|
+
return load_checksum_file if checksums.nil? || checksums.empty? # Read the checksums file if it hasn't been read yet
|
462
|
+
@checksums = checksums || {}
|
458
463
|
end
|
459
464
|
|
460
465
|
# TODO: Add delete method to remove something from an archive
|
data/lib/zipr/helper.rb
CHANGED
@@ -34,8 +34,9 @@ module Zipr
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def wildcard_to_regex(entry)
|
37
|
-
entry.
|
38
|
-
|
37
|
+
return entry if entry.is_a?(Regexp)
|
38
|
+
escaped_entry = Regexp.escape(entry).gsub(/\\\*/, '.*') # Convert asterisks to .*
|
39
|
+
/#{escaped_entry}/
|
39
40
|
end
|
40
41
|
|
41
42
|
def prepend_source_folder(source_folder, entry)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zipr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Munoz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: easy_io
|
@@ -53,25 +53,19 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: seven_zip_ruby
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1.
|
62
|
-
- - ">="
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
version: 1.2.5.4
|
61
|
+
version: '1.3'
|
65
62
|
type: :runtime
|
66
63
|
prerelease: false
|
67
64
|
version_requirements: !ruby/object:Gem::Requirement
|
68
65
|
requirements:
|
69
66
|
- - "~>"
|
70
67
|
- !ruby/object:Gem::Version
|
71
|
-
version: '1.
|
72
|
-
- - ">="
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: 1.2.5.4
|
68
|
+
version: '1.3'
|
75
69
|
- !ruby/object:Gem::Dependency
|
76
70
|
name: os
|
77
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -134,8 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
134
128
|
- !ruby/object:Gem::Version
|
135
129
|
version: '0'
|
136
130
|
requirements: []
|
137
|
-
|
138
|
-
rubygems_version: 2.5.2.3
|
131
|
+
rubygems_version: 3.0.3
|
139
132
|
signing_key:
|
140
133
|
specification_version: 4
|
141
134
|
summary: Ruby library for easily extracting and creating 7zip and zip archives idempotently.
|