avm-tools 0.113.6 → 0.114.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/lib/avm/launcher/context.rb +19 -8
  3. data/lib/avm/tools/runner/app_src/ruby/bundler/incompatible.rb +2 -2
  4. data/lib/avm/tools/version.rb +1 -1
  5. data/sub/avm-files/lib/avm/files/version.rb +1 -1
  6. data/sub/avm-git/lib/avm/git/revision_test.rb +1 -1
  7. data/sub/avm-git/lib/avm/git/version.rb +1 -1
  8. data/sub/eac_cli/lib/eac_cli/config/entry.rb +1 -1
  9. data/sub/eac_cli/lib/eac_cli/version.rb +1 -1
  10. data/sub/eac_fs/lib/eac_fs/cached_download.rb +1 -1
  11. data/sub/eac_fs/lib/eac_fs/contexts.rb +21 -0
  12. data/sub/eac_fs/lib/eac_fs/patches/module/fs_cache.rb +9 -4
  13. data/sub/eac_fs/lib/eac_fs/patches/object/fs_cache.rb +16 -6
  14. data/sub/eac_fs/lib/eac_fs/{cache.rb → storage_tree.rb} +6 -8
  15. data/sub/eac_fs/lib/eac_fs/version.rb +1 -1
  16. data/sub/eac_fs/spec/lib/eac_fs/{cache_spec.rb → storage_tree_spec.rb} +5 -5
  17. data/sub/eac_git/lib/eac_git/local/commit.rb +1 -0
  18. data/sub/eac_git/lib/eac_git/local/remotes.rb +20 -0
  19. data/sub/eac_git/lib/eac_git/version.rb +1 -1
  20. data/sub/eac_ruby_base0/eac_ruby_base0.gemspec +1 -1
  21. data/sub/eac_ruby_base0/lib/eac_ruby_base0/application.rb +9 -5
  22. data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +10 -4
  23. data/sub/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  24. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/if_exist.rb +10 -0
  25. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/readlink_r.rb +11 -0
  26. data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/stub_speaker.rb +39 -0
  27. data/sub/eac_ruby_utils/lib/eac_ruby_utils/speaker/receiver.rb +7 -0
  28. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  29. metadata +9 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9f0c1b42a6d34ae3d070dbbae54375ddd08eab2a177c5c46cc9d42de8165d10a
4
- data.tar.gz: ff02a56141cb130c4b0e9c7fc651ebe3de42ba13ec6c56557fbae70f96ff693c
3
+ metadata.gz: ab94e9f5fae951a039dc33fadb807fa8331899a843526fa957beeb05193a8419
4
+ data.tar.gz: ebb72038ffaa5b8c9c37d20e8b7a6de6b6303886665940474c36318804cdc600
5
5
  SHA512:
6
- metadata.gz: c12fcce202f2eb1b40b58485dbf790e29b7f6bb183d450ce3c9f8a479abf9ae35a77865990c481ad1f2a28b18110bcc4e3db82ecc880c355f040eb8646433143
7
- data.tar.gz: d85bb09c92c7d6b1f0414f66509da068ff018d8ec1da32b730f00fe99cc723895d4e09d205f5964cd562a61647c849017f2fe3def50f3fdfec45c770a9d2d8a6
6
+ metadata.gz: b25329ca5da5c3aeda2bd26b9f2cf91edadfe965e3eba3e891eb590a3b7a9483870b80e45b2e804eb44d56877445c1da00a98b75b9c8feac81fb44165020e21a
7
+ data.tar.gz: bf211cebb15418b176c681020f825e64ba8d12cecd3d2022b3026326fcc3d062e846c763143b75cf17a2d38f7c71b244b4748166deb3cc873fe61eac319afc3b
@@ -8,6 +8,7 @@ require 'avm/launcher/context/instance_discovery'
8
8
  require 'avm/launcher/context/settings'
9
9
  require 'avm/launcher/paths/logical'
