eac_tools 0.48.0 → 0.48.1

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +22 -17
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/avm-eac_postgresql_base0/avm-eac_postgresql_base0.gemspec +1 -1
  5. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance/data_unit.rb +13 -7
  6. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance.rb +16 -1
  7. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/version.rb +1 -1
  8. data/sub/avm-eac_ubuntu_base0/Gemfile +5 -0
  9. data/sub/avm-eac_ubuntu_base0/avm-eac_ubuntu_base0.gemspec +21 -0
  10. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/apache/resource.rb +59 -0
  11. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/apache.rb +26 -0
  12. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/docker_image.rb +29 -0
  13. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/instances/base.rb +22 -0
  14. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/instances.rb +11 -0
  15. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/rspec/ssh_docker_server.rb +84 -0
  16. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/rspec.rb +11 -0
  17. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/runners/base/docker.rb +19 -0
  18. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/runners/base.rb +28 -0
  19. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/version.rb +7 -0
  20. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0.rb +9 -0
  21. data/sub/avm-eac_ubuntu_base0/spec/lib/avm/eac_ubuntu_base0/docker_image_spec.rb +16 -0
  22. data/sub/avm-eac_ubuntu_base0/spec/lib/avm/eac_ubuntu_base0/runners/base/docker_spec.rb +14 -0
  23. data/sub/avm-eac_ubuntu_base0/spec/lib/avm/eac_ubuntu_base0/runners/base_spec.rb +7 -0
  24. data/sub/avm-eac_ubuntu_base0/spec/rubocop_spec.rb +3 -0
  25. data/sub/avm-eac_ubuntu_base0/spec/spec_helper.rb +4 -0
  26. data/sub/avm-eac_ubuntu_base0/template/avm/eac_ubuntu_base0/docker_image/Dockerfile.template +24 -0
  27. data/sub/{avm-tools/spec/spec_helper/stub_templates/stubbed_docker_server → avm-eac_ubuntu_base0/template/avm/eac_ubuntu_base0/rspec/ssh_docker_server}/Dockerfile +0 -0
  28. data/sub/{avm-tools/spec/spec_helper/stub_templates/stubbed_docker_server → avm-eac_ubuntu_base0/template/avm/eac_ubuntu_base0/rspec/ssh_docker_server}/id_rsa +0 -0
  29. data/sub/{avm-tools/spec/spec_helper/stub_templates/stubbed_docker_server → avm-eac_ubuntu_base0/template/avm/eac_ubuntu_base0/rspec/ssh_docker_server}/id_rsa.pub +0 -0
  30. data/sub/avm-tools/avm-tools.gemspec +3 -3
  31. data/sub/avm-tools/lib/avm/tools/version.rb +1 -1
  32. data/sub/avm-tools/spec/lib/avm/tools/runner/git/deploy_spec.rb +4 -2
  33. data/sub/eac_ruby_utils/eac_ruby_utils.gemspec +1 -0
  34. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/composite_command.rb +14 -2
  35. data/sub/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem.rb +2 -1
  36. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  37. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/{command_spec.rb → command/base_example.rb} +2 -5
  38. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/local_env_spec.rb +11 -0
  39. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/ssh_env_spec.rb +17 -0
  40. metadata +43 -12
  41. data/sub/avm-tools/spec/spec_helper/stubbed_docker_server.rb +0 -93
  42. data/sub/avm-tools/spec/spec_helper/templates.rb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 171ff2484c7f126b41c7ce7cd1779956403eaab987125c00f667cae8b88f0f44
4
- data.tar.gz: 3dbbead13aa461c61ade55f6bf2a7d226b2147ea410a419be436992bc95952f1
3
+ metadata.gz: 3952d236b92a07dab2d6090167fce27692d8c9a12114d77ec5cf17b55a914c91
4
+ data.tar.gz: ce7c0f2f4855475d499a72a0f5e956468e79e9f38b49004fecd94400e2f24662
5
5
  SHA512:
6
- metadata.gz: f08562855ba9e9c9228de11b49086b2ff4fe2ffcd633dfc2fa4d21634e2cd2a318f6a67ad0d1ad09e20f6f9f8dd1bdacfddde34901eb254eb5d271e1192c78dc
7
- data.tar.gz: f3abee1c74294f1029608a59986ad33fd1a484423f02079c7acf1fd433fb9c22d272fa7517bbc3e2450b3b07f94e027f4187f7d3ac62fb65cd9d262b8d42ab28
6
+ metadata.gz: ffc30f40ffde2c2454d4939a491dbc1671da9481be935c5a07b3fa5a65a9e2a05307238e7100620a92c8e86c99667ebb1aee589d283884a69d5a2b013a054649
7
+ data.tar.gz: 6c30ff53dfe58d88fb1af3162121d36c8e7c68c056d9850b897d0e6e1b233be149e72b6f2a9d9c075db6a11da45cfa1c24b1d9c62ba6620fab223e5f97b97862
data/Gemfile.lock CHANGED
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eac_tools (0.48.0)
4
+ eac_tools (0.48.1)
5
5
  avm (~> 0.57)
6
6
  avm-eac_asciidoctor_base0 (~> 0.13)
7
7
  avm-eac_generic_base0 (~> 0.8)
8
8
  avm-eac_latex_base0 (~> 0.3)
9
- avm-eac_php_base0 (~> 0.4)
10
- avm-eac_postgresql_base0 (~> 0.2, >= 0.2.2)
9
+ avm-eac_php_base0 (~> 0.4, >= 0.4.1)
10
+ avm-eac_postgresql_base0 (~> 0.2, >= 0.2.3)
11
11
  avm-eac_python_base0 (~> 0.2, >= 0.2.1)
12
12
  avm-eac_rails_base0 (~> 0.9)
13
13
  avm-eac_rails_base1 (~> 0.8)
@@ -16,8 +16,8 @@ PATH
16
16
  avm-eac_ruby_base1 (~> 0.27, >= 0.27.3)
17
17
  avm-eac_webapp_base0 (~> 0.13)
18
18
  avm-eac_wordpress_base0 (~> 0.3)
19
- avm-tools (~> 0.142, >= 0.142.7)
20
- eac_ruby_utils (~> 0.109)
19
+ avm-tools (~> 0.142, >= 0.142.8)
20
+ eac_ruby_utils (~> 0.109, >= 0.109.1)
21
21
 
22
22
  PATH
23
23
  remote: sub/aranha-parsers
@@ -68,9 +68,9 @@ PATH
68
68
  PATH
69
69
  remote: sub/avm-eac_postgresql_base0
70
70
  specs:
71
- avm-eac_postgresql_base0 (0.2.2)
71
+ avm-eac_postgresql_base0 (0.2.3)
72
72
  avm (~> 0.57)
73
- eac_ruby_utils (~> 0.108)
73
+ eac_ruby_utils (~> 0.109)
74
74
 
75
75
  PATH
76
76
  remote: sub/avm-eac_python_base0
@@ -123,6 +123,14 @@ PATH
123
123
  avm-eac_generic_base0 (~> 0.8)
124
124
  eac_ruby_utils (~> 0.109)
125
125
 
126
+ PATH
127
+ remote: sub/avm-eac_ubuntu_base0
128
+ specs:
129
+ avm-eac_ubuntu_base0 (0.4.0)
130
+ avm (~> 0.57)
131
+ eac_ruby_utils (~> 0.109)
132
+ eac_templates (~> 0.3, >= 0.3.2)
133
+
126
134
  PATH
127
135
  remote: sub/avm-eac_webapp_base0
128
136
  specs:
@@ -165,11 +173,11 @@ PATH
165
173
  PATH
166
174
  remote: sub/avm-tools
167
175
  specs:
168
- avm-tools (0.142.7)
176
+ avm-tools (0.142.8)
169
177
  aranha-parsers (~> 0.14, >= 0.14.4)
170
178
  avm (~> 0.57)
171
- avm-eac_ruby_base1 (~> 0.27, >= 0.27.1)
172
- avm-eac_ubuntu_base0 (~> 0.3)
179
+ avm-eac_ruby_base1 (~> 0.27, >= 0.27.3)
180
+ avm-eac_ubuntu_base0 (~> 0.4)
173
181
  avm-files (~> 0.6)
174
182
  avm-git (~> 0.10, >= 0.10.1)
175
183
  clipboard (~> 1.3, >= 1.3.6)
@@ -177,7 +185,7 @@ PATH
177
185
  eac_git (~> 0.14)
178
186
  eac_ruby_base0 (~> 0.17, >= 0.17.1)
179
187
  eac_templates (~> 0.3, >= 0.3.2)
180
- git (~> 1.12)
188
+ git (~> 1.13)
181
189
  ruby-progressbar (~> 1.11)
182
190
 
183
191
  PATH
@@ -245,7 +253,7 @@ PATH
245
253
  PATH
246
254
  remote: sub/eac_ruby_utils
247
255
  specs:
248
- eac_ruby_utils (0.109.0)
256
+ eac_ruby_utils (0.109.1)
249
257
  activesupport (>= 4, < 7)
250
258
  addressable (~> 2.8, >= 2.8.1)
251
259
  bundler
@@ -265,10 +273,6 @@ GEM
265
273
  public_suffix (>= 2.0.2, < 6.0)
266
274
  asciidoctor (2.0.18)
267
275
  ast (2.4.2)
268
- avm-eac_ubuntu_base0 (0.3.0)
269
- avm (~> 0.7)
270
- eac_ruby_utils (~> 0.77, >= 0.77.1)
271
- eac_templates (~> 0.3)
272
276
  clipboard (1.3.6)
273
277
  colorize (0.8.1)
