avm 0.90.1 → 0.91.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: df9c4437aefbdf73bfb8400b858046e1fe62d016f2a34f59e7dd9a5e73242048
4
- data.tar.gz: ad8db14ba70cafa75e13d8b12b3ff0b4c3b0ae041ba00e650671809610118068
3
+ metadata.gz: 24587b61abe782918bcfe1b372328d0e9f9ca88db23c9c3990883a8cd88d444b
4
+ data.tar.gz: 2b1f1f7d2aa5cb42e8ca326d659b7b749aa7f50278c81347432dbc4e68a32b8d
5
5
  SHA512:
6
- metadata.gz: 4746c4276ceddd25671695ccf8e52109c5817018dab1130919b7f7261f9e645e59e93ad5307dee32dc370d8dbc66592df5a98e46db4145aa81decfeea0f44dbe
7
- data.tar.gz: 5c135e4dbbd75af455e2330b14660bedc236233805cbe181c415ace85f4f31c9727b817eb1d59b616501e0b87d59a73cef8529cb44b6f06bd605608448d68dc4
6
+ metadata.gz: c97c2ad6f2857a9b6ccf70f0854b02e39cda4c555aec46174fc7a19ab41f440e7a1b505f6e3c1f377423efad38738a8e843417b30038dda054f151715402401e
7
+ data.tar.gz: b0231edc3a011674a2c2cbf048ad4efc66139171f91798e175dc867f889b94888d4086350f27a916f94471956f3f366e0242ffb7c832b9e0ae37589fd6647828
@@ -10,7 +10,7 @@ module Avm
10
10
  module LocalSource
11
11
  # @return [Pathname]
12
12
  def local_source_path
13
- (local_source_path_entry.value || auto_local_source_path).to_pathname
13
+ user_local_source_path || auto_local_source_path
14
14
  end
15
15
 
16
16
  # @return [EacConfig::Entry]
@@ -18,6 +18,11 @@ module Avm
18
18
  ::EacConfig::Node.context.current.entry([local_instance_id, 'install', 'path'])
19
19
  end
20
20
 
21
+ # @return [Path, nil]
22
+ def user_local_source_path
23
+ local_source_path_entry.value.if_present(&:to_pathname)
24
+ end
25
+
21
26
  private
22
27
 
23
28
  # @return [Avm::Sources::Base]
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ruby-progressbar'
4
+ require 'avm/launcher/instances/base'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module Launcher
9
+ class Context
10
+ class InstanceDiscovery
11
+ class RootInstancePaths
12
+ acts_as_instance_method
13
+ enable_speaker
14
+
15
+ common_constructor :owner
16
+
17
+ # @return [Array<Avm::Launcher::Paths::Logical>]
18
+ def result
19
+ application_user_local_source_paths.map do |path|
20
+ ::Avm::Launcher::Paths::Logical.new(owner.context, nil, path.to_path,
21
+ "/#{path.basename}")
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ # @param application [Avm::Applications::Base]
28
+ # @return [Pathname, nil]
29
+ def application_user_local_source_path(application) # rubocop:disable Metrics/MethodLength
30
+ if application.user_local_source_path.blank?
31
+ warn "Application \"#{application}\" does not have a user local source set"
32
+ nil
33
+ elsif application.user_local_source_path.directory?
34
+ infov application,
35
+ "user local source found in \"#{application.user_local_source_path}"
36
+ application.user_local_source_path
37
+ else
38
+ warn "Application \"#{application}\"'s local source path is not a directory"
39
+ nil
40
+ end
41
+ end
42
+
43
+ # @return [Array<Pathname>]
44
+ def application_user_local_source_paths
45
+ ::Avm::Registry.applications.available.sort_by { |a| [a.id] }.map do |application|
46
+ application_user_local_source_path(application)
47
+ end.compact_blank.uniq.sort
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -2,23 +2,34 @@
2
2
 
3
3
  require 'ruby-progressbar'
4
4
  require 'avm/launcher/instances/base'
5
+ require 'eac_ruby_utils/core_ext'
5
6
 
6
7
  module Avm
7
8
  module Launcher
8
9
  class Context
9
10
  class InstanceDiscovery
10
- attr_reader :instances
11
+ enable_simple_cache
11
12
 
12
- def initialize(context)
13
- @context = context
13
+ # @!method instances
14
+ # @return [Array<Avm::Launcher::Instances::Base>]
15
+
16
+ # @!method initialize(context)
17
+ # @param context [Avm::Launcher::Context]
18
+ common_constructor :context
19
+
20
+ private
21
+
22
+ # @return [Array<Avm::Launcher::Instances::Base>]
23
+ def instances_uncached
14
24
  @progress = ::ProgressBar.create(title: 'Instance discovery', total: 1)
15
- @instances = path_instances(@context.root, nil)
25
+ root_instance_paths.flat_map { |path| path_instances(path, nil) }
16
26
  ensure
17
27
  @progress&.finish
18
28
  end
19
29
 
20
- private
21
-
30
+ # @param path [Avm::Launcher::Paths::Logical]
31
+ # @param parent_instance [Avm::Launcher::Instances::Base]
32
+ # @return [Array<Avm::Launcher::Instances::Base>]
22
33
  def path_instances(path, parent_instance)
23
34
  update_progress_format(path)
24
35
  on_rescued_path_instances(path) do |r|
@@ -32,6 +43,8 @@ module Avm
32
43
  end
33
44
  end
34
45
 
46
+ # @param path [Avm::Launcher::Paths::Logical]
47
+ # @return [Array<Avm::Launcher::Instances::Base>]
35
48
  def on_rescued_path_instances(path)
36
49
  r = []
37
50
  begin
@@ -42,14 +55,20 @@ module Avm
42
55
  r
43
56
  end
44
57
 
58
+ # @param path [Avm::Launcher::Paths::Logical]
59
+ # @return [void]
45
60
  def update_progress_format(path)
46
61
  @progress.format = "%t (Paths: %c/%C, Current: #{path.logical}) |%B| %a"
47
62
  end
48
63
 
64
+ # @param path [Array<Avm::Launcher::Paths::Logical>]
65
+ # @return [void]
49
66
  def update_progress_count(children)
50
67
  @progress.total += children.count
51
68
  @progress.increment
52
69
  end
70
+
71
+ require_sub __FILE__, require_mode: :kernel
53
72
  end
54
73
  end
55
74
  end
@@ -29,14 +29,14 @@ module Avm
29
29
  end
30
30
  end
31
31
 
32
- attr_reader :root, :settings, :cache_root
32
+ attr_reader :settings, :cache_root
33
33
  attr_accessor :publish_options, :recache, :instance_manager
34
34
 
35
35
  CONFIG_PATH_PREFIX = 'launcher'
36
+ FS_OBJECT_ID = 'unique'
36
37
 
37
38
  def initialize(options = {})
38
39
  @options = options.with_indifferent_access
39
- @root = ::Avm::Launcher::Paths::Logical.new(self, nil, build_option(:projects_root), '/')
40
40
  @settings = ::Avm::Launcher::Context::Settings.new(build_option(:settings_file))
41
41
  @cache_root = build_option(:cache_root)
42
42
  @publish_options = { new: false, confirm: false, stereotype: nil }
@@ -45,7 +45,7 @@ module Avm
45
45
  end
46
46
 
47
47
  def fs_object_id
48
- root.real.variableize
48
+ FS_OBJECT_ID
49
49
  end
50
50
 
51
51
  def instance(name)
@@ -8,7 +8,8 @@ module Avm
8
8
  module Setup
9
9
  require_sub __FILE__
10
10
  EXAMPLES = %w[avm_file_formats_with_fixtures avm_file_format_file_resource_name
11
- avm_source_generated entries_values in_avm_registry not_in_avm_registry].freeze
11
+ avm_source_generated entries_values in_avm_registry not_in_avm_registry
12
+ with_config].freeze
12
13
 
13
14
  def self.extended(obj)
14
15
  obj.setup_examples
@@ -4,9 +4,7 @@ require 'eac_ruby_utils/core_ext'
4
4
 
5
5
  RSpec.shared_examples 'entries_values' do |spec_file, expected_values|
6
6
  describe '#read_entry' do
7
- config_path = spec_file.to_pathname
8
- config_path = config_path.dirname.join("#{config_path.basename_noext}_files", 'config.yml')
9
- EacRubyUtils::Rspec.default_setup.stub_eac_config_node(self, config_path)
7
+ include_examples 'with_config', spec_file
10
8
 
11
9
  expected_values.each do |instance_id, values|
12
10
  values.each do |input, expected|
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ RSpec.shared_examples 'with_config' do |spec_file|
6
+ config_path = spec_file.to_pathname
7
+ config_path = config_path.dirname.join("#{config_path.basename_noext}_files", 'config.yml')
8
+ temp_config_path = EacRubyUtils::Fs::Temp.file
9
+ FileUtils.cp(config_path, temp_config_path)
10
+ EacRubyUtils::Rspec.default_setup.stub_eac_config_node(self, temp_config_path)
11
+ end
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.90.1'
4
+ VERSION = '0.91.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.90.1
4
+ version: 0.91.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: 2024-04-10 00:00:00.000000000 Z
11
+ date: 2024-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_cli
@@ -284,6 +284,7 @@ files:
284
284
  - lib/avm/launcher/context.rb
285
285
  - lib/avm/launcher/context/instance_collector.rb
286
286
  - lib/avm/launcher/context/instance_discovery.rb
287
+ - lib/avm/launcher/context/instance_discovery/root_instance_paths.rb
287
288
  - lib/avm/launcher/context/instance_manager.rb
288
289
  - lib/avm/launcher/context/instance_manager/cached_instance.rb
289
290
  - lib/avm/launcher/context/instance_manager/cached_instances.rb
@@ -337,6 +338,7 @@ files:
337
338
  - lib/avm/rspec/shared_examples/entries_values.rb
338
339
  - lib/avm/rspec/shared_examples/in_avm_registry.rb
339
340
  - lib/avm/rspec/shared_examples/not_in_avm_registry.rb
341
+ - lib/avm/rspec/shared_examples/with_config.rb
340
342
  - lib/avm/runners/base.rb
341
343
  - lib/avm/scms.rb
342
344
  - lib/avm/scms/auto_commit.rb