avm-tools 0.93.0 → 0.95.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.
- checksums.yaml +4 -4
- data/lib/avm/eac_webapp_base0/instance.rb +5 -2
- data/lib/avm/eac_webapp_base0/instance/subcommand_parent.rb +24 -0
- data/lib/avm/eac_webapp_base0/runner/data.rb +1 -0
- data/lib/avm/eac_webapp_base0/runner/data/dump.rb +1 -1
- data/lib/avm/eac_webapp_base0/runner/data/load.rb +1 -1
- data/lib/avm/git/auto_commit/commit_info.rb +2 -1
- data/lib/avm/git/auto_commit/rules.rb +4 -4
- data/lib/avm/git/auto_commit/rules/new.rb +24 -0
- data/lib/avm/git/auto_commit/rules/nth.rb +8 -0
- data/lib/avm/git/auto_commit_path.rb +0 -21
- data/lib/avm/git/file_auto_fixup.rb +19 -3
- data/lib/avm/ruby/bundler.rb +11 -0
- data/lib/avm/ruby/bundler/incompatible_parser.rb +25 -0
- data/lib/avm/ruby/bundler/incompatible_parser/depends_on.rb +25 -0
- data/lib/avm/ruby/bundler/incompatible_parser/gem_conflict.rb +39 -0
- data/lib/avm/ruby/bundler/incompatible_parser/in_gemfile.rb +19 -0
- data/lib/avm/ruby/bundler/incompatible_parser/line_buffer.rb +73 -0
- data/lib/avm/ruby/bundler/incompatible_parser/line_factory.rb +31 -0
- data/lib/avm/ruby/bundler/incompatible_parser/line_parser_base.rb +19 -0
- data/lib/avm/ruby/bundler/incompatible_parser/version_requirement.rb +26 -0
- data/lib/avm/ruby/gems/generator.rb +1 -5
- data/lib/avm/tools/runner/eac_redmine_base0/core_update.rb +7 -11
- data/lib/avm/tools/runner/git/auto_commit.rb +28 -28
- data/lib/avm/tools/runner/git/subrepo/fix.rb +1 -1
- data/lib/avm/tools/runner/local_project/ruby.rb +2 -6
- data/lib/avm/tools/runner/local_project/ruby/bundler.rb +3 -7
- data/lib/avm/tools/runner/local_project/ruby/bundler/gemfile_lock.rb +10 -13
- data/lib/avm/tools/runner/local_project/ruby/bundler/incompatible.rb +84 -0
- data/lib/avm/tools/version.rb +1 -1
- data/template/avm/ruby/gems/generator/static/spec/rubocop_spec.rb +1 -5
- data/template/avm/ruby/gems/generator/static/spec/spec_helper.rb +2 -0
- data/vendor/avm-apps/avm-apps.gemspec +1 -1
- data/vendor/avm-apps/lib/avm/apps/version.rb +1 -1
- data/vendor/avm-apps/spec/rubocop_spec.rb +1 -5
- data/vendor/avm-apps/spec/spec_helper.rb +3 -0
- data/vendor/eac_cli/eac_cli.gemspec +1 -1
- data/vendor/eac_cli/lib/eac_cli/core_ext.rb +2 -0
- data/vendor/eac_cli/lib/eac_cli/definition/base_option.rb +5 -1
- data/vendor/eac_cli/lib/eac_cli/docopt/doc_builder.rb +3 -1
- data/vendor/eac_cli/lib/eac_cli/parser/alternative/short_options.rb +4 -2
- data/vendor/eac_cli/lib/eac_cli/patches/object/runner_with.rb +2 -1
- data/vendor/eac_cli/lib/eac_cli/runner/context.rb +2 -1
- data/vendor/eac_cli/lib/eac_cli/runner/instance_methods.rb +8 -1
- data/vendor/eac_cli/lib/eac_cli/runner_with_set.rb +50 -0
- data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
- data/vendor/eac_cli/spec/rubocop_spec.rb +1 -5
- data/vendor/eac_cli/spec/spec_helper.rb +3 -0
- data/vendor/eac_docker/eac_docker.gemspec +1 -1
- data/vendor/eac_docker/lib/eac_docker/version.rb +1 -1
- data/vendor/eac_docker/spec/rubocop_spec.rb +1 -5
- data/vendor/eac_docker/spec/spec_helper.rb +3 -0
- data/vendor/eac_git/eac_git.gemspec +2 -1
- data/vendor/eac_git/lib/eac_git/local.rb +4 -0
- data/vendor/eac_git/lib/eac_git/local/commit.rb +53 -0
- data/vendor/eac_git/lib/eac_git/local/commit/changed_file.rb +46 -0
- data/vendor/eac_git/lib/eac_git/local/commit/diff_tree_line.rb +32 -0
- data/vendor/eac_git/lib/eac_git/local/dirty_files.rb +2 -3
- data/vendor/eac_git/lib/eac_git/rspec.rb +6 -1
- data/{lib/avm/git/spec_helper.rb → vendor/eac_git/lib/eac_git/rspec/stubbed_git_local_repo.rb} +16 -13
- data/vendor/eac_git/lib/eac_git/version.rb +1 -1
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec.rb +13 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.source.out +1 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/add.target.yaml +7 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.source.out +1 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/modify.target.yaml +7 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.source.out +1 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/remove.target.yaml +7 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.source.out +2 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename.target.yaml +13 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.source.out +2 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit/diff_tree_line_spec_files/rename_modify.target.yaml +13 -0
- data/vendor/eac_git/spec/lib/eac_git/local/commit_spec.rb +58 -0
- data/vendor/eac_git/spec/rubocop_spec.rb +1 -5
- data/vendor/eac_git/spec/spec_helper.rb +3 -0
- data/vendor/eac_ruby_base0/eac_ruby_base0.gemspec +4 -4
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/core_ext.rb +4 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/jobs_runner.rb +31 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/patches.rb +4 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/patches/class.rb +4 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/patches/class/jobs_runner.rb +10 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/patches/object.rb +5 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/patches/object/runner_with.rb +5 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with.rb +9 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/confirmation.rb +36 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/filesystem_traverser.rb +52 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/input.rb +36 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/output.rb +58 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
- data/vendor/eac_ruby_base0/spec/lib/eac_ruby_base0/runner_with/confirmation_spec.rb +42 -0
- data/vendor/eac_ruby_base0/spec/lib/eac_ruby_base0/runner_with/output_spec.rb +81 -0
- data/vendor/eac_ruby_base0/spec/rubocop_spec.rb +1 -5
- data/vendor/eac_ruby_base0/spec/spec_helper.rb +3 -0
- data/vendor/eac_ruby_gems_utils/eac_ruby_gems_utils.gemspec +1 -1
- data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/base.rb +7 -10
- data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple.rb +9 -2
- data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/version.rb +1 -1
- data/vendor/eac_ruby_gems_utils/spec/code/rubocop_check_spec.rb +1 -5
- data/vendor/eac_ruby_gems_utils/spec/spec_helper.rb +3 -0
- data/vendor/eac_ruby_utils/eac_ruby_utils.gemspec +2 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/filesystem_cache.rb +6 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/logs.rb +63 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/inflector.rb +9 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/listable/list.rb +3 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/local_time_zone.rb +8 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/class/settings_provider.rb +10 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel/nyi.rb +4 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_nil.rb +17 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp/to_parser.rb +10 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/string/inflector.rb +4 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/time/required_zone.rb +11 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/regexp_parser.rb +34 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb +10 -29
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/settings_provider/setting_value.rb +69 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/simple_cache.rb +18 -5
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/settings_provider_spec.rb +8 -0
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/simple_cache_spec.rb +9 -0
- data/vendor/eac_ruby_utils/spec/rubocop_check_spec.rb +1 -5
- data/vendor/eac_ruby_utils/spec/spec_helper.rb +3 -0
- metadata +55 -15
- data/lib/avm/tools/runner/git/auto_fixup.rb +0 -53
- data/vendor/eac_cli/lib/eac_cli/runner_with/output_file.rb +0 -30
- data/vendor/eac_cli/spec/lib/eac_cli/runner_with/output_file_spec.rb +0 -53
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 43ee05798fe159fe0fffa66e10aa7260aa8e29a7fe7f37786b29a89b051f600b
|
|
4
|
+
data.tar.gz: 86dbc1695a7dfe69cf4c33d2d5aae928a7cc05448305e41f4a23205636ea39ff
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 52f50815a47e9373174a9f6b39e64d0f16cc5a6cf2a39f5bd540f1f90f3bbad6e3361607cdd7a37d225f746bb7f36717e99b344fbd35882f64013c33d56b5e51
|
|
7
|
+
data.tar.gz: dc15c004e0c6c67ebcaaa7b230c0210c5fbde1ca567a1b405fbea7148732b998f3919c74815be22ded25cd21cffbf4a3e0b6d82406a78e507dc89d6ff4fd41e8
|
|
@@ -9,6 +9,7 @@ require 'avm/eac_webapp_base0/deploy/file_unit'
|
|
|
9
9
|
module Avm
|
|
10
10
|
module EacWebappBase0
|
|
11
11
|
class Instance < ::Avm::Instances::Base
|
|
12
|
+
require_sub __FILE__
|
|
12
13
|
include ::Avm::Postgresql::InstanceWith
|
|
13
14
|
|
|
14
15
|
FILES_UNITS = [].freeze
|
|
@@ -26,8 +27,10 @@ module Avm
|
|
|
26
27
|
end
|
|
27
28
|
|
|
28
29
|
def run_subcommand(subcommand_class, argv)
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
subcommand_class.create(
|
|
31
|
+
argv: argv,
|
|
32
|
+
parent: ::Avm::EacWebappBase0::Instance::SubcommandParent.new(self)
|
|
33
|
+
).run
|
|
31
34
|
end
|
|
32
35
|
|
|
33
36
|
def data_package
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
|
|
5
|
+
module Avm
|
|
6
|
+
module EacWebappBase0
|
|
7
|
+
class Instance < ::Avm::Instances::Base
|
|
8
|
+
class SubcommandParent
|
|
9
|
+
enable_simple_cache
|
|
10
|
+
common_constructor :instance
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def runner_context_uncached
|
|
15
|
+
::EacCli::Runner::Context.new(self, argv: runner_argv)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def runner_argv
|
|
19
|
+
[instance.class.name.split('::')[-2].dasherize, instance.id]
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -15,7 +15,7 @@ module Avm
|
|
|
15
15
|
|
|
16
16
|
runner_with :help do
|
|
17
17
|
desc 'Dump utility for EacRailsBase instance.'
|
|
18
|
-
bool_opt '-w', 'rewrite', 'Forces dump overwrite.'
|
|
18
|
+
bool_opt '-w', '--rewrite', 'Forces dump overwrite.'
|
|
19
19
|
arg_opt '-p', '--dump-path', 'Set DUMP_PATH variable.'
|
|
20
20
|
end
|
|
21
21
|
|
|
@@ -9,7 +9,7 @@ module Avm
|
|
|
9
9
|
class Runner < ::Avm::Instances::Runner
|
|
10
10
|
class Data
|
|
11
11
|
class Load
|
|
12
|
-
runner_with
|
|
12
|
+
runner_with :help do
|
|
13
13
|
desc 'Load utility for EacRailsBase instance.'
|
|
14
14
|
arg_opt '-S', '--source-instance', 'Informa a instância a ser extraída o dump.'
|
|
15
15
|
pos_arg :dump_path, optional: true
|
|
@@ -8,10 +8,11 @@ module Avm
|
|
|
8
8
|
class CommitInfo
|
|
9
9
|
enable_immutable
|
|
10
10
|
|
|
11
|
-
immutable_accessor :fixup
|
|
11
|
+
immutable_accessor :fixup, :message
|
|
12
12
|
|
|
13
13
|
def git_commit_args
|
|
14
14
|
r = fixup.if_present([]) { |v| ['--fixup', v.sha1] }
|
|
15
|
+
r += message.if_present([]) { |v| ['--message', v] }
|
|
15
16
|
return r if r.any?
|
|
16
17
|
|
|
17
18
|
raise 'Argument list is empty'
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
require 'eac_ruby_utils/core_ext'
|
|
4
4
|
|
|
5
|
+
::EacRubyUtils.require_sub __FILE__
|
|
6
|
+
|
|
5
7
|
module Avm
|
|
6
8
|
module Git
|
|
7
9
|
module AutoCommit
|
|
8
10
|
module Rules
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
RULES_CLASSES = %w[last manual nth unique]
|
|
11
|
+
RULES_CLASSES = %w[last manual new nth unique]
|
|
12
12
|
.map { |key| ::Avm::Git::AutoCommit::Rules.const_get(key.camelcase) }
|
|
13
13
|
|
|
14
14
|
class << self
|
|
@@ -22,7 +22,7 @@ module Avm
|
|
|
22
22
|
def rule_class_by_key(key)
|
|
23
23
|
RULES_CLASSES.find { |klass| klass.keys.include?(key) } ||
|
|
24
24
|
raise("Rule not find with key \"#{key}\" (Available: " +
|
|
25
|
-
RULES_CLASSES.flat_map(&:keys) + ')')
|
|
25
|
+
RULES_CLASSES.flat_map(&:keys).join(', ') + ')')
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'avm/git/auto_commit/rules/base'
|
|
4
|
+
require 'avm/git/auto_commit_path'
|
|
5
|
+
|
|
6
|
+
module Avm
|
|
7
|
+
module Git
|
|
8
|
+
module AutoCommit
|
|
9
|
+
module Rules
|
|
10
|
+
class New < ::Avm::Git::AutoCommit::Rules::Base
|
|
11
|
+
class WithFile < ::Avm::Git::AutoCommit::Rules::Base::WithFile
|
|
12
|
+
def auto_commit_path
|
|
13
|
+
::Avm::Git::AutoCommitPath.new(file.git, file.path)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def commit_info
|
|
17
|
+
new_commit_info.message(auto_commit_path.commit_message)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -6,31 +6,10 @@ module Avm
|
|
|
6
6
|
module Git
|
|
7
7
|
class AutoCommitPath
|
|
8
8
|
require_sub __FILE__, include_modules: true
|
|
9
|
-
enable_console_speaker
|
|
10
9
|
common_constructor :git, :path do
|
|
11
10
|
self.path = path.to_pathname
|
|
12
11
|
end
|
|
13
12
|
|
|
14
|
-
CLASS_NAME_PATTERNS = [%r{lib/((?!.*/lib/).+)\.rb\z}, %r{app/[^/]+/(.+)\.rb\z}].freeze
|
|
15
|
-
|
|
16
|
-
def run
|
|
17
|
-
banner
|
|
18
|
-
commit
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def banner
|
|
22
|
-
infom "Checking \"#{relative_path}\""
|
|
23
|
-
infov ' * Class name', class_name
|
|
24
|
-
infov ' * Commit message', commit_message
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def commit
|
|
28
|
-
infom ' * Commiting...'
|
|
29
|
-
git.system!('reset', 'HEAD')
|
|
30
|
-
git.system!('add', '--', relative_path.to_path)
|
|
31
|
-
git.system!('commit', '-m', commit_message, '--', relative_path.to_path)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
13
|
def class_name
|
|
35
14
|
ruby_class_name || relative_path.to_path
|
|
36
15
|
end
|
|
@@ -10,10 +10,16 @@ module Avm
|
|
|
10
10
|
enable_simple_cache
|
|
11
11
|
enable_listable
|
|
12
12
|
|
|
13
|
-
common_constructor :git, :path, :rules
|
|
13
|
+
common_constructor :git, :path, :rules do
|
|
14
|
+
self.path = path.to_pathname.expand_path(git.root_path)
|
|
15
|
+
end
|
|
14
16
|
|
|
15
17
|
COMMITS_SEARCH_INTERVAL = 'origin/master..HEAD'
|
|
16
18
|
|
|
19
|
+
def git_relative_path
|
|
20
|
+
path.to_pathname.relative_path_from(git.root_path)
|
|
21
|
+
end
|
|
22
|
+
|
|
17
23
|
def run
|
|
18
24
|
start_banner
|
|
19
25
|
run_commit || warn("No rule returned commit information for \"#{path}\"")
|
|
@@ -22,7 +28,7 @@ module Avm
|
|
|
22
28
|
private
|
|
23
29
|
|
|
24
30
|
def commit_args
|
|
25
|
-
commit_info.if_present([], &:git_commit_args) + ['--',
|
|
31
|
+
commit_info.if_present([], &:git_commit_args) + ['--', git_relative_path]
|
|
26
32
|
end
|
|
27
33
|
|
|
28
34
|
def commit_info_uncached
|
|
@@ -38,11 +44,21 @@ module Avm
|
|
|
38
44
|
return false if commit_info.blank?
|
|
39
45
|
|
|
40
46
|
infov ' Commit arguments', ::Shellwords.join(commit_args)
|
|
41
|
-
|
|
47
|
+
run_git_add_and_commit
|
|
42
48
|
success ' Commited'
|
|
43
49
|
true
|
|
44
50
|
end
|
|
45
51
|
|
|
52
|
+
def run_git_add_and_commit
|
|
53
|
+
git.execute!('reset', '--soft', 'HEAD')
|
|
54
|
+
if path.exist?
|
|
55
|
+
git.execute!('add', git_relative_path)
|
|
56
|
+
else
|
|
57
|
+
git.execute!('rm', '-f', git_relative_path)
|
|
58
|
+
end
|
|
59
|
+
git.execute!('commit', *commit_args)
|
|
60
|
+
end
|
|
61
|
+
|
|
46
62
|
def commits_uncached
|
|
47
63
|
git.execute!('log', '--pretty=format:%H', COMMITS_SEARCH_INTERVAL, '--', path)
|
|
48
64
|
.each_line.map { |sha1| ::Avm::Git::Commit.new(git, sha1.strip) }
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
|
|
5
|
+
module Avm
|
|
6
|
+
module Ruby
|
|
7
|
+
module Bundler
|
|
8
|
+
class IncompatibleParser
|
|
9
|
+
require_sub __FILE__
|
|
10
|
+
|
|
11
|
+
enable_simple_cache
|
|
12
|
+
attr_reader :gems_in_conflict
|
|
13
|
+
|
|
14
|
+
def initialize(path)
|
|
15
|
+
@gems_in_conflict = ::Avm::Ruby::Bundler::IncompatibleParser::LineBuffer
|
|
16
|
+
.from_file(path).gems_in_conflict.freeze
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def data
|
|
20
|
+
gems_in_conflict.map(&:data)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
require 'avm/ruby/bundler/incompatible_parser/line_parser_base'
|
|
5
|
+
|
|
6
|
+
module Avm
|
|
7
|
+
module Ruby
|
|
8
|
+
module Bundler
|
|
9
|
+
class IncompatibleParser
|
|
10
|
+
class DependsOn < ::Avm::Ruby::Bundler::IncompatibleParser::LineParserBase
|
|
11
|
+
LINE_PARSER = /(.+) was resolved to (.+), which depends on/
|
|
12
|
+
.to_parser { |m| new(m[1], m[2]) }
|
|
13
|
+
|
|
14
|
+
common_constructor :gem_name, :version do
|
|
15
|
+
self.version = ::Gem::Version.new(version)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def data
|
|
19
|
+
{ gem_name: gem_name, version: version }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
require 'avm/ruby/bundler/incompatible_parser/line_parser_base'
|
|
5
|
+
|
|
6
|
+
module Avm
|
|
7
|
+
module Ruby
|
|
8
|
+
module Bundler
|
|
9
|
+
class IncompatibleParser
|
|
10
|
+
class GemConflict < ::Avm::Ruby::Bundler::IncompatibleParser::LineParserBase
|
|
11
|
+
LINE_PARSER = /Bundler could not find compatible versions for gem "(.+)":/
|
|
12
|
+
.to_parser { |m| new(m[1]) }
|
|
13
|
+
|
|
14
|
+
enable_simple_cache
|
|
15
|
+
common_constructor :gem_name
|
|
16
|
+
|
|
17
|
+
def add_depends_on(depends_on)
|
|
18
|
+
@depends_on_stack ||= []
|
|
19
|
+
@depends_on_stack << depends_on
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def add_version_requirement(version_requirement)
|
|
23
|
+
version_requirement.stack = @depends_on_stack
|
|
24
|
+
versions_requirements << version_requirement
|
|
25
|
+
@depends_on_stack = nil
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def data
|
|
29
|
+
{ gem_name: gem_name, versions_requirements: versions_requirements.map(&:data) }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def versions_requirements
|
|
33
|
+
@versions_requirements ||= []
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
require 'avm/ruby/bundler/incompatible_parser/line_parser_base'
|
|
5
|
+
|
|
6
|
+
module Avm
|
|
7
|
+
module Ruby
|
|
8
|
+
module Bundler
|
|
9
|
+
class IncompatibleParser
|
|
10
|
+
class InGemfile < ::Avm::Ruby::Bundler::IncompatibleParser::LineParserBase
|
|
11
|
+
LINE_PARSER = /In Gemfile:/
|
|
12
|
+
.to_parser { |_m| new }
|
|
13
|
+
|
|
14
|
+
common_constructor
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
|
4
|
+
require 'avm/ruby/bundler/incompatible_parser/gem_conflict'
|
|
5
|
+
require 'avm/ruby/bundler/incompatible_parser/line_factory'
|
|
6
|
+
|
|
7
|
+
module Avm
|
|
8
|
+
module Ruby
|
|
9
|
+
module Bundler
|
|
10
|
+
class IncompatibleParser
|
|
11
|
+
class LineBuffer
|
|
12
|
+
class << self
|
|
13
|
+
def from_file(path)
|
|
14
|
+
new(::File.read(path.to_s))
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
attr_reader :gems_in_conflict
|
|
19
|
+
|
|
20
|
+
def initialize(content)
|
|
21
|
+
self.gems_in_conflict = []
|
|
22
|
+
self.parsing_required = false
|
|
23
|
+
content.each_line { |string_line| add_line(LineFactory.new(string_line)) }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
attr_accessor :parsing_required
|
|
29
|
+
attr_writer :gems_in_conflict
|
|
30
|
+
|
|
31
|
+
def add_line(line)
|
|
32
|
+
return if line.blank?
|
|
33
|
+
|
|
34
|
+
return if LineFactory::TYPES.any? do |type|
|
|
35
|
+
next false unless line.result.is_a?(type)
|
|
36
|
+
|
|
37
|
+
send("on_#{type.name.demodulize.underscore.variableize}_line", line.result)
|
|
38
|
+
true
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
return unless parsing_required
|
|
42
|
+
|
|
43
|
+
raise(::ArgumentError, "Unparsed line: \"#{line.content}\"")
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def on_gem_conflict_line(result)
|
|
47
|
+
self.parsing_required = true
|
|
48
|
+
gems_in_conflict << result
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def on_in_gemfile_line(result)
|
|
52
|
+
# Do nothing
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def on_depends_on_line(result)
|
|
56
|
+
current_gem_conflict.add_depends_on(result)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def on_version_requirement_line(result)
|
|
60
|
+
current_gem_conflict.add_version_requirement(result)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def current_gem_conflict
|
|
64
|
+
raise 'No gems in conflict' if gems_in_conflict.none?
|
|
65
|
+
raise 'Last gem is blank' if gems_in_conflict.last.blank?
|
|
66
|
+
|
|
67
|
+
gems_in_conflict.last
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|