avm 0.92.0 → 0.94.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 15b1096b5fdec594a25fe5197312d72392f7e46fece8012263421f80f2d827a4
4
- data.tar.gz: 49250daa335c7484229ad130bcb978133a0891bd7b9d41793ae20b8f85668e39
3
+ metadata.gz: 685447f38f30ac35c44b9863040c1159f9f6482d4b4f7da5371755bdeb07b60f
4
+ data.tar.gz: 4fa2fb246971340fddbab51a8d23256dc972442fb71e9d75bb141db6b10b3ab0
5
5
  SHA512:
6
- metadata.gz: fc2292dc7acbfbdef138d2e8a8c97e87f96f2e4947669c11f399f1fd3ab45b73f2808e43d29a9ed5fe24f320b61bf26876b7333cb9d1fd2c6ae50254ac2957d8
7
- data.tar.gz: 937555ba04232ed2364767d3420ccf4046096e5edeacfb378bb728afc7b296601ca97c94e739fd4fc7246dc306482af4980bb1a6cd0227cfa24ef2dc15cd59f6
6
+ metadata.gz: a5815972de0a71ee75afa4957c9467a2b7aa6ee2de7ed4f4f12f800bbb13d92c4ce2db3d255a135806ae72099fadad20ec42a9258ee2a9c69b1b853dfdab4c0a
7
+ data.tar.gz: 6a9d84303d007faa4d359d156f65a38c955f6fa3946d233a2bde65bf99ec846ac61c8f4bf307787e47020936b97ae61547826d611a4ece0939b569ec361e1133
@@ -22,6 +22,11 @@ module Avm
22
22
  context_entry.found?
23
23
  end
24
24
 
25
+ # @return [Boolean]
26
+ def found?
27
+ context_found?
28
+ end
29
+
25
30
  def full_path
26
31
  (parent.path_prefix + suffix_as_array).join('.')
27
32
  end
@@ -18,6 +18,11 @@ module Avm
18
18
  )
19
19
  end
20
20
  end
21
+
22
+ # @return [Boolean]
23
+ def auto_data_allow_loading
24
+ local? || !production?
25
+ end
21
26
  end
22
27
  end
23
28
  end
@@ -1,12 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/applications/base/local_instance'
4
+
3
5
  module Avm
4
6
  module Instances
5
7
  class Base
6
8
  module AutoValues
7
9
  module Source
8
10
  def auto_source_instance_id
9
- "#{application.id}_dev"
11
+ [application.id, ::Avm::Applications::Base::LocalInstance::LOCAL_INSTANCE_SUFFIX]
12
+ .join('_')
10
13
  end
11
14
  end
12
15
  end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'addressable'
4
+ require 'avm/instances/entry_keys'
5
+
6
+ module Avm
7
+ module Instances
8
+ class Base
9
+ module Production
10
+ DEFAULT_PRODUCTION = true
11
+ PRODUCTION_KEY = 'production'
12
+
13
+ # @return [Boolean]
14
+ def default_production?
15
+ DEFAULT_PRODUCTION
16
+ end
17
+
18
+ # @return [Boolean]
19
+ def production?
20
+ if production_entry.found?
21
+ production_entry.value.to_bool
22
+ else
23
+ default_production?
24
+ end
25
+ end
26
+
27
+ # @return [Avm::Entries::Entry]
28
+ def production_entry
29
+ entry(PRODUCTION_KEY)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'avm/instances/ids'
4
+ require 'avm/applications/base/local_instance'
4
5
  require 'avm/with/application_stereotype'
5
6
  require 'avm/with/extra_subcommands'
6
7
  require 'eac_ruby_utils/require_sub'
@@ -61,6 +62,11 @@ module Avm
61
62
  end
62
63
  end
63
64
 
65
+ # @return [Boolean]
66
+ def local?
67
+ suffix == ::Avm::Applications::Base::LocalInstance::LOCAL_INSTANCE_SUFFIX
68
+ end
69
+
64
70
  private
65
71
 
66
72
  def source_instance_uncached
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ module Data
6
+ class LoadingDeniedError < ::RuntimeError
7
+ end
8
+ end
9
+ end
10
+ end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'avm/data/unit_with_commands'
4
+ require 'avm/instances/data/loading_denied_error'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
 
6
7
  module Avm
