eac_fs 0.12.3 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e780113034822a4d59e1212ad4a1f8754a6d927c039e60c45801b5985219c35b
4
- data.tar.gz: 138ad3746edba0031955120f0f1735a0b1424f865eccb4707f8b3939fc0ca0d7
3
+ metadata.gz: 67ecee467e1090048cee39cf7ac2466c9c6b5cadd94dc15b8460d941cb7d053a
4
+ data.tar.gz: a980f7eb121bc6c28ca546228e044795a20fd90b224938ed3dfd01d1280cfb69
5
5
  SHA512:
6
- metadata.gz: bc825bd686ec332a818b5c60d3fdb443084077c06958711af1a89106114ab4eef9eeda1ac25046fe354105945c0c702992d31a280543f0236e04f0547e930b8c
7
- data.tar.gz: 4d6f6cf55371dcbbe3d954b3af0730ab86a036c59c3c5df0fe86a0ebd1b97f22850e9b6ce273cb3964496375164a6766d1322df236847b083adda1909327087a
6
+ metadata.gz: bc41798978be925acce17cc05790230ac2f9655f9fc9b7ed86ef6335873d4f98ecf952a0a965acc0b139dfa44724dbbc5baf704adcf96909de6266b7371eb45d
7
+ data.tar.gz: ddb6da66ffe30077ddbcc0f01ed4e30177b2f23d82f2b7e9706697ddfa6258876ee2831839021cc7f1e4f5984c4be51417e3f1b555adb54bcaf1e4159f426cd9
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacFs
6
+ class Comparator
7
+ class Build
8
+ TRUNCATE_FILE_CONTENT = "__TRUNCATED__\n"
9
+
10
+ enable_method_class
11
+ common_constructor :comparator, :root
12
+ delegate :rename_files, :truncate_files, to: :comparator
13
+
14
+ # @return [Hash]
15
+ def result
16
+ build(root)
17
+ end
18
+
19
+ private
20
+
21
+ def build(obj)
22
+ if obj.file?
23
+ build_file(obj)
24
+ elsif obj.directory?
25
+ build_directory(obj)
26
+ else
27
+ raise "Unknown filesystem object \"#{obj}\""
28
+ end
29
+ end
30
+
31
+ # @param dir [Pathname]
32
+ # @return [Hash]
33
+ def build_directory(dir)
34
+ dir.children.map do |child|
35
+ [fs_object_basename(child), build(child)]
36
+ end.to_h
37
+ end
38
+
39
+ # @param file [Pathname]
40
+ # @return [Hash]
41
+ def build_file(file)
42
+ truncate_file?(file) ? TRUNCATE_FILE_CONTENT : file.read
43
+ end
44
+
45
+ # @return [String]
46
+ def fs_object_basename(obj)
47
+ rename_files.inject(obj.basename.to_path) { |a, e| e.apply(a) }
48
+ end
49
+
50
+ def truncate_file?(file)
51
+ truncate_files.any? do |pattern|
52
+ file.basename.fnmatch?(pattern)
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacFs
6
+ class Comparator
7
+ class RenameFile
8
+ common_constructor :from, :to
9
+
10
+ def apply(basename)
11
+ basename == from ? to : basename
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacFs
6
+ class Comparator
7
+ require_sub __FILE__, require_dependency: true
8
+
9
+ enable_immutable
10
+ immutable_accessor :rename_file, :truncate_file, type: :array
11
+
12
+ alias rename_file_push rename_file
13
+
14
+ def rename_file(from, to)
15
+ rename_file_push(::EacFs::Comparator::RenameFile.new(from, to))
16
+ end
17
+ end
18
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacFs
4
- VERSION = '0.12.3'
4
+ VERSION = '0.14.0'
5
5
  end
metadata CHANGED
@@ -1,57 +1,75 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_fs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.3
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-21 00:00:00.000000000 Z
11
+ date: 2022-10-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: content-type
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.0'
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
- version: '0'
22
+ version: 0.0.2
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.0'
24
30
  - - ">="
25
31
  - !ruby/object:Gem::Version
26
- version: '0'
32
+ version: 0.0.2
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: eac_ruby_utils
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: '0.70'
39
+ version: '0.106'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.106.1
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
47
  - - "~>"
39
48
  - !ruby/object:Gem::Version
40
- version: '0.70'
49
+ version: '0.106'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 0.106.1
41
53
  - !ruby/object:Gem::Dependency
42
54
  name: ruby-filemagic
43
55
  requirement: !ruby/object:Gem::Requirement
44
56
  requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '0.7'
45
60
  - - ">="
46
61
  - !ruby/object:Gem::Version
47
- version: '0'
62
+ version: 0.7.3
48
63
  type: :runtime
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.7'
52
70
  - - ">="
53
71
  - !ruby/object:Gem::Version
54
- version: '0'
72
+ version: 0.7.3
55
73
  - !ruby/object:Gem::Dependency
56
74
  name: eac_ruby_gem_support
57
75
  requirement: !ruby/object:Gem::Requirement
@@ -74,6 +92,9 @@ extra_rdoc_files: []
74
92
  files:
75
93
  - lib/eac_fs.rb
76
94
  - lib/eac_fs/cached_download.rb
95
+ - lib/eac_fs/comparator.rb
96
+ - lib/eac_fs/comparator/build.rb
97
+ - lib/eac_fs/comparator/rename_file.rb
77
98
  - lib/eac_fs/contexts.rb
78
99
  - lib/eac_fs/file_info.rb
79
100
  - lib/eac_fs/logs.rb