eac_tools 0.46.0 → 0.47.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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +23 -21
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/avm-eac_php_base0/avm-eac_php_base0.gemspec +3 -2
  5. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/instances/base.rb +14 -0
  6. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/instances.rb +11 -0
  7. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/source_generators/base.rb +28 -0
  8. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/source_generators.rb +11 -0
  9. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/sources/base.rb +17 -0
  10. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/sources.rb +11 -0
  11. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/version.rb +1 -1
  12. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/source_generators/base_spec.rb +8 -0
  13. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/source_generators/base_spec_files/no_options/index.php +0 -0
  14. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/sources/base_spec.rb +7 -0
  15. data/sub/avm-eac_php_base0/template/avm/eac_php_base0/source_generators/base/index.php +0 -0
  16. data/sub/avm-eac_postgresql_base0/avm-eac_postgresql_base0.gemspec +2 -2
  17. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance.rb +8 -2
  18. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/instance_with.rb +5 -3
  19. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/version.rb +1 -1
  20. data/sub/avm-git/avm-git.gemspec +3 -3
  21. data/sub/avm-git/lib/avm/git/launcher/base/underlying.rb +1 -1
  22. data/sub/avm-git/lib/avm/git/version.rb +1 -1
  23. data/sub/avm-tools/avm-tools.gemspec +2 -2
  24. data/sub/avm-tools/lib/avm/tools/version.rb +1 -1
  25. data/sub/eac_fs/lib/eac_fs/storage_tree.rb +19 -0
  26. data/sub/eac_fs/lib/eac_fs/version.rb +1 -1
  27. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/append_command_options.rb +38 -0
  28. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/concat.rb +41 -0
  29. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/debugging.rb +19 -0
  30. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/execution.rb +52 -0
  31. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command/extra_options.rb +28 -0
  32. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/base_command.rb +45 -0
  33. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command/envvars.rb +3 -0
  34. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command/extra_options.rb +0 -10
  35. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command.rb +28 -96
  36. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/composite_command.rb +33 -0
  37. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/{command/exec_error.rb → execution_error.rb} +1 -3
  38. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/execution_result.rb +45 -0
  39. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  40. data/sub/eac_ruby_utils/spec/lib/eac_ruby_utils/envs/command_spec.rb +100 -0
  41. metadata +48 -17
  42. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command/concat.rb +0 -33
  43. data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/command/execute_result.rb +0 -47
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 42d2af3ec5802d3d4deaef86b0e225332d92bb079767121a8601d0d7a9765418
4
- data.tar.gz: 062b466f4a749f6094769ede0583d1bd574f73ae05ffa30e0aeaa8a167e6ea2b
3
+ metadata.gz: 24f75dde80d4c4479e5f7bdd1203f9aa4fdd06dda99579b0c5212e24a9959c87
4
+ data.tar.gz: a3ea613d10868c65c5801a1876f043e7bc0512459d458f0f278c425ce13974be
5
5
  SHA512:
6
- metadata.gz: ae897ed254a4902dd543c1644015ee6f4ed269bd401949594cd8c5bfc764d9abce299cdbe4a9c6a04de72ec8f0870c93e617d36b39e7c83b202058970dd5f94b
7
- data.tar.gz: 349afc035604be730dec4bc4a1ebf9ef670dc15c27364f2abe4a752d853c8a2f4a689493f087f86598434d886900d0d81cb26409970dba895f8e7028c92d7869
6
+ metadata.gz: ca9448f7b5e0b23dc4df3bbd8efdba689a2741c672720971728c897e4c84296fb1a63d8b1b81f8dc629dc61f977e18333bca4d45f89cea40b08dc6c9d153fcb5
7
+ data.tar.gz: 304b367004e5d00ffb9efeb8a4fcf1151a6976dc525d6c1271115e539fa9b2eb91b1ba4b5c302e9660ae7e60ba3a47bd19fcfe51eca2fcf117ab370973705584
data/Gemfile.lock CHANGED
@@ -1,12 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eac_tools (0.46.0)
4
+ eac_tools (0.47.1)
5
5
  avm (~> 0.57)
6
6
  avm-eac_asciidoctor_base0 (~> 0.12)
7
7
  avm-eac_generic_base0 (~> 0.8)
8
8
  avm-eac_latex_base0 (~> 0.3)
9
- avm-eac_php_base0 (~> 0.3)
9
+ avm-eac_php_base0 (~> 0.4)
10
+ avm-eac_postgresql_base0 (~> 0.2, >= 0.2.2)
10
11
  avm-eac_rails_base0 (~> 0.8, >= 0.8.1)