@@ -9,6 +10,14 @@ module Avm
9
10
  class Unit < ::Avm::Data::UnitWithCommands
10
11
  common_constructor :instance
11
12
 
13
+ # @return [void]
14
+ # @raise Avm::Instances::Data::Unit
15
+ def check_load_permission!
16
+ return if instance.data_allow_loading
17
+
18
+ raise ::Avm::Instances::Data::LoadingDeniedError, "Instance: #{instance}"
19
+ end
20
+
12
21
  # @return [Pathname]
13
22
  def data_default_dump_path
14
23
  instance.data_default_dump_path.to_pathname.basename_sub('.*') do |b|
@@ -22,6 +31,7 @@ module Avm
22
31
  end
23
32
 
24
33
  def load(...)
34
+ check_load_permission!
25
35
  instance.on_disabled_processes { super }
26
36
  end
27
37
  end
@@ -28,7 +28,7 @@ module Avm
28
28
  {
29
29
  '' => %w[name source_instance_id],
30
30
  admin: URI_FIELDS + %w[api_key],
31
- data: %w[default_dump_path],
31
+ data: %w[allow_loading default_dump_path],
32
32
  database: URI_FIELDS + %w[id limit name system timeout extra],
33
33
  docker: %w[registry],
34
34
  install: URI_FIELDS + %w[id data_path email groupname],
@@ -78,11 +78,6 @@ module Avm
78
78
  send("default_#{key}".underscore)
79
79
  end
80
80
 
81
- # @return [String]
82
- def default_projects_root
83
- '.'.to_pathname.expand_path.to_path
84
- end
85
-
86
81
  def default_settings_file
87
82
  ::File.join(::EacFs::Contexts.config.current.path, 'launcher.yaml')
88
83
  end
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/launcher/context'
4
+ require 'eac_config/node'
5
+ require 'eac_ruby_utils/core_ext'
6
+ require 'fileutils'
7
+ require 'ruby-progressbar'
8
+ require 'tmpdir'
9
+
10
+ module Avm
11
+ module Rspec
12
+ class LauncherController
13
+ attr_accessor :remotes_dir
14
+
15
+ # @param application_id [String]
16
+ # @param path [Pathname]
17
+ # @return void
18
+ def application_source_path(application_id, path)
19
+ EacConfig::Node.context.current.entry("#{application_id}_dev.install.path").value =
20
+ path.to_pathname.to_path
21
+ end
22
+
23
+ # @param settings_path [Pathname]
24
+ # @param projects_root [Pathname]
25
+ def context_set(settings_path, projects_root)
26
+ Avm::Launcher::Context.current = Avm::Launcher::Context.new(
27
+ settings_file: settings_path.to_pathname.to_path,
28
+ cache_root: Dir.mktmpdir
29
+ )
30
+ self.projects_root = projects_root
31
+ end
32
+
33
+ # @return [Pathname]
34
+ def default_settings_path
35
+ templates_directory.join('settings.yml')
36
+ end
37
+
38
+ # @return [Pathname]
39
+ def dummy_directory
40
+ templates_directory.join('dummy')
41
+ end
42
+
43
+ # @param settings_path [Pathname]
44
+ def temp_context(settings_path)
45
+ context_set(settings_path, Dir.mktmpdir)
46
+ end
47
+
48
+ def init_remote(name)
49
+ require 'avm/git/launcher/base'
50
+ r = Avm::Git::Launcher::Base.new(File.join(remotes_dir, name))
51
+ r.init_bare
52
+ r
53
+ end
54
+
55
+ def init_git(subdir)
56
+ require 'avm/git/launcher/base'
57
+ r = Avm::Git::Launcher::Base.new(File.join(projects_root, subdir))
58
+ r.git
59
+ r.execute!('config', 'user.email', 'theuser@example.net')
60
+ r.execute!('config', 'user.name', 'The User')
61
+ r
62
+ end
63
+
64
+ # @return [Avm::Launcher::Context]
65
+ def new_context
66
+ Avm::Launcher::Context.new(
67
+ settings_file: default_settings_path,
68
+ cache_root: Dir.mktmpdir
69
+ )
70
+ end
71
+
72
+ # @param path [String]
73
+ def projects_root
74
+ @projects_root ||= Dir.mktmpdir
75
+ end
76
+
77
+ # @param path [Pathname]
78
+ def projects_root=(path)
79
+ @projects_root = path.to_pathname.to_path
80
+ end
81
+
82
+ # @return [Pathname]
83
+ def templates_directory
84
+ '../../../template/avm/rspec/launcher_controller'.to_pathname.expand_path(__dir__)
85
+ end
86
+
87
+ def touch_commit(repos, subpath)
88
+ require 'fileutils'
89
+ FileUtils.mkdir_p(File.dirname(repos.subpath(subpath)))
90
+ FileUtils.touch(repos.subpath(subpath))
91
+ repos.execute!('add', repos.subpath(subpath))
92
+ repos.execute!('commit', '-m', subpath)
93
+ end
94
+ end
95
+ end
96
+ end
@@ -9,7 +9,7 @@ module Avm
9
9
  require_sub __FILE__
10
10
  EXAMPLES = %w[avm_file_formats_with_fixtures avm_file_format_file_resource_name
11
11
  avm_source_generated entries_values in_avm_registry not_in_avm_registry
12
- with_config].freeze
12
+ with_config with_launcher].freeze
13
13
 