10
10
  require 'avm/launcher/project'
11
+ require 'avm/tools/self'
11
12
 
12
13
  module Avm
13
14
  module Launcher
@@ -15,10 +16,6 @@ module Avm
15
16
  include ::EacRubyUtils::SimpleCache
16
17
  enable_speaker
17
18
 
18
- DEFAULT_PROJECTS_ROOT = '.'
19
- DEFAULT_SETTINGS_FILE = ::File.join(ENV['HOME'], '.config', 'eac_launcher', 'settings.yml')
20
- DEFAULT_CACHE_ROOT = ::File.join(ENV['HOME'], '.cache', 'eac_launcher')
21
-
22
19
  class << self
23
20
  attr_writer :current
24
21
 
@@ -34,6 +31,8 @@ module Avm
34
31
  attr_reader :root, :settings, :cache_root
35
32
  attr_accessor :publish_options, :recache, :instance_manager
36
33
 
34
+ CONFIG_PATH_PREFIX = 'launcher'
35
+
37
36
  def initialize(options = {})
38
37
  @options = options.with_indifferent_access
39
38
  @root = ::Avm::Launcher::Paths::Logical.new(self, nil, build_option(:projects_root), '/')
@@ -59,15 +58,27 @@ module Avm
59
58
  private
60
59
 
61
60
  def build_option(key)
62
- @options[key] || env_option(key) || default_option(key)
61
+ @options[key] || config_option(key) || default_option(key)
62
+ end
63
+
64
+ def config_option(key)
65
+ ::Avm::Self::Instance.default.entry([CONFIG_PATH_PREFIX, key].join('.')).optional_value
63
66
  end
64
67
 
65
- def env_option(key)
66
- ENV["EAC_LAUNCHER_#{key}".underscore.upcase]
68
+ def default_cache_root
69
+ ::Avm::Tools::Self.application.cache_dir.join('launcher')
67
70
  end
68
71
 
69
72
  def default_option(key)
70
- self.class.const_get("DEFAULT_#{key}".underscore.upcase)
73
+ send("default_#{key}".underscore)
74
+ end
75
+
76
+ def default_projects_root
77
+ '.'
78
+ end
79
+
80
+ def default_settings_file
81
+ ::Avm::Tools::Self.application.config_dir.join('launcher.yaml')
71
82
  end
72
83
 
73
84
  def projects_uncached
@@ -17,7 +17,7 @@ module Avm
17
17
 
18
18
  def run
19
19
  infov 'Cache path', fs_cache.content_path
20
- infov 'Cached?', fs_cache.cached?
20
+ infov 'Cached?', fs_cache.stored?
21
21
  parser.gems_in_conflict.each do |gem_in_conflict|
22
22
  print_gem_in_conflict(gem_in_conflict)
23
23
  end
@@ -31,7 +31,7 @@ module Avm
31
31
  end
32
32
 
33
33
  def content_path
34
- fs_cache.write(bundle_update) unless fs_cache.cached? && parsed.last?
34
+ fs_cache.write(bundle_update) unless fs_cache.stored? && parsed.last?
35
35
  fs_cache.content_path
36
36
  end
37
37
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Tools
5
- VERSION = '0.113.6'
5
+ VERSION = '0.114.0'
6
6
  end
7
7
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Files
5
- VERSION = '0.2.0'
5
+ VERSION = '0.2.1'
6
6
  end
7
7
  end
@@ -77,7 +77,7 @@ module Avm
77
77
  end
78
78
 
79
79
  def successful_uncached
80
- if options.fetch(:no_cache) || !successful_cache.cached?
80
+ if options.fetch(:no_cache) || !successful_cache.stored?
81
81
  checkout_revision
82
82
  run_test
83
83
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Git
5
- VERSION = '0.3.1'
5
+ VERSION = '0.3.2'
6
6
  end
7
7
  end
@@ -25,7 +25,7 @@ module EacCli
25
25
  end
