avm 0.74.0 → 0.75.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: 69fd41323b3ec2e08b3339520c7ac89b6a0a1f8504f662033e68f9a5f8d43eed
4
- data.tar.gz: 32aa288f19bcfc07f494479e1c1fe04c660d77fdc3435e63c81ff9beb1ea97b2
3
+ metadata.gz: 283b2992d153ecb696d270dca06440c1211ad0986d2bcccbba13d59880ec8241
4
+ data.tar.gz: df2da2e866a10834d9b2d7c07e921f332de3b64937592bad04eb0c334cd1b3a6
5
5
  SHA512:
6
- metadata.gz: 9fac0d42acc16cc1cf70b6c5331c20171356354400de3473aa5341d8b2c01d7b6c6ea168778359d50a867e6637678b5ad85f0f8ccc7aa5ff44f5c126728576a1
7
- data.tar.gz: 36ae852382bacaeb8918cb351d3e9a7bff8db59476bd8ca3fa1ec88fcb20dbcad5546027b5b49a5789387017d59b1cc7b0d40fedb0c20c20f2234a0a3a28cf25
6
+ metadata.gz: 57b1246b460a76df268e0b1021e27e7a38ba6056225b5c363fa8ad53b52d5ec09d092518709060cab4fc8b472cce619d8a8b84ed9ff398e502ee5b827613d40b
7
+ data.tar.gz: 4552cfce3a392507c560938a8ae956278fe03b335d50c5213e4aecfde007b5beaa66012fc0c32a24ab0736f2dae4b5b85e0b3310c7c803a96c6d74e240fae775
@@ -9,22 +9,17 @@ module Avm
9
9
  module Data
10
10
  class Dumper < ::Avm::Data::Performer
11
11
  DEFAULT_EXPIRE_TIME = 1.day
12
+ DEFAULT_OVERWRITE = false
13
+ DEFAULT_ROTATE = true
12
14
 
13
15
  enable_speaker
14
16
  enable_listable
15
- lists.add_symbol :existing, :denied, :overwrite, :rotate, :rotate_expired
16
- immutable_accessor :existing, :expire_time, :target_path
17
+ immutable_accessor :expire_time, :target_path
18
+ immutable_accessor :overwrite, :rotate, type: :boolean
17
19
 
18
- # @return [String, nil]
20
+ # @return [nil]
19
21
  def cannot_perform_reason
20
- return nil if !target_path.exist? ||
21
- [EXISTING_OVERWRITE, EXISTING_ROTATE].include?(existing)
22
-
23
- if existing == EXISTING_DENIED
24
- 'Data exist and overwriting is denied'
25
- elsif existing == EXISTING_ROTATE_EXPIRED && !target_path_expired?
26
- 'Data exist and yet is not expired'
27
- end
22
+ nil
28
23
  end
29
24
 
30
25
  # @return [Pathname]
@@ -37,7 +32,7 @@ module Avm
37
32
 
38
33
  # @return [Boolean]
39
34
  def target_path_expired?
40
- target_path_time.if_present(false) { |v| v >= expire_time }
35
+ target_path_time.if_present(true) { |v| v >= expire_time }
41
36
  end
42
37
 
43
38
  # @return [ActiveSupport::Duration, nil]
@@ -60,16 +55,20 @@ module Avm
60
55
  raise "\"#{temp_data_path}\" is not a file" unless temp_data_path.file?
61
56
  end
62
57
 
58
+ # @return [String, nil]
59
+ def do_rotate
60
+ return unless target_path.exist?
61
+ return unless rotate?
62
+
63
+ infom "Rotating \"#{target_path}\"..."
64
+ ::Avm::Data::Rotate.new(target_path).run
65
+ end
66
+
63
67
  # @return [Array<Symbol>]
64
68
  def excluded_units
65
69
  excludes.map(&:to_sym).sort
66
70
  end
67
71
 
68
- # @return [Symbol, nil]
69
- def existing_set_filter(value)
70
- value.nil? ? nil : self.class.lists.existing.value_validate!(value)
71
- end
72
-
73
72
  # @return [ActiveSupport::Duration]
74
73
  def expire_time_get_filter(value)
75
74
  value || DEFAULT_EXPIRE_TIME
@@ -91,13 +90,21 @@ module Avm
91
90
 
92
91
  # @return [self]
93
92
  def internal_perform
93
+ use_current? ? internal_perform_use_current : internal_perform_new
94
+ end
95
+
96
+ def internal_perform_new
94
97
  on_temp_data_file do
95
98
  build_temp_data_file
96
- rotate
99
+ do_rotate
97
100
  move_data_to_target_path
98
101
  end
99
102
  end
100
103
 
104
+ def internal_perform_use_current
105
+ infom "Dump \"#{target_path}\" exists and is unexpired"
106
+ end
107
+
101
108
  def move_data_to_target_path
102
109
  ::FileUtils.mv(temp_data_path, target_path.assert_parent)
103
110
  end
@@ -109,19 +116,27 @@ module Avm
109
116
  end
110
117
  end
111
118
 
112
- # @return [String, nil]
113
- def rotate
114
- return unless target_path.exist?
115
- return unless existing == EXISTING_ROTATE
119
+ # @return [Boolean]
120
+ def overwrite_get_filter(value)
121
+ value.nil? ? DEFAULT_OVERWRITE : value
122
+ end
116
123
 
117
- infom "Rotating \"#{target_path}\"..."
118
- ::Avm::Data::Rotate.new(target_path).run
124
+ def rotate_get_filter(value)
125
+ value.nil? ? DEFAULT_ROTATE : value
119
126
  end
120
127
 
121
128
  # @return [Pathname]
122
129
  def target_path_get_filter(value)
123
130
  (value || default_dump_path).to_pathname
124
131
  end
132
+
133
+ # @return [Boolean]
134
+ def use_current?
135
+ return false unless target_path.exist?
136
+ return false if overwrite?
137
+
138
+ !target_path_expired?
139
+ end
125
140
  end
126
141
  end
127
142
  end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/data/performer'
4
+ require 'avm/data/rotate'
5
+ require 'eac_ruby_utils/core_ext'
6
+ require 'eac_ruby_utils/fs/temp'
7
+
8
+ module Avm
9
+ module Data
10
+ class Loader < ::Avm::Data::Performer
11
+ immutable_accessor :source_path
12
+
13
+ # @return [String, nil]
14
+ def cannot_perform_reason
15
+ return 'Source path not set' if source_path.blank?
16
+ return "\"#{source_path}\" is not a file" unless source_path.file?
17
+
18
+ nil
19
+ end
20
+
21
+ protected
22
+
23
+ def internal_perform
24
+ data_owner.load(source_path, *include_excludes_arguments)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/data/package/base_performer'
3
4
  require 'avm/data/package/build_directory'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
  require 'minitar'
@@ -7,37 +8,27 @@ require 'minitar'
7
8
  module Avm
8
9
  module Data
9
10
  class Package
10
- class Load
11
+ class Load < ::Avm::Data::Package::BasePerformer
12
+ enable_method_class
11
13
  enable_speaker
12
14
  include ::Avm::Data::Package::BuildDirectory
13
15
 
14
- common_constructor :package, :data_file_path
16
+ attr_reader :source_path
15
17
 
16
- def runnable?
17
- cannot_run_reason.blank?
18
+ def initialize(package, source_path, options = {})
19
+ super(package, options)
20
+ @source_path = source_path.to_pathname
18
21
  end
19
22
 
20
- def cannot_run_reason
21
- return nil if data_file_exist?
22
-
23
- "Data file \"#{data_file_path}\" does not exist"
24
- end
25
-
26
- def run
27
- raise "Cannot run: #{cannot_run_reason}" unless runnable?
28
-
23
+ def result
29
24
  on_build_directory do
30
25
  extract_packages_to_build_directory
31
- package.load_units_from_directory(build_directory)
26
+ package.load_units_from_directory(build_directory, selected_units)
32
27
  end
33
28
  end
34
29
 
35
- def data_file_exist?
36
- ::File.exist?(data_file_path)
37
- end
38
-
39
30
  def extract_packages_to_build_directory
40
- ::Minitar.unpack(data_file_path, build_directory.to_path)
31
+ ::Minitar.unpack(source_path.to_path, build_directory.to_path)
41
32
  end
42
33
  end
43
34
  end
@@ -32,10 +32,6 @@ module Avm
32
32
  DATA_FILE_EXTENSION
33
33
  end
34
34
 
35
- def load(data_path)
36
- ::Avm::Data::Package::Load.new(self, data_path)
37
- end
38
-
39
35
  def dump_units_to_directory(directory, selected_units = nil)
40
36
  run_callbacks :dump do
41
37
  (selected_units || units).each do |identifier, unit|
@@ -44,9 +40,11 @@ module Avm
44
40
  end
45
41
  end
46
42
 
47
- def load_units_from_directory(directory)
43
+ def load_units_from_directory(directory, selected_units = nil)
48
44
  run_callbacks :load do
49
- units.each { |identifier, unit| unit.load_from_directory(directory, identifier) }
45
+ (selected_units || units).each do |identifier, unit|
46
+ unit.load_from_directory(directory, identifier)
47
+ end
50
48
  end
51
49
  end
52
50
 
@@ -19,7 +19,7 @@ module Avm
19
19
 
20
20
  # @return [self]
21
21
  def perform
22
- raise "Cannot run: #{cannot_run_reason}" unless performable?
22
+ raise "Cannot run: #{cannot_perform_reason}" unless performable?
23
23
 
24
24
  internal_perform
25
25
 
data/lib/avm/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Avm
4
- VERSION = '0.74.0'
4
+ VERSION = '0.75.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.74.0
4
+ version: 0.75.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-21 00:00:00.000000000 Z
11
+ date: 2023-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-parsers
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.18'
19
+ version: '0.19'
20
20
  type: :runtime
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: '0.18'
26
+ version: '0.19'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: eac_cli
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -234,6 +234,7 @@ files:
234
234
  - lib/avm/data/callbacks.rb
235
235
  - lib/avm/data/clearer.rb
236
236
  - lib/avm/data/dumper.rb
237
+ - lib/avm/data/loader.rb
237
238
  - lib/avm/data/package.rb
238
239
  - lib/avm/data/package/base_performer.rb
239
240
  - lib/avm/data/package/build_directory.rb