eac_tools 0.46.0 → 0.47.1

Sign up to get free protection for your applications and to get access to all the features.
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