11
12
  avm-eac_rails_base1 (~> 0.7, >= 0.7.1)
12
13
  avm-eac_redmine_base0 (~> 0.17)
@@ -14,8 +15,8 @@ PATH
14
15
  avm-eac_ruby_base1 (~> 0.27, >= 0.27.1)
15
16
  avm-eac_webapp_base0 (~> 0.12, >= 0.12.3)
16
17
  avm-eac_wordpress_base0 (~> 0.2, >= 0.2.1)
17
- avm-tools (~> 0.142, >= 0.142.6)
18
- eac_ruby_utils (~> 0.107, >= 0.107.1)
18
+ avm-tools (~> 0.142, >= 0.142.7)
19
+ eac_ruby_utils (~> 0.109)
19
20
 
20
21
  PATH
21
22
  remote: sub/aranha-parsers
@@ -58,16 +59,17 @@ PATH
58
59
  PATH
59
60
  remote: sub/avm-eac_php_base0
60
61
  specs:
61
- avm-eac_php_base0 (0.3.0)
62
- avm-eac_generic_base0 (~> 0.7)
63
- eac_ruby_utils (~> 0.106)
62
+ avm-eac_php_base0 (0.4.0)
63
+ avm-eac_generic_base0 (~> 0.8)
64
+ avm-eac_webapp_base0 (~> 0.12, >= 0.12.3)
65
+ eac_ruby_utils (~> 0.108)
64
66
 
65
67
  PATH
66
68
  remote: sub/avm-eac_postgresql_base0
67
69
  specs:
68
- avm-eac_postgresql_base0 (0.2.1)
69
- avm (~> 0.56, >= 0.56.1)
70
- eac_ruby_utils (~> 0.107, >= 0.107.1)
70
+ avm-eac_postgresql_base0 (0.2.2)
71
+ avm (~> 0.57)
72
+ eac_ruby_utils (~> 0.108)
71
73
 
72
74
  PATH
73
75
  remote: sub/avm-eac_python_base0
@@ -152,23 +154,23 @@ PATH
152
154
  PATH
153
155
  remote: sub/avm-git
154
156
  specs:
155
- avm-git (0.10.0)
156
- avm (~> 0.54)
157
+ avm-git (0.10.1)
158
+ avm (~> 0.57)
157
159
  avm-files (~> 0.6)
158
- eac_git (~> 0.13)
159
- eac_ruby_utils (~> 0.106, >= 0.106.1)
160
+ eac_git (~> 0.14)
161
+ eac_ruby_utils (~> 0.108)
160
162
  git (~> 1.12)
161
163
 
162
164
  PATH
163
165
  remote: sub/avm-tools
164
166
  specs:
165
- avm-tools (0.142.6)
167
+ avm-tools (0.142.7)
166
168
  aranha-parsers (~> 0.14, >= 0.14.4)
167
- avm (~> 0.56)
169
+ avm (~> 0.57)
168
170
  avm-eac_ruby_base1 (~> 0.27, >= 0.27.1)
169
171
  avm-eac_ubuntu_base0 (~> 0.3)
170
172
  avm-files (~> 0.6)
171
- avm-git (~> 0.10)
173
+ avm-git (~> 0.10, >= 0.10.1)
172
174
  clipboard (~> 1.3, >= 1.3.6)
173
175
  curb (~> 0.9, >= 0.9.11)
174
176
  eac_git (~> 0.14)
@@ -218,7 +220,7 @@ PATH
218
220
  PATH
219
221
  remote: sub/eac_fs
220
222
  specs:
221
- eac_fs (0.15.0)
223
+ eac_fs (0.16.0)
222
224
  content-type (~> 0.0, >= 0.0.2)
223
225
  eac_ruby_utils (~> 0.107, >= 0.107.1)
224
226
  ruby-filemagic (~> 0.7, >= 0.7.3)
@@ -242,7 +244,7 @@ PATH
242
244
  PATH
243
245
  remote: sub/eac_ruby_utils
244
246
  specs:
245
- eac_ruby_utils (0.107.1)
247
+ eac_ruby_utils (0.109.0)
246
248
  activesupport (>= 4, < 7)
247
249
  addressable (~> 2.8, >= 2.8.1)
248
250
  bundler
@@ -337,7 +339,7 @@ GEM
337
339
  parslet (2.0.0)
338
340
  public_suffix (5.0.0)
339
341
  racc (1.6.0)
340
- rack (3.0.0)
342
+ rack (3.0.1)
341
343
  rainbow (3.1.1)
342
344
  rchardet (1.8.0)
343
345
  rexml (3.2.5)
@@ -410,4 +412,4 @@ DEPENDENCIES
410
412
  eac_tools!
411
413
 
412
414
  BUNDLED WITH
413
- 2.3.20
415
+ 2.3.26
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacTools
4
- VERSION = '0.46.0'
4
+ VERSION = '0.47.1'
5
5
  end
@@ -12,8 +12,9 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib,locale,template}/**/*']
14
14
 
15
- s.add_dependency 'avm-eac_generic_base0', '~> 0.7'
16
- s.add_dependency 'eac_ruby_utils', '~> 0.106'
15
+ s.add_dependency 'avm-eac_generic_base0', '~> 0.8'
16
+ s.add_dependency 'avm-eac_webapp_base0', '~> 0.12', '>= 0.12.3'
17
+ s.add_dependency 'eac_ruby_utils', '~> 0.108'
17
18
 
18
19
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5', '>= 0.5.1'
19
20
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_webapp_base0/instances/base'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module EacPhpBase0
8
+ module Instances
9
+ class Base < ::Avm::EacWebappBase0::Instances::Base
10
+ FILES_UNITS = {}.freeze
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacPhpBase0
7
+ module Instances
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/source_generators/base'
4
+ require 'eac_templates/core_ext'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module Avm
8
+ module EacPhpBase0
9
+ module SourceGenerators
10
+ class Base < ::Avm::SourceGenerators::Base
11
+ OPTIONS = {}.freeze
12
+
13
+ enable_speaker
14
+ enable_simple_cache
15
+
16
+ class << self
17
+ def option_list
18
+ OPTIONS.inject(super) { |a, e| a.option(*e) }
19
+ end
20
+ end
21
+
22
+ def perform
23
+ template.apply(self, target_path)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacPhpBase0
7
+ module SourceGenerators
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_webapp_base0/sources/base'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module EacPhpBase0
8
+ module Sources
9
+ class Base < ::Avm::EacWebappBase0::Sources::Base
10
+ # @return [Boolean]
11
+ def valid?
12
+ path.glob('*.php').any?(&:file?)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacPhpBase0
7
+ module Sources
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacPhpBase0
5
- VERSION = '0.3.0'
5
+ VERSION = '0.4.0'
6
6
  end
7
7
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_php_base0/source_generators/base'
4
+ require 'avm/source_generators/runner'
5
+
6
+ RSpec.describe ::Avm::EacPhpBase0::SourceGenerators::Base do
7
+ include_examples 'avm_source_generated', __FILE__, 'EacPhpBase0'
8
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_php_base0/sources/base'
4
+
5
+ ::RSpec.describe ::Avm::EacPhpBase0::Sources::Base do
6
+ include_examples 'in_avm_registry', 'sources'
7
+ end
@@ -12,8 +12,8 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib}/**/*']
14
14
 
15
- s.add_dependency 'avm', '~> 0.56', '>= 0.56.1'
16
- s.add_dependency 'eac_ruby_utils', '~> 0.107', '>= 0.107.1'
15
+ s.add_dependency 'avm', '~> 0.57'
16
+ s.add_dependency 'eac_ruby_utils', '~> 0.108'
17
17
 
18
18
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.4'
19
19
  end
@@ -27,12 +27,18 @@ module Avm
27
27
  .envvar('PGPASSWORD', password)
28
28
  end
29
29
 
30
+ # @return [EacRubyUtils::Envs::Command]
30
31
  def dump_gzip_command
31
- dump_command.append(['@ESC_|', 'gzip', '-9', '-c'])
32
+ dump_command.pipe(env.command('gzip', '-9', '-c'))
33
+ end
34
+
35
+ # @return [String]
36
+ def password_command_argument
37
+ "@ESC_PGPASSWORD=#{password}"
32
38
  end
33
39
 
34
40
  def psql_command(database = true)
35
- env.command("@ESC_PGPASSWORD=#{password}", 'psql', *common_command_args(database))
41
+ env.command(password_command_argument, 'psql', *common_command_args(database))
36
42
  end
37
43
 
38
44
  def psql_command_command(sql, database = true)
@@ -8,9 +8,11 @@ module Avm
8
8
  module InstanceWith
9
9
  def pg