274
278
  concurrent-ruby (1.1.10)
@@ -316,7 +320,7 @@ GEM
316
320
  faraday_middleware (1.2.0)
317
321
  faraday (~> 1.0)
318
322
  filesize (0.2.0)
319
- git (1.12.0)
323
+ git (1.13.0)
320
324
  addressable (~> 2.8)
321
325
  rchardet (~> 1.8)
322
326
  hpricot (0.8.6)
@@ -397,6 +401,7 @@ DEPENDENCIES
397
401
  avm-eac_redmine_base0!
398
402
  avm-eac_redmine_plugin_base0!
399
403
  avm-eac_ruby_base1!
404
+ avm-eac_ubuntu_base0!
400
405
  avm-eac_webapp_base0!
401
406
  avm-eac_wordpress_base0!
402
407
  avm-files!
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacTools
4
- VERSION = '0.48.0'
4
+ VERSION = '0.48.1'
5
5
  end
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  s.files = Dir['{lib}/**/*']
14
14
 
15
15
  s.add_dependency 'avm', '~> 0.57'
16
- s.add_dependency 'eac_ruby_utils', '~> 0.108'
16
+ s.add_dependency 'eac_ruby_utils', '~> 0.109'
17
17
 
18
18
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.4'
19
19
  end
@@ -7,6 +7,7 @@ module Avm
7
7
  class Instance
8
8
  class DataUnit < ::Avm::Instances::Data::Unit
9
9
  EXTENSION = '.pgdump.gz'
10
+ TABLES_SQL = 'select tablename from pg_tables where schemaname = \'public\''
10
11
 
11
12
  before_load :clear_database
12
13
 
@@ -15,24 +16,29 @@ module Avm
15
16
  end
16
17
 
17
18
  def load_command
18
- instance.psql_command.prepend(['gzip', '-d', '@ESC_|'])
19
+ instance.load_gzip_command
19
20
  end
20
21
 
21
22
  private
22
23
 
23
24
  def clear_database
24
25
  info 'Clearing database (Dropping all tables)...'
25
- run_sql(drop_all_tables_sql).if_present { |v| run_sql(v) }
26
- end
27
-
28
- def drop_all_tables_sql
29
- "select 'drop table \"' || tablename || '\" cascade;' from pg_tables " \
30
- "where schemaname = 'public';"
26
+ ts = tables
27
+ if ts.empty?
28
+ info 'Database has no tables'
29
+ else
30
+ info "Removing #{ts.count} table(s)..."
31
+ run_sql('drop table ' + ts.map { |t| "\"#{t}\"" }.join(', ') + ' cascade')
32
+ end
31
33
  end
32
34
 
33
35
  def run_sql(sql)
34
36
  instance.psql_command_command(sql).execute!
35
37
  end
38
+
39
+ def tables
40
+ run_sql(TABLES_SQL).each_line.map(&:strip).reject(&:blank?)
41
+ end
36
42
  end
37
43
  end
38
44
  end
@@ -29,7 +29,22 @@ module Avm
29
29
 
30
30
  # @return [EacRubyUtils::Envs::Command]
31
31
  def dump_gzip_command
32
- dump_command.pipe(env.command('gzip', '-9', '-c'))
32
+ dump_command.pipe(gzip_compress_command)
33
+ end
34
+
35
+ # @return [EacRubyUtils::Envs::Command]
36
+ def gzip_compress_command
37
+ env.command('gzip', '-9', '-c')
38
+ end
39
+
40
+ # @return [EacRubyUtils::Envs::Command]
41
+ def gzip_decompress_command
42
+ env.command('gzip', '-d')
43
+ end
44
+
45
+ # @return [EacRubyUtils::Envs::Command]
46
+ def load_gzip_command
47
+ gzip_decompress_command.pipe(psql_command)
33
48
  end
34
49
 
35
50
  # @return [String]
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacPostgresqlBase0
5
- VERSION = '0.2.2'
5
+ VERSION = '0.2.3'
6
6
  end
7
7
  end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
+
5
+ require 'avm/eac_ubuntu_base0/version'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = 'avm-eac_ubuntu_base0'
9
+ s.version = Avm::EacUbuntuBase0::VERSION
10
+ s.authors = ['Put here the authors']
11
+ s.summary = 'Put here de description.'
12
+
13
+ s.files = Dir['{lib,template}/**/*']
14
+
15
+ s.add_dependency 'avm', '~> 0.57'
16
+ s.add_dependency 'eac_ruby_utils', '~> 0.109'
17
+ s.add_dependency 'eac_templates', '~> 0.3', '>= 0.3.2'
18
+
19
+ s.add_development_dependency 'avm-eac_ubuntu_base0'
20
+ s.add_development_dependency 'eac_ruby_gem_support', '~> 0.4'
21
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacUbuntuBase0
7
+ class Apache
8
+ class Resource
9
+ common_constructor :apache, :type, :directory_prefix, :name
10
+
11
+ def available_path
12
+ ::File.join(apache.etc_root, "#{directory_prefix}-available", "#{name}.conf")
13
+ end
14
+
15
+ def available?
16
+ apache.host_env.file(available_path).exist?
17
+ end
18
+
19
+ def disable
20
+ apache.host_env.command('sudo', "a2dis#{type}", name).execute!
21
+ end
22
+
23
+ def enable
24
+ apache.host_env.command('sudo', "a2en#{type}", name).execute!
25
+ end
26
+
27
+ def enabled_path
28
+ ::File.join(apache.etc_root, "#{directory_prefix}-enabled", "#{name}.conf")
29
+ end
30
+
31
+ def enabled?
32
+ apache.host_env.file(enabled_path).exist?
33
+ end
34
+
35
+ def remove
36
+ remove_disabled
37
+ remove_available
38
+ end
39
+
40
+ def remove_available
41
+ raise 'Remove enabled before' if enabled?
42
+
43
+ apache.host_env.command('sudo', 'rm', '-f', available_path).execute! if available?
44
+ end
45
+
46
+ def remove_disabled
47
+ disable if enabled?
48
+ apache.host_env.command('sudo', 'rm', '-f', enabled_path).execute! if enabled?
49
+ end
50
+
51
+ def write(content)
52
+ ::EacRubyUtils::Envs.local.command('echo', content).pipe(
53
+ apache.host_env.command('sudo', 'tee', available_path)
54
+ ).execute!
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacUbuntuBase0
7
+ class Apache
8
+ require_sub __FILE__
9
+ common_constructor :host_env
10
+
11
+ def etc_root
12
+ '/etc/apache2'
13
+ end
14
+
15
+ def service(command)
16
+ host_env.command('sudo', 'service', 'apache2', command)
17
+ end
18
+
19
+ { conf: :conf, site: :sites }.each do |type, directory_prefix|
20
+ define_method type do |name|
21
+ ::Avm::EacUbuntuBase0::Apache::Resource.new(self, type, directory_prefix, name)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/docker/image'
4
+ require 'eac_templates/from_all_gems'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module EacUbuntuBase0
9
+ class DockerImage < ::Avm::Docker::Image
10
+ USER_NAME = 'myuser'
11
+
12
+ def stereotype_tag
13
+ 'eac_ubuntu_base0'
14
+ end
15
+
16
+ def user_home
17
+ ::File.join('/home', user_name)
18
+ end
19
+
20
+ def user_name
21
+ USER_NAME
22
+ end
23
+
24
+ def user_password
25
+ user_name
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_ubuntu_base0/docker_image'
4
+ require 'avm/instances/base'
5
+
6
+ module Avm
7
+ module EacUbuntuBase0
8
+ module Instances
9
+ class Base < ::Avm::Instances::Base
10
+ def docker_image_class
11
+ ::Avm::EacUbuntuBase0::DockerImage
12
+ end
13
+
14
+ def file_sudo_write(path, content)
15
+ ::EacRubyUtils::Envs.local.command('echo', content).pipe(
16
+ host_env.command('sudo', 'tee', path)
17
+ ).execute!
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacUbuntuBase0
7
+ module Instances
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_docker/images/templatized'
4
+ require 'eac_ruby_utils/core_ext'
5
+ require 'eac_templates/core_ext'
6
+
7
+ module Avm
8
+ module EacUbuntuBase0
9
+ module Rspec
10
+ class SshDockerServer < ::EacDocker::Images::Templatized
11
+ # @return [EacRubyUtils::Envs::SshEnv]
12
+ def env
13
+ raise '@env is blank' if @env.blank?
14
+
15
+ @env
16
+ end
17
+
18
+ def on_run
19
+ on_container do
20
+ on_env do
21
+ yield
22
+ end
23
+ end
24
+ end
25
+
26
+ private
27
+
28
+ def container
29
+ raise '@container is blank' if @container.blank?
30
+
31
+ @container
32
+ end
33
+
34
+ def env_identity_file
35
+ template.child('id_rsa').path
36
+ end
37
+
38
+ def env_identity_file_good_permissions
39
+ r = ::EacRubyUtils::Fs::Temp.file
40
+ ::FileUtils.cp env_identity_file, r
41
+ r.chmod(0o600)
42
+ r
43
+ end
44
+
45
+ def close_env
46
+ @identity_file.remove
47
+ @env = nil
48
+ end
49
+
50
+ def on_env
51
+ open_env
52
+ begin
53
+ yield
54
+ ensure
55
+ close_env
56
+ end
57
+ end
58
+
59
+ def on_container
60
+ provide.container.temporary(true).on_detached do |container|
61
+ @container = container
62
+ begin
63
+ yield
64
+ ensure
65
+ @container = nil
66
+ end
67
+ end
68
+ end
69
+
70
+ def open_env
71
+ raise 'Environment already open' if @env.present?
72
+
73
+ @identity_file = env_identity_file_good_permissions
74
+ @env = ::EacRubyUtils::Envs::SshEnv.new(
75
+ "ssh://root@#{container.hostname}" \
76
+ '?StrictHostKeyChecking=no' \
77
+ '&BatchMode=yes' \
78
+ "&IdentityFile=#{@identity_file}"
79
+ )
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacUbuntuBase0
7
+ module Rspec
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/docker/runner'
4
+ require 'avm/runners/base'
5
+ require 'eac_ruby_utils/struct'
6
+
7
+ module Avm
8
+ module EacUbuntuBase0
9
+ module Runners
10
+ class Base < ::Avm::Runners::Base
11
+ class Docker < ::Avm::Docker::Runner
12
+ def use_default_registry?
13
+ true
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/runners/base'
4
+ require 'avm/eac_ubuntu_base0/instances/base'
5
+ require 'eac_ruby_utils/patches/module/require_sub'
6
+
7
+ module Avm
8
+ module EacUbuntuBase0
9
+ module Runners
10
+ class Base < ::Avm::Runners::Base
11
+ enable_simple_cache
12
+ require_sub __FILE__
13
+
14
+ INSTANCE_ID = 'eac-ubuntu-base0_self'
15
+
16
+ runner_with :help, :subcommands do
17
+ subcommands
18
+ end
19
+
20
+ private
21
+
22
+ def instance_uncached
23
+ ::Avm::EacUbuntuBase0::Instances::Base.by_id(INSTANCE_ID)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module EacUbuntuBase0
5
+ VERSION = '0.4.0'
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacUbuntuBase0
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_ubuntu_base0/docker_image'
4
+ require 'eac_docker/images/base'
5
+ require 'eac_docker/registry'
6
+
7
+ ::RSpec.describe ::Avm::EacUbuntuBase0::DockerImage do
8
+ let(:registry) { ::EacDocker::Registry.new('stub') }
9
+ let(:instance) { described_class.new(registry) }
10
+
11
+ describe '#provide' do
12
+ it do
13
+ expect(instance.provide).to be_a(::EacDocker::Images::Base)
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_ubuntu_base0/runners/base'
4
+ require 'avm/eac_ubuntu_base0/runners/base/docker'
5
+
6
+ ::RSpec.describe ::Avm::EacUbuntuBase0::Runners::Base::Docker do
7
+ it do
8
+ expect { run_command('--registry-name', 'testing', '--image-name') }.not_to raise_error
9
+ end
10
+
11
+ def run_command(*argv)
12
+ ::Avm::EacUbuntuBase0::Runners::Base.run(argv: %w[docker] + argv)
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_ubuntu_base0/runners/base'
4
+
5
+ ::RSpec.describe ::Avm::EacUbuntuBase0::Runners::Base do
6
+ include_examples 'in_avm_registry', 'runners'
7
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ ::EacRubyUtils::Rspec.default_setup.describe_rubocop
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/rspec/default_setup'
4
+ ::EacRubyUtils::Rspec.default_setup_create(::File.expand_path('..', __dir__)).stub_avm_contexts
@@ -0,0 +1,24 @@
1
+ FROM ubuntu:20.04
2
+
3
+ # Base system update
4
+ RUN apt-get update -y
5
+ RUN apt-get dist-upgrade -y
6
+
7
+ # Timezone
8
+ RUN apt-get install -y tzdata
9
+ RUN ln -fs /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
10
+ RUN dpkg-reconfigure --frontend noninteractive tzdata
11
+
12
+ # Default user
13
+ RUN /usr/sbin/useradd --shell /bin/bash --home-dir %%user_home%% --create-home %%user_name%%
14
+ RUN /bin/echo '%%user_name%%:%%user_password%%' | /usr/sbin/chpasswd
15
+ RUN /bin/chown %%user_name%%:%%user_name%% %%user_home%% -R
16
+
17
+ # Sudo
18
+ RUN apt-get install -y sudo
19
+ RUN /bin/echo "%%user_name%% ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/%%user_name%%_all_nopasswd && chmod 0440 /etc/sudoers.d/%%user_name%%_all_nopasswd
20
+
21
+ # Container
22
+ USER %%user_name%%
23
+ WORKDIR %%user_home%%
24
+ CMD /bin/bash
@@ -16,8 +16,8 @@ Gem::Specification.new do |s|
16
16
 
17
17
  s.add_dependency 'aranha-parsers', '~> 0.14', '>= 0.14.4'
18
18
  s.add_dependency 'avm', '~> 0.57'
19
- s.add_dependency 'avm-eac_ruby_base1', '~> 0.27', '>= 0.27.1'
20
- s.add_dependency 'avm-eac_ubuntu_base0', '~> 0.3'
19
+ s.add_dependency 'avm-eac_ruby_base1', '~> 0.27', '>= 0.27.3'
20
+ s.add_dependency 'avm-eac_ubuntu_base0', '~> 0.4'
21
21
  s.add_dependency 'avm-files', '~> 0.6'
22
22
  s.add_dependency 'avm-git', '~> 0.10', '>= 0.10.1'
23
23
  s.add_dependency 'clipboard', '~> 1.3', '>= 1.3.6'
@@ -25,7 +25,7 @@ Gem::Specification.new do |s|
25
25
  s.add_dependency 'eac_git', '~> 0.14'
26
26
  s.add_dependency 'eac_ruby_base0', '~> 0.17', '>= 0.17.1'
27
27
  s.add_dependency 'eac_templates', '~> 0.3', '>= 0.3.2'
28
- s.add_dependency 'git', '~> 1.12'
28
+ s.add_dependency 'git', '~> 1.13'
29
29
  s.add_dependency 'ruby-progressbar', '~> 1.11'
30
30
 
31
31
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Tools
5
- VERSION = '0.142.7'
5
+ VERSION = '0.142.8'
6
6
  end
7
7
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/eac_ubuntu_base0/rspec/ssh_docker_server'
3
4
  require 'avm/tools/runner'
4
5
  require 'tmpdir'
5
6
 
@@ -86,7 +87,8 @@ require 'tmpdir'
86
87
  end
87
88
 
88
89
  context 'with ssh target', docker: true do
89
- let(:env) { ::StubbedDockerServer.env }
90
+ let(:ssh_server) { ::Avm::EacUbuntuBase0::Rspec::SshDockerServer.new }
91
+ let(:env) { ssh_server.env }
90
92
  let(:tmpdir) { env.command('mktemp', '-d').execute! }
91
93
  let(:target_dir) { ::File.join(tmpdir, 'target') }
92
94
  let(:target_url) do
@@ -96,7 +98,7 @@ require 'tmpdir'
96
98
  end
97
99
 
98
100
  around do |example|
99
- ::StubbedDockerServer.on_run(&example)
101
+ ssh_server.on_run(&example)
100
102
  end
101
103
 
102
104
  before do
@@ -20,5 +20,6 @@ Gem::Specification.new do |s|
20
20
  s.add_dependency 'bundler'
21
21
  s.add_dependency 'filesize', '~> 0.2'
22
22
  s.add_dependency 'net-ssh', '~> 4.2'
23
+ s.add_development_dependency 'avm-eac_ubuntu_base0', '~> 0.4'
23
24
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
24
25
  end
@@ -25,8 +25,20 @@ module EacRubyUtils
25
25
 
26
26
  # @return [String]
27
27
  def bash_command
28
- ['set', '-euo', 'pipefail', OPERATOR_BEFORE, left_command.command, operator,
29
- right_command.command].join(' ')
28
+ ['set', '-euo', 'pipefail', OPERATOR_BEFORE, left_command_line, operator,
29
+ right_command_line].join(' ')
30
+ end
31
+
32
+ def left_command_line
33
+ left_command.command_line_without_env
34
+ end
35
+
36
+ def right_command_line
37
+ if right_command.env == left_command.env
38
+ right_command.command_line_without_env
39
+ else
40
+ right_command.command
41
+ end
30
42
  end
31
43
  end
32
44
  end
@@ -69,8 +69,9 @@ module EacRubyUtils
69
69
  .result
70
70
  end
71
71
 
72
+ # @return [Array<Gem::Dependency>]
72
73
  def gem_item_dependencies(item)
73
- ::Gem::Specification.find_by_name(item.name).dependencies
74
+ ::Gem::Specification.find_by_name(item.name).dependencies.select(&:runtime?)
74
75
  rescue ::Gem::MissingSpecError
75
76
  []
76
77
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.109.0'
4
+ VERSION = '0.109.1'
5
5
  end
@@ -1,11 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/envs/command'
4
- require 'eac_ruby_utils/envs/executable'
5
- require 'eac_ruby_utils/envs/local_env'
3
+ require 'eac_ruby_utils/envs/execution_error'
6
4
 
7
- RSpec.describe ::EacRubyUtils::Envs::Command do
8
- let(:env) { ::EacRubyUtils::Envs::LocalEnv.new }
5
+ ::RSpec.shared_examples 'with_command_env' do # rubocop:disable Metrics/BlockLength
9
6
  let(:echo) { env.executable('echo', '--version') }
10
7
  let(:cat) { env.executable('cat', '--version') }
11
8
  let(:not_existing_file) { ::Pathname.new('a_file_that_not_exists') }
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/envs/command'
4
+ require 'eac_ruby_utils/envs/local_env'
5
+ require_relative 'base_example'
6
+
7
+ ::RSpec.describe ::EacRubyUtils::Envs::Command do
8
+ let(:env) { ::EacRubyUtils::Envs::LocalEnv.new }
9
+
10
+ include_examples 'with_command_env'
11
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_ubuntu_base0/rspec/ssh_docker_server'
4
+ require 'eac_ruby_utils/envs/command'
5
+ require 'eac_ruby_utils/envs/ssh_env'
6
+ require_relative 'base_example'
7
+
8
+ ::RSpec.describe ::EacRubyUtils::Envs::Command do
9
+ let(:ssh_server) { ::Avm::EacUbuntuBase0::Rspec::SshDockerServer.new }
10
+ let(:env) { ssh_server.env }
11
+
12
+ around do |example|
13
+ ssh_server.on_run(&example)
14
+ end
15
+
16
+ include_examples 'with_command_env'
17
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.48.0
4
+ version: 0.48.1
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-12-10 00:00:00.000000000 Z
11
+ date: 2022-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avm
@@ -73,6 +73,9 @@ dependencies:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0.4'
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 0.4.1
76
79
  type: :runtime
77
80
  prerelease: false
78
81
  version_requirements: !ruby/object:Gem::Requirement
@@ -80,6 +83,9 @@ dependencies:
80
83
  - - "~>"
81
84
  - !ruby/object:Gem::Version
82
85
  version: '0.4'
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 0.4.1
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: avm-eac_postgresql_base0
85
91
  requirement: !ruby/object:Gem::Requirement
@@ -89,7 +95,7 @@ dependencies:
89
95
  version: '0.2'
90
96
  - - ">="
91
97
  - !ruby/object:Gem::Version
92
- version: 0.2.2
98
+ version: 0.2.3
93
99
  type: :runtime
94
100
  prerelease: false
95
101
  version_requirements: !ruby/object:Gem::Requirement
@@ -99,7 +105,7 @@ dependencies:
99
105
  version: '0.2'
100
106
  - - ">="
101
107
  - !ruby/object:Gem::Version
102
- version: 0.2.2
108
+ version: 0.2.3
103
109
  - !ruby/object:Gem::Dependency
104
110
  name: avm-eac_python_base0
105
111
  requirement: !ruby/object:Gem::Requirement
@@ -233,7 +239,7 @@ dependencies:
233
239
  version: '0.142'
234
240
  - - ">="
235
241
  - !ruby/object:Gem::Version
236
- version: 0.142.7
242
+ version: 0.142.8
237
243
  type: :runtime
238
244
  prerelease: false
239
245
  version_requirements: !ruby/object:Gem::Requirement
@@ -243,7 +249,7 @@ dependencies:
243
249
  version: '0.142'
244
250
  - - ">="
245
251
  - !ruby/object:Gem::Version
246
- version: 0.142.7
252
+ version: 0.142.8
247
253
  - !ruby/object:Gem::Dependency
248
254
  name: eac_ruby_utils
249
255
  requirement: !ruby/object:Gem::Requirement
@@ -251,6 +257,9 @@ dependencies:
251
257
  - - "~>"
252
258
  - !ruby/object:Gem::Version
253
259
  version: '0.109'
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: 0.109.1
254
263
  type: :runtime
255
264
  prerelease: false
256
265
  version_requirements: !ruby/object:Gem::Requirement
@@ -258,6 +267,9 @@ dependencies:
258
267
  - - "~>"
259
268
  - !ruby/object:Gem::Version
260
269
  version: '0.109'
270
+ - - ">="
271
+ - !ruby/object:Gem::Version
272
+ version: 0.109.1
261
273
  - !ruby/object:Gem::Dependency
262
274
  name: eac_ruby_gem_support
263
275
  requirement: !ruby/object:Gem::Requirement
@@ -733,6 +745,28 @@ files:
733
745
  - sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/spec/rubocop_spec.rb
734
746
  - sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/spec/spec_helper.rb
735
747
  - sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/version.template
748
+ - sub/avm-eac_ubuntu_base0/Gemfile
749
+ - sub/avm-eac_ubuntu_base0/avm-eac_ubuntu_base0.gemspec
750
+ - sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0.rb
751
+ - sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/apache.rb
752
+ - sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/apache/resource.rb
753
+ - sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/docker_image.rb
754
+ - sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/instances.rb
755
+ - sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/instances/base.rb
756
+ - sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/rspec.rb
757
+ - sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/rspec/ssh_docker_server.rb
758
+ - sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/runners/base.rb
759
+ - sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/runners/base/docker.rb
760
+ - sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/version.rb
761
+ - sub/avm-eac_ubuntu_base0/spec/lib/avm/eac_ubuntu_base0/docker_image_spec.rb
762
+ - sub/avm-eac_ubuntu_base0/spec/lib/avm/eac_ubuntu_base0/runners/base/docker_spec.rb
763
+ - sub/avm-eac_ubuntu_base0/spec/lib/avm/eac_ubuntu_base0/runners/base_spec.rb
764
+ - sub/avm-eac_ubuntu_base0/spec/rubocop_spec.rb
765
+ - sub/avm-eac_ubuntu_base0/spec/spec_helper.rb
766
+ - sub/avm-eac_ubuntu_base0/template/avm/eac_ubuntu_base0/docker_image/Dockerfile.template
767
+ - sub/avm-eac_ubuntu_base0/template/avm/eac_ubuntu_base0/rspec/ssh_docker_server/Dockerfile
768
+ - sub/avm-eac_ubuntu_base0/template/avm/eac_ubuntu_base0/rspec/ssh_docker_server/id_rsa
769
+ - sub/avm-eac_ubuntu_base0/template/avm/eac_ubuntu_base0/rspec/ssh_docker_server/id_rsa.pub
736
770
  - sub/avm-eac_webapp_base0/Gemfile
737
771
  - sub/avm-eac_webapp_base0/avm-eac_webapp_base0.gemspec
738
772
  - sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0.rb
@@ -992,11 +1026,6 @@ files:
992
1026
  - sub/avm-tools/spec/spec_helper/avm_tools_runner.rb
993
1027
  - sub/avm-tools/spec/spec_helper/eac_launcher.rb
994
1028
  - sub/avm-tools/spec/spec_helper/eac_launcher/settings.yml
995
- - sub/avm-tools/spec/spec_helper/stub_templates/stubbed_docker_server/Dockerfile
996
- - sub/avm-tools/spec/spec_helper/stub_templates/stubbed_docker_server/id_rsa
997
- - sub/avm-tools/spec/spec_helper/stub_templates/stubbed_docker_server/id_rsa.pub
998
- - sub/avm-tools/spec/spec_helper/stubbed_docker_server.rb
999
- - sub/avm-tools/spec/spec_helper/templates.rb
1000
1029
  - sub/avm-tools/template/avm/self/docker_image/Dockerfile
1001
1030
  - sub/avm-tools/template/avm/self/docker_image/entrypoint.sh
1002
1031
  - sub/avm/Gemfile
@@ -1762,7 +1791,9 @@ files:
1762
1791
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/compare_by_spec.rb
1763
1792
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/custom_format_spec.rb
1764
1793
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/enum_spec.rb
1765
- - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command_spec.rb
1794
+ - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/base_example.rb
1795
+ - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/local_env_spec.rb
1796
+ - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command/ssh_env_spec.rb
1766
1797
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/executable_spec.rb
1767
1798
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/ssh_env_spec.rb
1768
1799
  - sub/eac_ruby_utils/spec/lib/eac_ruby_utils/fs/extname_spec.rb
@@ -1,93 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_docker/images/templatized'
4
- require 'eac_ruby_utils/core_ext'
5
- require_relative 'templates'
6
-
7
- class StubbedDockerServer < ::EacDocker::Images::Templatized
8
- class << self
9
- enable_simple_cache
10
-
11
- def on_run
12
- instance.on_run { yield }
13
- end
14
-
15
- delegate :env, to: :instance
16
-
17
- private
18
-
19
- def instance_uncached
20
- new.tag('avm_stubbed_docker_server')
21
- end
22
- end
23
-
24
- def env
25
- raise '@env is blank' if @env.blank?
26
-
27
- @env
28
- end
29
-
30
- def on_run
31
- on_container do
32
- on_env do
33
- yield
34
- end
35
- end
36
- end
37
-
38
- private
39
-
40
- def container
41
- raise '@container is blank' if @container.blank?
42
-
43
- @container
44
- end
45
-
46
- def env_identity_file
47
- template.child('id_rsa').path
48
- end
49
-
50
- def env_identity_file_good_permissions
51
- r = ::EacRubyUtils::Fs::Temp.file
52
- ::FileUtils.cp env_identity_file, r
53
- r.chmod(0o600)
54
- r
55
- end
56
-
57
- def close_env
58
- @identity_file.remove
59
- @env = nil
60
- end
61
-
62
- def on_env
63
- open_env
64
- begin
65
- yield
66
- ensure
67
- close_env
68
- end
69
- end
70
-
71
- def on_container
72
- provide.container.temporary(true).on_detached do |container|
73
- @container = container
74
- begin
75
- yield
76
- ensure
77
- @container = nil
78
- end
79
- end
80
- end
81
-
82
- def open_env
83
- raise 'Environment already open' if @env.present?
84
-
85
- @identity_file = env_identity_file_good_permissions
86
- @env = ::EacRubyUtils::Envs::SshEnv.new(
87
- "ssh://root@#{container.hostname}" \
88
- '?StrictHostKeyChecking=no' \
89
- '&BatchMode=yes' \
90
- "&IdentityFile=#{@identity_file}"
91
- )
92
- end
93
- end
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_templates/patches/object/template'
4
-
5
- ::EacTemplates::Searcher.default.included_paths << ::File.join(__dir__, 'stub_templates')