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