10
10
  @pg ||= ::Avm::EacPostgresqlBase0::Instance.new(
11
- host_env, user: read_entry(::Avm::Instances::EntryKeys::DATABASE_USERNAME),
12
- password: read_entry(::Avm::Instances::EntryKeys::DATABASE_PASSWORD),
13
- name: read_entry(::Avm::Instances::EntryKeys::DATABASE_NAME)
11
+ host_env, host: database_hostname,
12
+ port: database_port,
13
+ user: database_username,
14
+ password: database_password,
15
+ name: database_name
14
16
  )
15
17
  end
16
18
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacPostgresqlBase0
5
- VERSION = '0.2.1'
5
+ VERSION = '0.2.2'
6
6
  end
7
7
  end
@@ -12,10 +12,10 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib}/**/*']
14
14
 
15
- s.add_dependency 'avm', '~> 0.54'
15
+ s.add_dependency 'avm', '~> 0.57'
16
16
  s.add_dependency 'avm-files', '~> 0.6'
17
- s.add_dependency 'eac_git', '~> 0.13'
18
- s.add_dependency 'eac_ruby_utils', '~> 0.106', '>= 0.106.1'
17
+ s.add_dependency 'eac_git', '~> 0.14'
18
+ s.add_dependency 'eac_ruby_utils', '~> 0.108'
19
19
  s.add_dependency 'git', '~> 1.12'
20
20
 
21
21
  s.add_development_dependency 'aranha-parsers', '~> 0.8', '>= 0.8.5'
@@ -23,7 +23,7 @@ module Avm
23
23
  define_method exec_type do |*args|
24
24
  begin
25
25
  command(*args).send(exec_type)
26
- rescue ::EacRubyUtils::Envs::Command::ExecError
26
+ rescue ::EacRubyUtils::Envs::ExecutionError
27
27
  raise ::Avm::Git::Launcher::Error
28
28
  end
29
29
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Git
5
- VERSION = '0.10.0'
5
+ VERSION = '0.10.1'
6
6
  end
7
7
  end
@@ -15,11 +15,11 @@ Gem::Specification.new do |s|
15
15
  s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
16
16
 
17
17
  s.add_dependency 'aranha-parsers', '~> 0.14', '>= 0.14.4'
18
- s.add_dependency 'avm', '~> 0.56'
18
+ s.add_dependency 'avm', '~> 0.57'
19
19
  s.add_dependency 'avm-eac_ruby_base1', '~> 0.27', '>= 0.27.1'
20
20
  s.add_dependency 'avm-eac_ubuntu_base0', '~> 0.3'
21
21
  s.add_dependency 'avm-files', '~> 0.6'
22
- s.add_dependency 'avm-git', '~> 0.10'
22
+ s.add_dependency 'avm-git', '~> 0.10', '>= 0.10.1'
23
23
  s.add_dependency 'clipboard', '~> 1.3', '>= 1.3.6'
24
24
  s.add_dependency 'curb', '~> 0.9', '>= 0.9.11'
25
25
  s.add_dependency 'eac_git', '~> 0.14'
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Tools
5
- VERSION = '0.142.6'
5
+ VERSION = '0.142.7'
6
6
  end
7
7
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/yaml'
4
5
  require 'fileutils'
5
6
 
6
7
  module EacFs
@@ -33,12 +34,30 @@ module EacFs
33
34
  read
34
35
  end
35
36
 
37
+ # @return [Object]
38
+ def read_or_store_yaml(use_cache = true)
39
+ write_yaml(yield) unless stored? && use_cache
40
+
41
+ read_yaml
42
+ end
43
+
44
+ # @return [Object, nil]
45
+ def read_yaml
46
+ r = read
47
+ r.nil? ? nil : ::EacRubyUtils::Yaml.load(r)
48
+ end
49
+
36
50
  def write(value)
37
51
  assert_directory_on_path
38
52
  ::File.write(content_path, value)
39
53
  value
40
54
  end
41
55
 
56
+ def write_yaml(object)
57
+ write(::EacRubyUtils::Yaml.dump(object))
58
+ object
59
+ end
60
+
42
61
  def child(*child_path_parts)
43
62
  self.class.new(path, *child_path_parts)
44
63
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacFs
4
- VERSION = '0.15.0'
4
+ VERSION = '0.16.0'
5
5
  end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'shellwords'