14
14
  def self.extended(obj)
15
15
  obj.setup_examples
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/rspec/launcher_controller'
4
+
5
+ RSpec.shared_context 'with_launcher' do
6
+ let(:launcher_controller) { Avm::Rspec::LauncherController.new }
7
+
8
+ before do
9
+ Avm::Launcher::Context.current = launcher_controller.new_context
10
+ launcher_controller.remotes_dir = Dir.mktmpdir
11
+ allow(ProgressBar).to receive(:create).and_return(double.as_null_object)
12
+ end
13
+
14
+ delegate :application_source_path, :context_set, :init_git, :init_remote, :temp_context,
15
+ :projects_root, :projects_root=, :touch_commit, to: :launcher_controller
16
+ end
data/lib/avm/scms/base.rb CHANGED
@@ -12,7 +12,7 @@ module Avm
12
12
  include ::Avm::With::ApplicationStereotype
13
13
  abstract_methods :update, :valid?
14
14
  common_constructor :path do
15
- self.path = path.to_pathname
15
+ self.path = path.to_pathname.expand_path
16
16
  end
17
17
 
18
18
  # @return [Avm::Scms::ChangedFile]
@@ -11,7 +11,7 @@ module Avm
11
11
  # @param source [Avm::Sources::Base]
12
12
  # @param sub_path [Pathname]
13
13
  common_constructor :source, :sub_path do
14
- self.sub_path = sub_path.to_pathname
14
+ self.sub_path = sub_path.to_pathname.cleanpath
15
15
  end
16
16
 
17
17
  # @return [Pathname]
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.92.0'
4
+ VERSION = '0.94.0'
5
5
  end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
+
5
+ # Maintain your gem's version:
6
+ require 'avm/tools/version'
7
+
8
+ # Describe your gem and declare its dependencies:
9
+ Gem::Specification.new do |s|
10
+ s.name = 'avm/tools'
11
+ s.version = Avm::Tools::VERSION
12
+ s.authors = ['Esquilo Azul Company']
13
+ s.summary = 'Utilities to deploy applications and libraries.'
14
+ s.license = 'MIT'
15
+
16
+ s.files = Dir['{exe,lib}/**/*', 'Gemfile', 'MIT-LICENSE', 'README.rdoc']
17
+ s.required_ruby_version = '>= 2.7.0'
18
+ s.bindir = 'exe'
19
+ s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+
21
+ s.add_dependency 'activesupport', '~> 4.2', '>= 4.2.10'
22
+ s.add_dependency 'colorize', '~> 0.8.1'
23
+ s.add_dependency 'curb', '~> 0.9.4'
24
+ s.add_dependency 'eac_rails_utils', '~> 0.1', '>= 0.1.14'
25
+ s.add_dependency 'eac_ruby_utils', '~> 0.1'
26
+ s.add_dependency 'git', '~> 1.3.0'
27
+ s.add_development_dependency 'rspec', '~> 3.7'
28
+ s.add_development_dependency 'rubocop', '~> 0.48.1'
29
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Tools
5
+ VERSION = '1.0.0.pre.stub'
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Tools
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyGemStub
4
+ VERSION = '1.0.0.pre.stub'
5
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyGemStub; end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
+
5
+ # Maintain your gem's version:
6
+ require 'ruby_gem_stub/version'
7
+
8
+ # Describe your gem and declare its dependencies:
9
+ Gem::Specification.new do |s|
10
+ s.name = 'ruby_gem_stub'
11
+ s.version = RubyGemStub::VERSION
12
+ s.authors = ['Esquilo Azul Company']
13
+ s.summary = 'Ruby gem stub for tests.'
14
+ s.files = Dir['{lib}/**/*']
15
+ s.required_ruby_version = '>= 2.7.0'
16
+ 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.92.0
4
+ version: 0.94.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-05-29 00:00:00.000000000 Z
11
+ date: 2024-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_cli
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.41'
19
+ version: '0.42'
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.41'
26
+ version: '0.42'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: eac_config
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -64,14 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.17'
67
+ version: '0.18'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.17'
74
+ version: '0.18'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: eac_ruby_utils
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -93,6 +93,9 @@ dependencies:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0.7'
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 0.7.1
96
99
  type: :runtime