26
26
 
27
27
  def secret_value
28
- self.class.new(config, path, options.merge(noecho: true)).value
28
+ self.class.new(config, path, options.to_h.merge(noecho: true).to_h).value
29
29
  end
30
30
 
31
31
  delegate :found?, :value=, to: :sub_entry
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacCli
4
- VERSION = '0.26.0'
4
+ VERSION = '0.26.1'
5
5
  end
@@ -13,7 +13,7 @@ module Avm
13
13
  end
14
14
 
15
15
  def assert
16
- download unless fs_cache.cached?
16
+ download unless fs_cache.stored?
17
17
  end
18
18
 
19
19
  def download
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/context'
5
+
6
+ module EacFs
7
+ class Contexts
8
+ TYPES = %i[cache config data].freeze
9
+
10
+ class << self
11
+ TYPES.each do |type|
12
+ class_eval <<~CODE, __FILE__, __LINE__ + 1
13
+ # @return [EacRubyUtils::Context<EacFs::StorageTree>]
14
+ def #{type}
15
+ @#{type} ||= ::EacRubyUtils::Context.new
16
+ end
17
+ CODE
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,10 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_fs/cache'
3
+ require 'eac_fs/contexts'
4
4
 
5
5
  class Module
6
- # @return [EacFs::Cache]
7
- def fs_cache
8
- ::EacFs::Cache.context.current.child('fs_cache', *name.split('::'))
6
+ ::EacFs::Contexts::TYPES.each do |type|
7
+ method_name = "fs_#{type}"
8
+ class_eval <<~CODE, __FILE__, __LINE__ + 1
9
+ # @return [EacFs::StorageTree]
10
+ def #{method_name}
11
+ ::EacFs::Contexts.#{type}.current.child('#{method_name}', *name.split('::'))
12
+ end
13
+ CODE
9
14
  end
10
15
  end
@@ -1,17 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'eac_fs/contexts'
3
4
  require 'eac_fs/patches/module/fs_cache'
4
5
 
5
6
  class Object
