avm 0.66.1 → 0.67.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: 1dd452a1cb233171f982fb3da213367417fd59f801dd1313f069f3bfc7ad6037
4
- data.tar.gz: b6e05b77f939fa23af9cdf2c999b1e82f3f0dc18323393e62a38410cd012c363
3
+ metadata.gz: 03e18c1b8d8e141cb67d37f8eee123d44aa444003a48c4489176199861dcd326
4
+ data.tar.gz: 04b402c83045cb9749d82f67e5ca4be1cbbca3ff18eaa0560c1dc70fba24df72
5
5
  SHA512:
6
- metadata.gz: 6eebe945bf1be89d66779f9db42474cdefc734ca13d994301ba7f11df97b0087941c1c7c967e0973d32d99df8b70c4ecfcdb95296dac76a865398430ca4da409
7
- data.tar.gz: 5d347b0d68044bec6cee52df488fbe0ed4d3f760a1eaee225d1de4be7529e8b51dde5141e46bc530cfef31cdff372ee25b7ae064fc958113ecf94634e2c47412
6
+ metadata.gz: 86ba3db9f576a68044b0cdba24b58fca43c6251cbfea221cd6528af798e7e069e3eb8d0b5eac9c1af8d5e58a0cd274cea6e486d0a9326122a8f993417b46accc
7
+ data.tar.gz: f5358b5238bd19bf35d14d2c0252fe0e7b005041ec2fed97cb0ba5a99c56538f2c31e93eed851ee86392fbba70eec62de6c536956901f7056f19fa5c9e225643
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/fs/temp'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module Data
8
+ class Package
9
+ module BuildDirectory
10
+ private
11
+
12
+ attr_writer :build_directory
13
+
14
+ # @return [EacRubyUtils::Fs::Temp::Directory]
15
+ def build_directory
16
+ @build_directory || raise('@build_directory is blank')
17
+ end
18
+
19
+ def on_build_directory
20
+ ::EacRubyUtils::Fs::Temp.on_directory do |directory|
21
+ self.build_directory = directory
22
+ yield
23
+ end
24
+ end
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/build_directory'
3
4
  require 'avm/data/rotate'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
  require 'minitar'
@@ -10,6 +11,7 @@ module Avm
10
11
  class Dump
11
12
  enable_speaker
12
13
  enable_listable
14
+ include ::Avm::Data::Package::BuildDirectory
13
15
 
14
16
  DEFAULT_EXPIRE_TIME = 1.day
15
17
  DEFAULT_FILE_EXTENSION = '.tar'
@@ -45,8 +47,10 @@ module Avm
45
47
  def run
46
48
  raise "Cannot run: #{cannot_run_reason}" unless runnable?
47
49
 
48
- build_dir = dump_units_to_build_directory
49
- package_file = create_package_file(build_dir)
50
+ package_file = on_build_directory do
51
+ dump_units_to_build_directory
52
+ create_package_file
53
+ end
50
54
  rotate
51
55
  move_download_to_final_dest(package_file)
52
56
  end
@@ -100,15 +104,13 @@ module Avm
100
104
  end
101
105
 
102
106
  def dump_units_to_build_directory
103
- dir = ::Dir.mktmpdir
104
- package.dump_units_to_directory(dir)
105
- dir
107
+ package.dump_units_to_directory(build_directory)
106
108
  end
107
109
 
108
- def create_package_file(build_dir)
110
+ def create_package_file
109
111
  package_path = new_build_path
110
- infom "Creating package \"#{package_path}\" from \"#{build_dir}\"..."
111
- Dir.chdir(build_dir) do
112
+ infom "Creating package \"#{package_path}\" from \"#{build_directory}\"..."
113
+ ::Dir.chdir(build_directory.to_path) do
112
114
  ::Minitar.pack('.', File.open(::File.expand_path(package_path), 'wb'))
113
115
  end
114
116
  package_path
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/data/package/build_directory'
3
4
  require 'eac_ruby_utils/core_ext'
4
5
  require 'minitar'
5
6
 
@@ -8,13 +9,9 @@ module Avm
8
9
  class Package
9
10
  class Load
10
11
  enable_speaker
12
+ include ::Avm::Data::Package::BuildDirectory
11
13
 
12
- attr_reader :package, :data_file_path
13
-
14
- def initialize(package, data_file_path)
15
- @package = package
16
- @data_file_path = data_file_path
17
- end
14
+ common_constructor :package, :data_file_path
18
15
 
19
16
  def runnable?
20
17
  cannot_run_reason.blank?
@@ -29,8 +26,10 @@ module Avm
29
26
  def run
30
27
  raise "Cannot run: #{cannot_run_reason}" unless runnable?
31
28
 
32
- build_dir = extract_packages_to_build_directory
33
- package.load_units_from_directory(build_dir)
29
+ on_build_directory do
30
+ extract_packages_to_build_directory
31
+ package.load_units_from_directory(build_directory)
32
+ end
34
33
  end
35
34
 
36
35
  def data_file_exist?
@@ -38,9 +37,7 @@ module Avm
38
37
  end
39
38
 
40
39
  def extract_packages_to_build_directory
41
- dir = ::Dir.mktmpdir
42
- ::Minitar.unpack(data_file_path, dir)
43
- dir
40
+ ::Minitar.unpack(data_file_path, build_directory.to_path)
44
41
  end
45
42
  end
46
43
  end
@@ -18,8 +18,11 @@ module Avm
18
18
  end
19
19
  end
20
20
 
21
+ # @return [Avm::Data::Package] Return +self+.
21
22
  def add_unit(identifier, unit)
22
23
  units[identifier.to_sym] = unit
24
+
25
+ self
23
26
  end
24
27
 
25
28
  def dump(data_path, options = {})
data/lib/avm/data/unit.rb CHANGED
@@ -46,6 +46,11 @@ module Avm
46
46
  end
47
47
  end
48
48
 
49
+ # @return [Struct(:key, :subpath), nil]
50
+ def installation_files_data
51
+ nil
52
+ end
53
+
49
54
  def load(data_path)
50
55
  run_callbacks :load do
51
56
  infom "Loading unit \"#{name}\" from \"#{data_path}\"..."
@@ -39,10 +39,17 @@ module Avm
39
39
  instance_command('find', files_path, '-mindepth', 1, '-delete').execute!
40
40
  end
41
41
 
42
+ # @return [Struct(:key, :subpath), nil]
43
+ def installation_files_data
44
+ return nil unless fs_path_subpath.relative?
45
+
46
+ ::Struct.new(:key, :subpath).new(fs_path_subpath.basename.to_path, fs_path_subpath)
47
+ end
48
+
42
49
  # @return [EacRubyUtils::Envs::Command]
43
50
  def instance_command(*args)
44
51
  args = ['sudo', '-Hu', sudo_user] + args if sudo_user.present?
45
- instance.host_env.command(*args)
52
+ instance.host_env.command(*args).chdir('/')
46
53
  end
47
54
 
48
55
  # @return [String, nil]
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.66.1'
4
+ VERSION = '0.67.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.66.1
4
+ version: 0.67.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-04-05 00:00:00.000000000 Z
11
+ date: 2023-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-parsers
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.17'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.17.1
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0.17'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.17.1
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: eac_cli
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -245,6 +251,7 @@ files:
245
251
  - lib/avm/applications/base/stereotype.rb
246
252
  - lib/avm/data/callbacks.rb
247
253
  - lib/avm/data/package.rb
254
+ - lib/avm/data/package/build_directory.rb
248
255
  - lib/avm/data/package/dump.rb
249
256
  - lib/avm/data/package/load.rb
250
257
  - lib/avm/data/rotate.rb