97
100
  prerelease: false
98
101
  version_requirements: !ruby/object:Gem::Requirement
@@ -100,6 +103,9 @@ dependencies:
100
103
  - - "~>"
101
104
  - !ruby/object:Gem::Version
102
105
  version: '0.7'
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 0.7.1
103
109
  - !ruby/object:Gem::Dependency
104
110
  name: minitar
105
111
  requirement: !ruby/object:Gem::Requirement
@@ -257,10 +263,12 @@ files:
257
263
  - lib/avm/instances/base/entry_keys.rb
258
264
  - lib/avm/instances/base/install.rb
259
265
  - lib/avm/instances/base/processes.rb
266
+ - lib/avm/instances/base/production.rb
260
267
  - lib/avm/instances/base/subcommand_parent.rb
261
268
  - lib/avm/instances/base/web.rb
262
269
  - lib/avm/instances/data.rb
263
270
  - lib/avm/instances/data/files_unit.rb
271
+ - lib/avm/instances/data/loading_denied_error.rb
264
272
  - lib/avm/instances/data/package.rb
265
273
  - lib/avm/instances/data/unit.rb
266
274
  - lib/avm/instances/docker_image.rb
@@ -317,6 +325,7 @@ files:
317
325
  - lib/avm/registry/with_path/cache.rb
318
326
  - lib/avm/result.rb
319
327
  - lib/avm/rspec.rb
328
+ - lib/avm/rspec/launcher_controller.rb
320
329
  - lib/avm/rspec/setup.rb
321
330
  - lib/avm/rspec/setup/launcher.rb
322
331
  - lib/avm/rspec/setup/source_generator.rb
@@ -327,6 +336,7 @@ files:
327
336
  - lib/avm/rspec/shared_examples/in_avm_registry.rb
328
337
  - lib/avm/rspec/shared_examples/not_in_avm_registry.rb
329
338
  - lib/avm/rspec/shared_examples/with_config.rb
339
+ - lib/avm/rspec/shared_examples/with_launcher.rb
330
340
  - lib/avm/runners/base.rb
331
341
  - lib/avm/scms.rb
332
342
  - lib/avm/scms/auto_commit.rb
@@ -399,6 +409,13 @@ files:
399
409
  - lib/avm/with/extra_subcommands.rb
400
410
  - locale/en.yml
401
411
  - locale/pt-BR.yml
412
+ - template/avm/rspec/launcher_controller/dummy/avm-tools_stub/avm-tools.gemspec
413
+ - template/avm/rspec/launcher_controller/dummy/avm-tools_stub/lib/avm/tools.rb
414
+ - template/avm/rspec/launcher_controller/dummy/avm-tools_stub/lib/avm/tools/version.rb
415
+ - template/avm/rspec/launcher_controller/dummy/ruby_gem_stub/lib/ruby_gem_stub.rb
416
+ - template/avm/rspec/launcher_controller/dummy/ruby_gem_stub/lib/ruby_gem_stub/version.rb
417
+ - template/avm/rspec/launcher_controller/dummy/ruby_gem_stub/ruby_gem_stub.gemspec
418
+ - template/avm/rspec/launcher_controller/settings.yml
402
419
  - template/avm/self/docker_image/Dockerfile
403
420
  - template/avm/self/docker_image/entrypoint.sh
404
421
  homepage: