avm-tools 0.113.2 → 0.113.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/lib/avm/eac_writings_base0/commons.rb +1 -1
  3. data/lib/avm/patches/i18n.rb +2 -2
  4. data/lib/avm/ruby/gems/generator.rb +1 -1
  5. data/lib/avm/tools/runner/config/load_path.rb +0 -1
  6. data/lib/avm/tools/runner/self.rb +2 -2
  7. data/lib/avm/tools/runner.rb +2 -2
  8. data/lib/avm/tools/self.rb +23 -0
  9. data/lib/avm/tools/version.rb +1 -1
  10. data/sub/avm/lib/avm/instances/application.rb +4 -0
  11. data/sub/avm/lib/avm/instances/base/auto_values/data.rb +2 -2
  12. data/sub/avm/lib/avm/instances/base/auto_values/filesystem.rb +6 -8
  13. data/sub/avm/lib/avm/instances/entry.rb +10 -4
  14. data/sub/avm/lib/avm/instances/entry_keys.rb +1 -1
  15. data/sub/avm/lib/avm/self/instance.rb +8 -0
  16. data/sub/avm/lib/avm/sources/base.rb +1 -1
  17. data/sub/avm/lib/avm/version.rb +1 -1
  18. data/sub/avm-eac_asciidoctor_base0/avm-eac_asciidoctor_base0.gemspec +1 -1
  19. data/sub/avm-eac_asciidoctor_base0/lib/avm/eac_asciidoctor_base0/version.rb +1 -1
  20. data/sub/avm-eac_postgresql_base0/Gemfile +5 -0
  21. data/sub/avm-eac_postgresql_base0/avm-eac_postgresql_base0.gemspec +19 -0
  22. data/{lib/avm/postgresql → sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0}/instance/data_unit.rb +1 -1
  23. data/{lib/avm/postgresql → sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0}/instance.rb +3 -3
  24. data/{lib/avm/postgresql → sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0}/instance_with.rb +3 -3
  25. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0/version.rb +7 -0
  26. data/sub/avm-eac_postgresql_base0/lib/avm/eac_postgresql_base0.rb +9 -0
  27. data/sub/avm-eac_postgresql_base0/spec/rubocop_spec.rb +3 -0
  28. data/sub/avm-eac_postgresql_base0/spec/spec_helper.rb +4 -0
  29. data/sub/avm-eac_rails_base0/avm-eac_rails_base0.gemspec +2 -2
  30. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/apache_path.rb +1 -1
  31. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/deploy.rb +1 -1
  32. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/runners/base.rb +2 -0
  33. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/version.rb +1 -1
  34. data/sub/avm-eac_rails_base0/spec/lib/avm/eac_rails_base0/apache_path_spec.rb +1 -1
  35. data/sub/avm-eac_rails_base0/spec/spec_helper.rb +1 -0
  36. data/sub/avm-eac_rails_base1/avm-eac_rails_base1.gemspec +2 -1
  37. data/sub/avm-eac_rails_base1/lib/avm/eac_rails_base1/version.rb +1 -1
  38. data/sub/avm-eac_redmine_base0/avm-eac_redmine_base0.gemspec +1 -1
  39. data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/docker_image.rb +1 -1
  40. data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/version.rb +1 -1
  41. data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +1 -1
  42. data/sub/avm-eac_ubuntu_base0/avm-eac_ubuntu_base0.gemspec +1 -1
  43. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/docker_image.rb +1 -1
  44. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/runners/base.rb +4 -0
  45. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/version.rb +1 -1
  46. data/sub/avm-eac_ubuntu_base0/spec/lib/avm/eac_ubuntu_base0/runners/base/docker_spec.rb +14 -0
  47. data/sub/avm-eac_webapp_base0/avm-eac_webapp_base0.gemspec +3 -1
  48. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/apache_host.rb +1 -2
  49. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/deploy.rb +1 -1
  50. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/instance.rb +2 -2
  51. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/version.rb +1 -1
  52. data/{template → sub/avm-eac_webapp_base0/template}/avm/eac_webapp_base0/apache_host/no_ssl.conf +0 -0
  53. data/{template → sub/avm-eac_webapp_base0/template}/avm/eac_webapp_base0/apache_path/default.conf +0 -0
  54. data/sub/avm-git/avm-git.gemspec +1 -1
  55. data/sub/avm-git/lib/avm/git/issue/complete/commits.rb +3 -3
  56. data/sub/avm-git/lib/avm/git/issue/complete/git_subrepos.rb +1 -1
  57. data/sub/avm-git/lib/avm/git/issue/complete/local_branch.rb +13 -6
  58. data/sub/avm-git/lib/avm/git/issue/complete/local_tag.rb +3 -3
  59. data/sub/avm-git/lib/avm/git/issue/complete/push.rb +15 -9
  60. data/sub/avm-git/lib/avm/git/issue/complete/remote.rb +2 -2
  61. data/sub/avm-git/lib/avm/git/issue/complete/test.rb +1 -1
  62. data/sub/avm-git/lib/avm/git/issue/complete/tracker.rb +1 -1
  63. data/sub/avm-git/lib/avm/git/issue/complete/validation.rb +13 -5
  64. data/sub/avm-git/lib/avm/git/issue/complete/working_tree.rb +1 -1
  65. data/sub/avm-git/lib/avm/git/issue/complete.rb +22 -7
  66. data/sub/avm-git/lib/avm/git/version.rb +1 -1
  67. data/sub/eac_cli/eac_cli.gemspec +2 -2
  68. data/sub/eac_cli/lib/eac_cli/config/entry/options.rb +1 -1
  69. data/sub/eac_cli/lib/eac_cli/config/entry/undefined.rb +1 -1
  70. data/sub/eac_cli/lib/eac_cli/config/entry.rb +5 -1
  71. data/sub/eac_cli/lib/eac_cli/rspec/setup.rb +42 -0
  72. data/sub/eac_cli/lib/eac_cli/rspec.rb +9 -0
  73. data/sub/eac_cli/lib/eac_cli/speaker/constants.rb +13 -0
  74. data/sub/eac_cli/lib/eac_cli/version.rb +1 -1
  75. data/sub/eac_config/eac_config.gemspec +1 -1
  76. data/sub/eac_config/lib/eac_config/entry.rb +4 -0
  77. data/sub/eac_config/lib/eac_config/node_entry.rb +4 -0
  78. data/sub/eac_config/lib/eac_config/rspec/setup.rb +35 -0
  79. data/sub/eac_config/lib/eac_config/version.rb +1 -1
  80. data/sub/eac_fs/lib/eac_fs/logs/file.rb +6 -0
  81. data/sub/eac_fs/lib/eac_fs/logs.rb +5 -0
  82. data/sub/eac_fs/lib/eac_fs/version.rb +1 -1
  83. data/sub/eac_git/eac_git.gemspec +1 -1
  84. data/sub/eac_git/lib/eac_git/local/branch.rb +27 -0
  85. data/sub/eac_git/lib/eac_git/local.rb +18 -0
  86. data/sub/eac_git/lib/eac_git/version.rb +1 -1
  87. data/sub/eac_ruby_base0/eac_ruby_base0.gemspec +1 -1
  88. data/sub/eac_ruby_base0/lib/eac_ruby_base0/rspec/setup.rb +14 -0
  89. data/sub/eac_ruby_base0/lib/eac_ruby_base0/rspec.rb +9 -0
  90. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +21 -8
  91. data/sub/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  92. data/sub/eac_ruby_utils/eac_ruby_utils.gemspec +1 -1
  93. data/sub/eac_ruby_utils/lib/eac_ruby_utils/context.rb +2 -0
  94. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/to_struct.rb +10 -0
  95. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/mkpath_s.rb +12 -0
  96. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  97. data/sub/eac_templates/lib/eac_templates/core_ext.rb +4 -0
  98. data/sub/eac_templates/lib/eac_templates/from_all_gems.rb +4 -0
  99. data/sub/eac_templates/lib/eac_templates/from_gem.rb +35 -0
  100. data/sub/eac_templates/lib/eac_templates/version.rb +1 -1
  101. metadata +38 -32
  102. data/lib/avm/patches/object/template.rb +0 -7
  103. data/lib/avm/patches/object.rb +0 -4
  104. data/lib/avm/postgresql.rb +0 -9
  105. data/lib/avm/self/root.rb +0 -13
  106. data/lib/avm/self.rb +0 -30
  107. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/patches/object/template.rb +0 -7
  108. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/patches/object.rb +0 -4
  109. data/sub/avm-eac_rails_base0/lib/avm/eac_rails_base0/patches.rb +0 -4
  110. data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/patches/object/template.rb +0 -7
  111. data/sub/avm-eac_ubuntu_base0/lib/avm/eac_ubuntu_base0/patches/object/template.rb +0 -7
  112. data/sub/eac_cli/lib/eac_cli/old_configs_bridge.rb +0 -39
  113. data/sub/eac_cli/lib/eac_cli/speaker/_constants.rb +0 -12
  114. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner/test_all.rb +0 -22
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
13
13
  s.files = Dir['{lib}/**/*']
14
14
 
15
15
  s.add_dependency 'avm-files', '~> 0.1'
16
- s.add_dependency 'eac_git', '~> 0.9'
16
+ s.add_dependency 'eac_git', '~> 0.11'
17
17
  s.add_dependency 'eac_ruby_utils', '~> 0.76'
18
18
 
19
19
  s.add_development_dependency 'aranha-parsers', '~> 0.8', '>= 0.8.5'
@@ -15,7 +15,7 @@ module Avm
15
15
  return [] unless branch_hash && follow_master?
16
16
 
17
17
  interval = remote_master_hash ? "#{remote_master_hash}..#{branch_hash}" : branch_hash
18
- @git.execute!('rev-list', interval).each_line.map(&:strip)
18
+ launcher_git.execute!('rev-list', interval).each_line.map(&:strip)
19
19
  end
20
20
 
21
21
  def bifurcations_result
@@ -32,8 +32,8 @@ module Avm
32
32
  end
33
33
 
34
34
  def commit_parents(commit)
35
- @git.execute!('log', '--pretty=%P', '-n', '1', commit).split(' ').map(&:strip)
36
- .select(&:present?)
35
+ launcher_git.execute!('log', '--pretty=%P', '-n', '1', commit).split(' ').map(&:strip)
36
+ .select(&:present?)
37
37
  end
38
38
  end
39
39
  end
@@ -12,7 +12,7 @@ module Avm
12
12
  return ::Avm::Result.error('Unclean workspace') unless clean_workspace?
13
13
 
14
14
  infom 'Checking Git subrepos...'
15
- r = ::Avm::Git::SubrepoChecks.new(::EacGit::Local.new(@git)).add_all_subrepos
15
+ r = ::Avm::Git::SubrepoChecks.new(::EacGit::Local.new(launcher_git)).add_all_subrepos
16
16
  r.check_remote = true
17
17
  r.result
18
18
  end
@@ -7,16 +7,21 @@ module Avm
7
7
  module Issue
8
8
  class Complete
9
9
  module LocalBranch
10
+ NO_CURRENT_BRANCH_NAME = 'none'
11
+
12
+ # Retrieves the current local branch.
13
+ #
14
+ # @return [EacGit::Local::Branch, nil]
10
15
  def branch_uncached
11
- @git.current_branch
16
+ eac_git.current_branch
12
17
  end
13
18
 
14
19
  def branch_hash_uncached
15
- @git.rev_parse("refs/heads/#{branch}")
20
+ branch.if_present(&:current_commit_id)
16
21
  end
17
22
 
18
23
  def branch_name
19
- branch.split('/')[-1]
24
+ branch.if_present(NO_CURRENT_BRANCH_NAME, &:name)
20
25
  end
21
26
 
22
27
  def branch_name_result
@@ -38,14 +43,16 @@ module Avm
38
43
  end
39
44
 
40
45
  def follow_master?
41
- remote_master_hash ? @git.descendant?(branch_hash, remote_master_hash) : true
46
+ remote_master_hash ? launcher_git.descendant?(branch_hash, remote_master_hash) : true
42
47
  end
43
48
 
44
49
  def remove_local_branch
50
+ return unless branch
51
+
45
52
  info 'Removendo branch local...'
46
53
  bn = branch_name
47
- git(['checkout', branch_hash])
48
- git(['branch', '-D', bn])
54
+ git_execute(['checkout', branch_hash])
55
+ git_execute(['branch', '-D', bn])
49
56
  end
50
57
  end
51
58
  end
@@ -18,7 +18,7 @@ module Avm
18
18
 
19
19
  def delete_tag
20
20
  info 'Removendo tag...'
21
- git(['tag', '-d', branch_name])
21
+ git_execute(['tag', '-d', branch_name])
22
22
  end
23
23
 
24
24
  def tag
@@ -26,11 +26,11 @@ module Avm
26
26
  end
27
27
 
28
28
  def tag_hash
29
- @git.rev_parse(tag)
29
+ launcher_git.rev_parse(tag)
30
30
  end
31
31
 
32
32
  def create_tag
33
- git(['tag', branch_name, branch_hash])
33
+ git_execute(['tag', branch_name, branch_hash])
34
34
  end
35
35
  end
36
36
  end
@@ -12,13 +12,7 @@ module Avm
12
12
  def dry_push_result
13
13
  return ::Avm::Result.error('Nothing to push') if pushs.empty?
14
14
 
15
- r = @git.execute(dry_push_args)
16
- message = if r.fetch(:exit_code).zero?
17
- 'ok'
18
- else
19
- r.fetch(:stderr) + "\n#{::Shellwords.join(dry_push_args)}"
20
- end
21
- ::Avm::Result.success_or_error(r.fetch(:exit_code).zero?, message)
15
+ dry_push_execution_result
22
16
  end
23
17
 
24
18
  def push
@@ -26,7 +20,7 @@ module Avm
26
20
  info 'PUSH: Nada a enviar'
27
21
  else
28
22
  info "PUSH: enviando \"#{pushs}\"..."
29
- git(%w[push origin] + pushs)
23
+ git_execute(%w[push origin] + pushs)
30
24
  end
31
25
  end
32
26
 
@@ -39,7 +33,7 @@ module Avm
39
33
  end
40
34
 
41
35
  def remove_branch_push
42
- remote_branch_hash ? ":refs/heads/#{branch}" : nil
36
+ remote_branch_hash ? ":refs/heads/#{branch.name}" : nil
43
37
  end
44
38
 
45
39
  def tag_push
@@ -47,6 +41,18 @@ module Avm
47
41
 
48
42
  "#{branch_hash}:#{tag}"
49
43
  end
44
+
45
+ private
46
+
47
+ def dry_push_execution_result
48
+ r = launcher_git.execute(dry_push_args)
49
+ message = if r.fetch(:exit_code).zero?
50
+ 'ok'
51
+ else
52
+ r.fetch(:stderr) + "\n#{::Shellwords.join(dry_push_args)}"
53
+ end
54
+ ::Avm::Result.success_or_error(r.fetch(:exit_code).zero?, message)
55
+ end
50
56
  end
51
57
  end
52
58
  end
@@ -10,7 +10,7 @@ module Avm
10
10
  end
11
11
 
12
12
  def remote_branch_hash
13
- remote_hashs["refs/heads/#{branch}"]
13
+ remote_hashs["refs/heads/#{branch.name}"]
14
14
  end
15
15
 
16
16
  def remote_tag_hash
@@ -24,7 +24,7 @@ module Avm
24
24
  end
25
25
 
26
26
  def remote_hashs_uncached
27
- @git.remote_hashs(remote_name)
27
+ launcher_git.remote_hashs(remote_name)
28
28
  end
29
29
  end
30
30
  end
@@ -28,7 +28,7 @@ module Avm
28
28
 
29
29
  def test_performer
30
30
  ::Avm::Sources::Tests::Builder
31
- .new(::Avm::Registry.sources.detect(@git))
31
+ .new(::Avm::Registry.sources.detect(launcher_git))
32
32
  .include_main(true)
33
33
  .include_subs(true)
34
34
  .performer
@@ -19,7 +19,7 @@ module Avm
19
19
  end
20
20
 
21
21
  def branch_short_hash
22
- git(['log', '--pretty=format:%h', '-1', '-q', branch_hash])
22
+ git_execute(['log', '--pretty=format:%h', '-1', '-q', branch_hash])
23
23
  end
24
24
  end
25
25
  end
@@ -11,6 +11,8 @@ module Avm
11
11
  enable_simple_cache
12
12
  common_constructor :parent, :key, :label
13
13
 
14
+ SKIPPED_RESULT_MESSAGE = 'skipped'
15
+
14
16
  def skip?
15
17
  parent.skip_validations.include?(key)
16
18
  end
@@ -18,11 +20,17 @@ module Avm
18
20
  private
19
21
 
20
22
  def result_uncached
21
- if skip?
22
- ::Avm::Result.neutral('skipped')
23
- else
24
- parent.send("#{key}_result")
25
- end
23
+ skip? ? skipped_result : validation_result
24
+ end
25
+
26
+ def skipped_result
27
+ ::Avm::Result.neutral(SKIPPED_RESULT_MESSAGE)
28
+ end
29
+
30
+ def validation_result
31
+ parent.send("#{key}_result")
32
+ rescue ::RuntimeError => e
33
+ ::Avm::Result.error("error raised: #{e.message}")
26
34
  end
27
35
  end
28
36
  end
@@ -10,7 +10,7 @@ module Avm
10
10
  end
11
11
 
12
12
  def clean_workspace?
13
- @git.dirty_files.none?
13
+ launcher_git.dirty_files.none?
14
14
  end
15
15
  end
16
16
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'avm/tools/core_ext'
4
+ require 'eac_git/local'
4
5
 
5
6
  module Avm
6
7
  module Git
@@ -10,14 +11,15 @@ module Avm
10
11
  enable_simple_cache
11
12
  enable_speaker
12
13
 
13
- attr_reader :skip_validations
14
+ BRANCH_NAME_ISSUE_ID_PATTERN =
15
+
16
+ attr_reader :dir, :skip_validations
14
17
 
15
18
  def initialize(options)
16
19
  consumer = ::EacRubyUtils::OptionsConsumer.new(options)
17
- dir, @skip_validations = consumer.consume_all(:dir, :skip_validations)
20
+ @dir, @skip_validations = consumer.consume_all(:dir, :skip_validations)
18
21
  validate_skip_validations
19
22
  consumer.validate
20
- @git = ::Avm::Launcher::Git::Base.new(dir)
21
23
  end
22
24
 
23
25
  def start_banner
@@ -35,16 +37,29 @@ module Avm
35
37
  end
36
38
 
37
39
  def issue_id
38
- m = branch_name.match(/\A#{Regexp.quote('issue_')}(\d+)\z/)
39
- m ? m[1].to_i : nil
40
+ branch ? issue_id_parser.parse(branch_name) : nil
41
+ end
42
+
43
+ # @return [EacRubyUtils::RegexpParser]
44
+ def issue_id_parser
45
+ /\A#{Regexp.quote('issue_')}(\d+)\z/.to_parser { |m| m[1].to_i }
40
46
  end
41
47
 
42
48
  private
43
49
 
44
- def git(args, exit_outputs = {})
45
- r = @git.execute!(args, exit_outputs: exit_outputs)
50
+ # @return [EacGit::Local]
51
+ def eac_git_uncached
52
+ ::EacGit::Local.new(dir)
53
+ end
54
+
55
+ def git_execute(args, exit_outputs = {})
56
+ r = launcher_git.execute!(args, exit_outputs: exit_outputs)
46
57
  r.is_a?(String) ? r.strip : r
47
58
  end
59
+
60
+ def launcher_git_uncached
61
+ ::Avm::Launcher::Git::Base.new(dir)
62
+ end
48
63
  end
49
64
  end
50
65
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Git
5
- VERSION = '0.3.0'
5
+ VERSION = '0.3.1'
6
6
  end
7
7
  end
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
13
13
  s.files = Dir['{lib}/**/*', 'Gemfile']
14
14
 
15
15
  s.add_dependency 'colorize', '~> 0.8.1'
16
- s.add_dependency 'eac_config', '~> 0.5', '>= 0.5.3'
17
- s.add_dependency 'eac_ruby_utils', '~> 0.80'
16
+ s.add_dependency 'eac_config', '~> 0.8'
17
+ s.add_dependency 'eac_ruby_utils', '~> 0.83'
18
18
 
19
19
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.3'
20
20
  end
@@ -3,7 +3,7 @@
3
3
  require 'eac_ruby_utils/core_ext'
4
4
 
5
5
  module EacCli
6
- class Config
6
+ class Config < ::SimpleDelegator
7
7
  class Entry
8
8
  class Options
9
9
  enable_simple_cache
@@ -3,7 +3,7 @@
3
3
  require 'eac_ruby_utils/core_ext'
4
4
 
5
5
  module EacCli
6
- class Config
6
+ class Config < ::SimpleDelegator
7
7
  class Entry
8
8
  module Undefined
9
9
  private
@@ -5,7 +5,7 @@ require 'eac_config/entry_path'
5
5
  require 'eac_ruby_utils/core_ext'
6
6
 
7
7
  module EacCli
8
- class Config
8
+ class Config < ::SimpleDelegator
9
9
  class Entry
10
10
  require_sub __FILE__, include_modules: true
11
11
  enable_listable
@@ -24,6 +24,10 @@ module EacCli
24
24
  input_value
25
25
  end
26
26
 
27
+ def secret_value
28
+ self.class.new(config, path, options.merge(noecho: true)).value
29
+ end
30
+
27
31
  delegate :found?, :value=, to: :sub_entry
28
32
 
29
33
  private
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/config/entry'
4
+ require 'eac_cli/speaker'
5
+ require 'eac_ruby_utils/core_ext'
6
+ require 'eac_ruby_utils/speaker'
7
+
8
+ module EacCli
9
+ module Rspec
10
+ module Setup
11
+ def disable_input_request
12
+ disable_config_input_request
13
+ disable_speaker_input_request
14
+ end
15
+
16
+ def disable_config_input_request
17
+ rspec_config.before do
18
+ allow_any_instance_of(::EacCli::Config::Entry).to receive(:input_value) do |obj|
19
+ raise "Console input requested for entry (Path: #{obj.path})"
20
+ end
21
+ end
22
+ end
23
+
24
+ def disable_speaker_input_request
25
+ ::RSpec.configure do |config|
26
+ config.around do |example|
27
+ ::EacRubyUtils::Speaker
28
+ .context.on(::EacCli::Speaker.new(in_in: FailIfRequestInput.new)) { example.run }
29
+ end
30
+ end
31
+ end
32
+
33
+ class FailIfRequestInput
34
+ %w[gets noecho].each do |method|
35
+ define_method(method) do
36
+ raise "Input method requested: #{method}. Should not request input on RSpec."
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_exts'
4
+
5
+ module EacCli
6
+ module Rspec
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/by_reference'
4
+
5
+ module EacCli
6
+ class Speaker
7
+ module Constants
8
+ STDERR = ::EacRubyUtils::ByReference.new { $stderr }
9
+ STDIN = ::EacRubyUtils::ByReference.new { $stdin }
10
+ STDOUT = ::EacRubyUtils::ByReference.new { $stdout }
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacCli
4
- VERSION = '0.24.1'
4
+ VERSION = '0.26.0'
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 'addressable'
16
- s.add_dependency 'eac_ruby_utils', '~> 0.81'
16
+ s.add_dependency 'eac_ruby_utils', '~> 0.83'
17
17
 
18
18
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.3'
19
19
  end
@@ -18,6 +18,10 @@ module EacConfig
18
18
  node_entry.if_present(&:node)
19
19
  end
20
20
 
21
+ def secret_value
22
+ node_entry.if_present(&:secret_value)
23
+ end
24
+
21
25
  def value
22
26
  node_entry.if_present(&:value)
23
27
  end
@@ -14,5 +14,9 @@ module EacConfig
14
14
  end
15
15
 
16
16
  abstract_methods :found?, :value, :value=
17
+
18
+ def secret_value
19
+ value
20
+ end
17
21
  end
18
22
  end
@@ -1,7 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/fs/temp'
4
5
  require 'eac_config/envvars_node'
6
+ require 'eac_config/node'
7
+ require 'eac_config/yaml_file_node'
5
8
 
6
9
  module EacConfig
7
10
  module Rspec
@@ -25,6 +28,38 @@ module EacConfig
25
28
  def envvars_load_path_entry
26
29
  ::EacConfig::EnvvarsNode.new.load_path.entry
27
30
  end
31
+
32
+ # Wraps a RSpec example in a EacConfig node using a alternative file.
33
+ #
34
+ # @param target_example [RSpec::Core::ExampleGroup] The example to wrap. If not provided,
35
+ # it is applied to all examples.
36
+ # @param target_file [Pathname] The file used by the EacConfig node. If not provided, a
37
+ # temporary file is used.
38
+ # @param node_builder [Proc] Should return the desired EacConfig node. If not provided, a
39
+ # EacConfig::YamlFileNode is created.
40
+ def stub_eac_config_node(target_example = nil, target_file = nil, &node_builder)
41
+ parent_self = self
42
+ (target_example || rspec_config).around do |example|
43
+ parent_self.stub_eac_config_node_on_file(target_file) do |file|
44
+ ::EacConfig::Node
45
+ .context.on(parent_self.stub_eac_config_node_build(file, &node_builder)) do
46
+ example.run
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ def stub_eac_config_node_build(file, &node_builder)
53
+ node_builder.present? ? node_builder.call(file) : ::EacConfig::YamlFileNode.new(file)
54
+ end
55
+
56
+ def stub_eac_config_node_on_file(target_file)
57
+ if target_file
58
+ yield(target_file.to_pathname)
59
+ else
60
+ ::EacRubyUtils::Fs::Temp.on_file { |file| yield(file) }
61
+ end
62
+ end
28
63
  end
29
64
  end
30
65
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacConfig
4
- VERSION = '0.5.3'
4
+ VERSION = '0.8.0'
5
5
  end
@@ -11,6 +11,12 @@ module EacFs
11
11
  TRUNCATE_DEFAULT_LENGTH = 1000
12
12
  TRUNCATE_APPEND_TEXT = '(...) '
13
13
 
14
+ delegate :remove, to: :file
15
+
16
+ def clean
17
+ file.truncate(0) if file.exist?
18
+ end
19
+
14
20
  def file_size
15
21
  file.file? ? file.size : 0
16
22
  end
@@ -23,6 +23,11 @@ module EacFs
23
23
  self
24
24
  end
25
25
 
26
+ # @return [EacFs::Logs]
27
+ def clean_all
28
+ log_set.values.each(&:clean)
29
+ end
30
+
26
31
  # @return [EacFs::Logs]
27
32
  def remove_all
28
33
  log_set.each_key { |label| remove(label) }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacFs
4
- VERSION = '0.8.0'
4
+ VERSION = '0.9.0'
5
5
  end
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib,vendor}/**/*']
14
14
 
15
- s.add_dependency 'eac_ruby_utils', '~> 0.74'
15
+ s.add_dependency 'eac_ruby_utils', '~> 0.83'
16
16
  s.add_dependency 'parseconfig', '~> 1.0', '>= 1.0.8'
17
17
 
18
18
  s.add_development_dependency 'aranha-parsers', '~> 0.8', '>= 0.8.2'
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacGit
6
+ class Local
7
+ class Branch
8
+ REFS_PREFIX = 'refs/heads/'
9
+
10
+ common_constructor :local, :name
11
+
12
+ # @return [String]
13
+ def current_commit_id
14
+ local.rev_parse(full_ref_name, true)
15
+ end
16
+
17
+ # @return [Boolean]
18
+ def exist?
19
+ local.command('show-ref', '--quiet', full_ref_name).execute.fetch(:exit_code).zero?
20
+ end
21
+
22
+ def full_ref_name
23
+ "#{REFS_PREFIX}#{name}"
24
+ end
25
+ end
26
+ end
27
+ end
@@ -30,6 +30,14 @@ module EacGit
30
30
  root_path <=> other.root_path
31
31
  end
32
32
 
33
+ # Retrieves a local branch.
34
+ #
35
+ # @param name [String] Ex.: for "refs/heads/master", name should be "master".
36
+ # @return [EacGit::Local::Branch]
37
+ def branch(name)
38
+ ::EacGit::Local::Branch.new(self, name)
39
+ end
40
+
33
41
  def commit(ref, required = false)
34
42
  rev_parse(ref, required).if_present { |v| ::EacGit::Local::Commit.new(self, v) }
35
43
  end
@@ -44,6 +52,16 @@ module EacGit
44
52
  source.to_s.strip.if_present(nil) { |v| ::EacGit::Local::Commit.new(self, v) }
45
53
  end
46
54
 
55
+ # Retrieves the current local branch.
56
+ #
57
+ # @return [EacGit::Local::Branch, nil]
58
+ def current_branch
59
+ command('symbolic-ref', '--quiet', HEAD_REFERENCE)
60
+ .execute!(exit_outputs: { 256 => '' })
61
+ .gsub(%r{\Arefs/heads/}, '').strip
62
+ .if_present { |v| branch(v) }
63
+ end
64
+
47
65
  def descendant?(descendant, ancestor)
48
66
  base = merge_base(descendant, ancestor)
49
67
  return false if base.blank?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacGit
4
- VERSION = '0.10.0'
4
+ VERSION = '0.11.0'
5
5
  end
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib}/**/*']
14
14
 
15
- s.add_dependency 'eac_cli', '~> 0.24', '>= 0.24.1'
15
+ s.add_dependency 'eac_cli', '~> 0.26'
16
16
  s.add_dependency 'eac_fs', '~> 0.3'
17
17
  s.add_dependency 'eac_ruby_gems_utils', '~> 0.9', '~> 0.9.6'
18
18
  s.add_dependency 'eac_ruby_utils', '~> 0.70'