5
+
6
+ module EacRubyUtils
7
+ module Envs
8
+ module BaseCommand
9
+ class AppendCommandOptions
10
+ enable_method_class
11
+ common_constructor :command, :command_line, :options
12
+
13
+ def result
14
+ r = command_line
15
+ r = input.command + ' | ' + r if input
16
+ r = "cat #{Shellwords.escape(input_file)} | #{r}" if input_file
17
+ r += ' > ' + Shellwords.escape(output_file) if output_file
18
+ r
19
+ end
20
+
21
+ # @return [EacRubyUtils::Envs::Command, nil]
22
+ def input
23
+ options[:input]
24
+ end
25
+
26
+ # @return [Pathname, nil]
27
+ def input_file
28
+ options[:input_file].if_present(&:to_pathname)
29
+ end
30
+
31
+ # @return [Pathname, nil]
32
+ def output_file
33
+ options[:output_file].if_present(&:to_pathname)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/struct'
4
+
5
+ module EacRubyUtils
6
+ module Envs
7
+ module BaseCommand
8
+ module Concat
9
+ AND_OPERATOR = '&&'
10
+ BEFORE_OPERATOR = ';'
11
+ OR_OPERATOR = '||'
12
+ PIPE_OPERATOR = '|'
13
+
14
+ # @param operator [Symbol]
15
+ # @return [EacRubyUtils::Envs::CompositeCommand]
16
+ def concat(operator, other_command)
17
+ require 'eac_ruby_utils/envs/composite_command'
18
+ ::EacRubyUtils::Envs::CompositeCommand.new(operator, self, other_command)
19
+ end
20
+
21
+ # @return [EacRubyUtils::Envs::Command]
22
+ def and(other_command)
23
+ concat(AND_OPERATOR, other_command)
24
+ end
25
+
26
+ # @return [EacRubyUtils::Envs::Command]
27
+ def before(other_command)
28
+ concat(BEFORE_OPERATOR, other_command)
29
+ end
30
+
31
+ def or(other_command)
32
+ concat(OR_OPERATOR, other_command)
33
+ end
34
+
35
+ def pipe(other_command)
36
+ concat(PIPE_OPERATOR, other_command)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module EacRubyUtils
4
+ module Envs
5
+ module BaseCommand
6
+ module Debugging
7
+ def debug?
8
+ ENV['DEBUG'].to_s.strip != ''
9
+ end
10
+
11
+ # Print a message if debugging is enabled.
12
+ def debug_print(message)
13
+ message = message.to_s
14
+ puts message.if_respond(:light_red, message) if debug?
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/envs/execution_error'
4
+ require 'eac_ruby_utils/envs/execution_result'
5
+ require 'eac_ruby_utils/envs/process'
6
+ require 'eac_ruby_utils/envs/spawn'
7
+ require 'pp'
8
+
9
+ module EacRubyUtils
10
+ module Envs
11
+ module BaseCommand
12
+ module Execution
13
+ def execute!(options = {})
14
+ options[:exit_outputs] = status_results.merge(options[:exit_outputs].presence || {})
15
+ er = ::EacRubyUtils::Envs::ExecutionResult.new(execute(options), options)
16
+ return er.result if er.success?
17
+
18
+ raise ::EacRubyUtils::Envs::ExecutionError,
19
+ "execute! command failed: #{self}\n#{er.r.pretty_inspect}"
20
+ end
21
+
22
+ def execute(options = {})
23
+ c = command(options)
24
+ debug_print("BEFORE: #{c}")
25
+ t1 = Time.now
26
+ r = ::EacRubyUtils::Envs::Process.new(c).to_h
27
+ i = Time.now - t1
28
+ debug_print("AFTER [#{i}]: #{c}")
29
+ r
30
+ end
31
+
32
+ def spawn(options = {})
33
+ c = command(options)
34
+ debug_print("SPAWN: #{c}")
35
+ ::EacRubyUtils::Envs::Spawn.new(c)
36
+ end
37
+
38
+ def system!(options = {})
39
+ return if system(options)
40
+
41
+ raise ::EacRubyUtils::Envs::ExecutionError, "system! command failed: #{self}"
42
+ end
43
+
44
+ def system(options = {})
45
+ c = command(options)
46
+ debug_print(c)
47
+ Kernel.system(c)
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/hash/indifferent_access'
4
+ require 'active_support/core_ext/object/blank'
5
+ require 'shellwords'
6
+
7
+ module EacRubyUtils
8
+ module Envs
9
+ module BaseCommand
10
+ module ExtraOptions
11
+ # @return [ActiveSupport::HashWithIndifferentAccess]
12
+ def extra_options
13
+ @extra_options ||= {}.with_indifferent_access
14
+ end
15
+
16
+ def status_result(status_code, result)
17
+ duplicate_by_extra_options(status_results: status_results.merge(status_code => result))
18
+ end
19
+
20
+ private
21
+
22
+ def status_results
23
+ extra_options[:status_results] ||= {}.with_indifferent_access
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end