6
- # @return [EacFs::Cache]
7
- def fs_cache
8
- oid = fs_cache_object_id
9
- oid = [oid.to_s] unless oid.is_a?(::Enumerable)
10
- oid.inject(self.class.fs_cache) { |a, e| a.child(e.to_s) }
7
+ ::EacFs::Contexts::TYPES.each do |type|
8
+ class_eval <<~CODE, __FILE__, __LINE__ + 1
9
+ # @return [EacFs::StorageTree]
10
+ def fs_#{type}
11
+ oid = fs_object_id_by_type(:'#{type}')
12
+ oid = [oid.to_s] unless oid.is_a?(::Enumerable)
13
+ oid.inject(self.class.fs_#{type}) { |a, e| a.child(e.to_s) }
14
+ end
15
+ CODE
11
16
  end
12
17
 
13
18
  # @return [String, Array<String>]
14
- def fs_cache_object_id
19
+ def fs_object_id
15
20
  raise 'Abstract method hit'
16
21
  end
22
+
23
+ def fs_object_id_by_type(type)
24
+ method = "fs_#{type}_object_id"
25
+ respond_to?(method) ? send(method) : fs_object_id
26
+ end
17
27
  end
@@ -4,9 +4,7 @@ require 'eac_ruby_utils/core_ext'
4
4
  require 'fileutils'
5
5
 
6
6
  module EacFs
7
- class Cache
8
- enable_context
9
-
7
+ class StorageTree
10
8
  CONTENT_FILE_NAME = '__content__'
11
9
 
12
10
  attr_reader :path
@@ -18,19 +16,19 @@ module EacFs
18
16
  end
19
17
 
20
18
  def clear
21
- return unless cached?
19
+ return unless stored?
22
20
 
23
21
  ::File.unlink(content_path)
24
22
  end
25
23
 
26
24
  def read
27
- return nil unless cached?
25
+ return nil unless stored?
28
26
 
29
27
  ::File.read(content_path)
30
28
  end
31
29
 
32
- def read_or_cache
33
- write(yield) unless cached?
30
+ def read_or_store
31
+ write(yield) unless stored?
34
32
 
35
33
  read
36
34
  end
@@ -45,7 +43,7 @@ module EacFs
45
43
  self.class.new(path, *child_path_parts)
46
44
  end
47
45
 
48
- def cached?
46
+ def stored?
49
47
  ::File.exist?(content_path)
50
48
  end
51
49
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacFs
4
- VERSION = '0.9.0'
4
+ VERSION = '0.11.0'
5
5
  end
@@ -1,26 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_support/core_ext/object/blank'
4
- require 'eac_fs/cache'
4
+ require 'eac_fs/storage_tree'
5
5
 
6
- RSpec.describe ::EacFs::Cache do
6
+ RSpec.describe ::EacFs::StorageTree do
7
7
  let(:tmpdir) { ::Dir.mktmpdir }
8
8
  let(:instance) { described_class.new(tmpdir, 'instance') }
9
9
 
10
10
  it { expect(instance.read).to be_blank }
11
- it { expect(instance.cached?).to eq(false) }
11
+ it { expect(instance.stored?).to eq(false) }
12
12
 
13
13
  context 'when instance is writed' do
14
14
  before { instance.write('STUB') }
15
15
 
16
16
  it { expect(instance.read).to eq('STUB') }
17
- it { expect(instance.cached?).to eq(true) }
17
+ it { expect(instance.stored?).to eq(true) }
18
18
 
19
19
  context 'when instance is cleared' do
20
20
  before { instance.clear }
21
21
 
22
22
  it { expect(instance.read).to be_blank }
23
- it { expect(instance.cached?).to eq(false) }
23
+ it { expect(instance.stored?).to eq(false) }
24
24
  end
25
25
  end
26
26
 
@@ -13,6 +13,7 @@ module EacGit
13
13
  author_name: '%an', author_email: '%ae', author_date: '%ai',
14
14
  subject: '%s',
15
15
  author_all: '%an <%ae>, %ai',
16
+ commit_hash: '%H', abbreviated_commit_hash: '%h',
16
17
  commiter_name: '%cn', commiter_email: '%ce', commiter_date: '%ci',
17
18
  commiter_all: '%cn <%ce>, %ci',
18
19
  raw_body: '%B'
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_git/local/remote'
5
+
6
+ module EacGit
7
+ class Local
8
+ module Remotes
9
+ def remote(name)
10
+ ::EacGit::Local::Remote.new(self, name)
11
+ end
12
+
13
+ def remotes
14
+ command('remote').execute!.each_line.map(&:strip).reject(&:blank?).map do |name|
15
+ remote(name)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacGit
4
- VERSION = '0.11.0'
4
+ VERSION = '0.12.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 'eac_cli', '~> 0.26'
16
- s.add_dependency 'eac_fs', '~> 0.3'
16
+ s.add_dependency 'eac_fs', '~> 0.10'
17
17
  s.add_dependency 'eac_ruby_gems_utils', '~> 0.9', '~> 0.9.6'
18
18
  s.add_dependency 'eac_ruby_utils', '~> 0.70'
19
19
 
@@ -3,7 +3,8 @@
3
3
  require 'eac_cli/config'
4
4
  require 'eac_config/envvars_node'
5
5
  require 'eac_config/yaml_file_node'
6
- require 'eac_fs/cache'
6
+ require 'eac_fs/contexts'
7
+ require 'eac_fs/storage_tree'
7
8
  require 'eac_ruby_base0/application_xdg'
8
9
  require 'eac_ruby_gems_utils/gem'
9
10
  require 'eac_ruby_utils/core_ext'
@@ -43,10 +44,13 @@ module EacRubyBase0
43
44
  delegate "#{item}_xdg_env", "#{item}_dir", to: :app_xdg
44
45
  end
45
46
 
46
- def self_fs_cache
47
- @self_fs_cache ||= ::EacFs::Cache.new(
48
- cache_dir.join(::EacFs::Cache.name.parameterize)
49
- )
47
+ ::EacFs::Contexts::TYPES.each do |type|
48
+ class_eval <<CODE, __FILE__, __LINE__ + 1
49
+ # @return [EacFs::StorageTree]
50
+ def self_fs_#{type}
51
+ @self_fs_#{type} ||= ::EacFs::StorageTree.new(#{type}_dir.join('eac_fs'))
52
+ end
53
+ CODE
50
54
  end
51
55
 
52
56
  def home_dir
@@ -3,7 +3,7 @@
3
3
  require 'eac_cli/core_ext'
4
4
  require 'eac_cli/speaker'
5
5
  require 'eac_config/node'
6
- require 'eac_fs/cache'
6
+ require 'eac_fs/contexts'
7
7
  require 'eac_ruby_utils/speaker'
8
8
 
9
9
  module EacRubyBase0
@@ -65,11 +65,10 @@ module EacRubyBase0
65
65
 
66
66
  # @return [Array<EacRubyUtils::Struct>]
67
67
  def available_contexts
68
- [
69
- [:cache, ::EacFs::Cache.context, -> { application.self_fs_cache }],
68
+ (filesystem_available_contexts + [
70
69
  [:config, ::EacConfig::Node.context, -> { runner_context.call(:application).build_config }],
71
70
  [:speaker, ::EacRubyUtils::Speaker.context, -> { build_speaker }]
72
- ].map { |row| available_context_row_to_struct(row) }
71
+ ]).map { |row| available_context_row_to_struct(row) }
73
72
  end
74
73
 
75
74
  def available_context_row_to_struct(row)
@@ -82,5 +81,12 @@ module EacRubyBase0
82
81
  options[:in_in] = FailIfRequestInput.new if parsed.no_input?
83
82
  ::EacCli::Speaker.new(options)
84
83
  end
84
+
85
+ def filesystem_available_contexts
86
+ ::EacFs::Contexts::TYPES.map do |type|
87
+ key = "fs_#{type}".to_sym
88
+ [key, ::EacFs::Contexts.send(type), -> { application.send("self_#{key}") }]
89
+ end
90
+ end
85
91
  end
86
92
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyBase0
4
- VERSION = '0.15.0'
4
+ VERSION = '0.16.1'
5
5
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Pathname
4
+ # @return +block.call(self)+ if +self+ exists, +default_value+ otherwise.
5
+ def if_exist(default_value = nil)
6
+ return default_value unless exist?
7
+
8
+ block_given? ? yield(self) : self
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pathname'
4
+
5
+ class Pathname
6
+ def readlink_r
7
+ r = self
8
+ r = r.readlink while r.symlink?
9
+ r
10
+ end
11
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/speaker/receiver'
4
+
5
+ module EacRubyUtils
6
+ module Rspec
7
+ class StubSpeaker
8
+ include ::EacRubyUtils::Speaker::Receiver
9
+
10
+ def error(_string); end
11
+
12
+ def fatal_error(string)
13
+ error(string)
14
+ raise('Fatal error')
15
+ end
16
+
17
+ # @see EacRubyUtils::Speaker::Sender.input
18
+ def input(_question, _options = {})
19
+ raise 'Input requested'
20
+ end
21
+
22
+ def info(_string); end
23
+
24
+ def infom(_string); end
25
+
26
+ def infov(*_args); end
27
+
28
+ def out(_string = ''); end
29
+
30
+ def puts(_string = ''); end
31
+
32
+ def success(_string); end
33
+
34
+ def title(_string); end
35
+
36
+ def warn(_string); end
37
+ end
38
+ end
39
+ end
@@ -5,8 +5,15 @@ require 'eac_ruby_utils/abstract_methods'
5
5
  module EacRubyUtils
6
6
  module Speaker
7
7
  module Receiver
8
+ extend ::ActiveSupport::Concern
8
9
  extend ::EacRubyUtils::AbstractMethods
9
10
 
11
+ module ClassMethods
12
+ def on(*args, &block)
13
+ ::EacRubyUtils::Speaker.context.on(new(*args), &block)
14
+ end
15
+ end
16
+
10
17
  def error(_string)
11
18
  raise_abstract_method(__method__)
12
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacRubyUtils
4
- VERSION = '0.83.0'
4
+ VERSION = '0.85.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.113.6
4
+ version: 0.114.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-17 00:00:00.000000000 Z
11
+ date: 2022-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-parsers
@@ -883,8 +883,8 @@ files:
883
883
  - sub/eac_fs/Gemfile
884
884
  - sub/eac_fs/eac_fs.gemspec
885
885
  - sub/eac_fs/lib/eac_fs.rb
886
- - sub/eac_fs/lib/eac_fs/cache.rb
887
886
  - sub/eac_fs/lib/eac_fs/cached_download.rb
887
+ - sub/eac_fs/lib/eac_fs/contexts.rb
888
888
  - sub/eac_fs/lib/eac_fs/file_info.rb
889
889
  - sub/eac_fs/lib/eac_fs/logs.rb
890
890
  - sub/eac_fs/lib/eac_fs/logs/file.rb
@@ -895,10 +895,11 @@ files:
895
895
  - sub/eac_fs/lib/eac_fs/patches/object/fs_cache.rb
896
896
  - sub/eac_fs/lib/eac_fs/patches/pathname.rb
897
897
  - sub/eac_fs/lib/eac_fs/patches/pathname/info.rb
898
+ - sub/eac_fs/lib/eac_fs/storage_tree.rb
898
899
  - sub/eac_fs/lib/eac_fs/traversable.rb
899
900
  - sub/eac_fs/lib/eac_fs/traverser.rb
900
901
  - sub/eac_fs/lib/eac_fs/version.rb
901
- - sub/eac_fs/spec/lib/eac_fs/cache_spec.rb
902
+ - sub/eac_fs/spec/lib/eac_fs/storage_tree_spec.rb
902
903
  - sub/eac_fs/spec/rubocop_spec.rb
903
904
  - sub/eac_fs/spec/spec_helper.rb
904
905
  - sub/eac_git/Gemfile
@@ -914,6 +915,7 @@ files:
914
915
  - sub/eac_git/lib/eac_git/local/dirty_files.rb
915
916
  - sub/eac_git/lib/eac_git/local/log.rb
916
917
  - sub/eac_git/lib/eac_git/local/remote.rb
918
+ - sub/eac_git/lib/eac_git/local/remotes.rb
917
919
  - sub/eac_git/lib/eac_git/local/subrepo.rb
918
920
  - sub/eac_git/lib/eac_git/local/subrepo/config.rb
919
921
  - sub/eac_git/lib/eac_git/remote.rb
@@ -1285,8 +1287,10 @@ files:
1285
1287
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_pathname.rb
1286
1288
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname.rb
1287
1289
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/basename_sub.rb
1290
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/if_exist.rb
1288
1291
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/mkpath_s.rb
1289
1292
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/parent_n.rb
1293
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/readlink_r.rb
1290
1294
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp.rb
1291
1295
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp/if_match.rb
1292
1296
  - sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp/to_parser.rb
@@ -1303,6 +1307,7 @@ files:
1303
1307
  - sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup.rb
1304
1308
  - sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/conditionals.rb
1305
1309
  - sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup_manager.rb
1310
+ - sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/stub_speaker.rb
1306
1311
  - sub/eac_ruby_utils/lib/eac_ruby_utils/ruby.rb
1307
1312
  - sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/command.rb
1308
1313
  - sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb