avm-tools 0.86.0 → 0.87.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/git/file_auto_fixup.rb +22 -3
- data/lib/avm/tools/runner.rb +2 -4
- data/lib/avm/tools/runner/eac_rails_base0.rb +1 -1
- data/lib/avm/tools/runner/eac_rails_base0/apache_path.rb +1 -1
- data/lib/avm/tools/runner/eac_redmine_base0.rb +1 -1
- data/lib/avm/tools/runner/eac_redmine_base0/core_update.rb +1 -1
- data/lib/avm/tools/runner/eac_redmine_base0/docker.rb +1 -1
- data/lib/avm/tools/runner/eac_redmine_base0/project_rename.rb +1 -1
- data/lib/avm/tools/runner/eac_wordpress_base0.rb +1 -1
- data/lib/avm/tools/runner/eac_writings_base0.rb +1 -1
- data/lib/avm/tools/runner/eac_writings_base1.rb +1 -1
- data/lib/avm/tools/runner/files.rb +7 -15
- data/lib/avm/tools/runner/files/format.rb +18 -27
- data/lib/avm/tools/runner/files/rotate.rb +11 -21
- data/lib/avm/tools/runner/git.rb +10 -15
- data/lib/avm/tools/runner/git/auto_commit.rb +2 -2
- data/lib/avm/tools/runner/git/auto_fixup.rb +23 -16
- data/lib/avm/tools/runner/git/commit.rb +2 -2
- data/lib/avm/tools/runner/git/deploy.rb +18 -28
- data/lib/avm/tools/runner/git/dirty_files.rb +2 -2
- data/lib/avm/tools/runner/git/issue.rb +2 -2
- data/lib/avm/tools/runner/git/organize.rb +2 -2
- data/lib/avm/tools/runner/git/revisions_test.rb +2 -2
- data/lib/avm/tools/runner/git/subrepo.rb +2 -2
- data/lib/avm/tools/runner/git/subrepo/check.rb +2 -2
- data/lib/avm/tools/runner/git/subrepo/clone.rb +2 -2
- data/lib/avm/tools/runner/git/subrepo/fix.rb +4 -3
- data/lib/avm/tools/runner/instance.rb +1 -1
- data/lib/avm/tools/runner/instance/info.rb +1 -1
- data/lib/avm/tools/runner/launcher.rb +1 -1
- data/lib/avm/tools/runner/launcher/instances.rb +1 -1
- data/lib/avm/tools/runner/launcher/projects.rb +1 -1
- data/lib/avm/tools/runner/launcher/publish.rb +1 -1
- data/lib/avm/tools/runner/local_project.rb +5 -8
- data/lib/avm/tools/runner/local_project/eac_writings_base0.rb +2 -2
- data/lib/avm/tools/runner/local_project/eac_writings_base0/build_chapters.rb +2 -2
- data/lib/avm/tools/runner/local_project/eac_writings_base0/build_single.rb +2 -2
- data/lib/avm/tools/runner/local_project/eac_writings_base0/info.rb +2 -2
- data/lib/avm/tools/runner/local_project/eac_writings_base1.rb +2 -2
- data/lib/avm/tools/runner/local_project/eac_writings_base1/build.rb +2 -2
- data/lib/avm/tools/runner/local_project/info.rb +2 -2
- data/lib/avm/tools/runner/local_project/ruby.rb +2 -2
- data/lib/avm/tools/runner/local_project/ruby/bundler.rb +2 -2
- data/lib/avm/tools/runner/local_project/ruby/bundler/gemfile_lock.rb +2 -2
- data/lib/avm/tools/runner/local_project/test.rb +2 -2
- data/lib/avm/tools/runner/local_project/update.rb +2 -2
- data/lib/avm/tools/runner/local_project/version_bump.rb +10 -13
- data/lib/avm/tools/runner/ruby.rb +1 -1
- data/lib/avm/tools/runner/ruby/gems.rb +1 -1
- data/lib/avm/tools/runner/ruby/gems/generate.rb +1 -1
- data/lib/avm/tools/runner/ruby/rubocop.rb +1 -1
- data/lib/avm/tools/runner/self.rb +1 -1
- data/lib/avm/tools/runner/self/docker.rb +1 -1
- data/lib/avm/tools/version.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/docopt/runner_context_replacement.rb +15 -0
- data/vendor/eac_cli/lib/eac_cli/docopt/runner_extension.rb +5 -0
- data/vendor/eac_cli/lib/eac_cli/parser/alternative.rb +4 -4
- data/vendor/eac_cli/lib/eac_cli/parser/alternative/long_options.rb +37 -0
- data/vendor/eac_cli/lib/eac_cli/parser/alternative/option_argument.rb +29 -0
- data/vendor/eac_cli/lib/eac_cli/parser/alternative/options.rb +7 -36
- data/vendor/eac_cli/lib/eac_cli/parser/alternative/short_options.rb +45 -0
- data/vendor/eac_cli/lib/eac_cli/runner_with/subcommands.rb +14 -2
- data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
- data/vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb +22 -1
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/application.rb +1 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +9 -6
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner/test_all.rb +4 -9
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/traverser.rb +0 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/inflector.rb +4 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/template.rb +10 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/object/template.rb +1 -8
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/yaml.rb +8 -0
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/inflector_spec.rb +2 -1
- metadata +7 -2
|
@@ -7,7 +7,7 @@ require 'eac_cli/default_runner'
|
|
|
7
7
|
|
|
8
8
|
module Avm
|
|
9
9
|
module Tools
|
|
10
|
-
class Runner
|
|
10
|
+
class Runner
|
|
11
11
|
class Ruby < ::EacRubyUtils::Console::DocoptRunner
|
|
12
12
|
class Gems < ::EacRubyUtils::Console::DocoptRunner
|
|
13
13
|
class Generate < ::EacRubyUtils::Console::DocoptRunner
|
|
@@ -6,7 +6,7 @@ require 'eac_ruby_utils/core_ext'
|
|
|
6
6
|
|
|
7
7
|
module Avm
|
|
8
8
|
module Tools
|
|
9
|
-
class Runner
|
|
9
|
+
class Runner
|
|
10
10
|
class Ruby < ::EacRubyUtils::Console::DocoptRunner
|
|
11
11
|
class Rubocop < ::EacRubyUtils::Console::DocoptRunner
|
|
12
12
|
include ::EacRubyUtils::Console::Speaker
|
data/lib/avm/tools/version.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'eac_cli/docopt/doc_builder'
|
|
4
|
+
require 'eac_cli/docopt/runner_context_replacement'
|
|
4
5
|
require 'eac_cli/runner'
|
|
5
6
|
require 'eac_ruby_utils/console/docopt_runner'
|
|
6
7
|
|
|
@@ -32,6 +33,10 @@ module EacCli
|
|
|
32
33
|
def docopt_options
|
|
33
34
|
super.merge(options_first: self.class.runner_definition.options_first?)
|
|
34
35
|
end
|
|
36
|
+
|
|
37
|
+
def runner_context
|
|
38
|
+
@runner_context ||= ::EacCli::Docopt::RunnerContextReplacement.new(self)
|
|
39
|
+
end
|
|
35
40
|
end
|
|
36
41
|
|
|
37
42
|
def extra_available_subcommands
|
|
@@ -35,11 +35,11 @@ module EacCli
|
|
|
35
35
|
attr_accessor :phase
|
|
36
36
|
|
|
37
37
|
def any_collect_argv_value
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
else
|
|
41
|
-
positional_collect_argv_value
|
|
38
|
+
%w[double_dash long_option short_option].each do |arg_type|
|
|
39
|
+
return send("#{arg_type}_collect_argv_value") if send("argv_current_#{arg_type}?")
|
|
42
40
|
end
|
|
41
|
+
|
|
42
|
+
positional_collect_argv_value
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def collector
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module EacCli
|
|
4
|
+
class Parser
|
|
5
|
+
class Alternative
|
|
6
|
+
module LongOptions
|
|
7
|
+
LONG_OPTION_PREFIX = '--'
|
|
8
|
+
OPTION_WITH_ARGUMENT_PATTERN = /\A([^=]+)(?:=(.*))\z/.freeze
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
def argv_current_long_option?
|
|
13
|
+
phase == PHASE_ANY && argv_enum.peek.start_with?(LONG_OPTION_PREFIX) &&
|
|
14
|
+
!argv_current_double_dash?
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def long_option_collect_argv_value
|
|
18
|
+
option_long, value = parse_option_current_argv
|
|
19
|
+
alternative.options.any? do |option|
|
|
20
|
+
next false unless option.long == option_long
|
|
21
|
+
|
|
22
|
+
if value.nil?
|
|
23
|
+
option_collect_option(option)
|
|
24
|
+
else
|
|
25
|
+
option_argument_collect(option, value)
|
|
26
|
+
end
|
|
27
|
+
end || raise_argv_current_invalid_option
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def parse_option_current_argv
|
|
31
|
+
m = OPTION_WITH_ARGUMENT_PATTERN.match(argv_enum.peek)
|
|
32
|
+
m ? [m[1], m[2].if_present('')] : [argv_enum.peek, nil]
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module EacCli
|
|
4
|
+
class Parser
|
|
5
|
+
class Alternative
|
|
6
|
+
module OptionArgument
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
attr_accessor :argument_option
|
|
10
|
+
|
|
11
|
+
def argument_option_collect_argv(option)
|
|
12
|
+
self.argument_option = option
|
|
13
|
+
self.phase = PHASE_OPTION_ARGUMENT
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def option_argument_collect(option, value)
|
|
17
|
+
collector.collect(option, value)
|
|
18
|
+
self.argument_option = nil
|
|
19
|
+
self.phase = PHASE_ANY
|
|
20
|
+
option
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def option_argument_collect_argv_value
|
|
24
|
+
option_argument_collect(argument_option, argv_enum.peek)
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -4,49 +4,20 @@ module EacCli
|
|
|
4
4
|
class Parser
|
|
5
5
|
class Alternative
|
|
6
6
|
module Options
|
|
7
|
-
DOUBLE_DASH = '--'
|
|
8
|
-
|
|
9
7
|
private
|
|
10
8
|
|
|
11
|
-
attr_accessor :argument_option, :double_dash
|
|
12
|
-
|
|
13
|
-
def argument_option_collect_argv(option)
|
|
14
|
-
self.argument_option = option
|
|
15
|
-
self.phase = PHASE_OPTION_ARGUMENT
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def argv_current_option?
|
|
19
|
-
phase == PHASE_ANY && argv_enum.peek.start_with?('-')
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def argv_current_double_dash?
|
|
23
|
-
argv_enum.peek == DOUBLE_DASH && !double_dash
|
|
24
|
-
end
|
|
25
|
-
|
|
26
9
|
def boolean_option_collect_argv(option)
|
|
27
10
|
collector.collect(option, true)
|
|
28
11
|
end
|
|
29
12
|
|
|
30
|
-
def
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def option_collect_argv_value
|
|
37
|
-
return double_dash_collect_argv_value if argv_current_double_dash?
|
|
38
|
-
|
|
39
|
-
alternative.options.any? do |option|
|
|
40
|
-
next false unless [option.short, option.long].include?(argv_enum.peek)
|
|
41
|
-
|
|
42
|
-
if option.argument?
|
|
43
|
-
argument_option_collect_argv(option)
|
|
44
|
-
else
|
|
45
|
-
boolean_option_collect_argv(option)
|
|
46
|
-
end
|
|
13
|
+
def option_collect_option(option)
|
|
14
|
+
if option.argument?
|
|
15
|
+
argument_option_collect_argv(option)
|
|
16
|
+
else
|
|
17
|
+
boolean_option_collect_argv(option)
|
|
18
|
+
end
|
|
47
19
|
|
|
48
|
-
|
|
49
|
-
end || raise_argv_current_invalid_option
|
|
20
|
+
option
|
|
50
21
|
end
|
|
51
22
|
|
|
52
23
|
def raise_argv_current_invalid_option
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module EacCli
|
|
4
|
+
class Parser
|
|
5
|
+
class Alternative
|
|
6
|
+
module ShortOptions
|
|
7
|
+
SHORT_OPTION_PREFIX = '-'
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def argv_current_short_option?
|
|
12
|
+
phase == PHASE_ANY && argv_enum.peek.start_with?(SHORT_OPTION_PREFIX) &&
|
|
13
|
+
!argv_current_long_option?
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def find_short_option(char)
|
|
17
|
+
alternative.options.find { |option| short_without_prefix(option.short) == char }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def short_option_collect_argv_value
|
|
21
|
+
last_option = nil
|
|
22
|
+
short_without_prefix(argv_enum.peek).each_char do |char|
|
|
23
|
+
raise_error "Option \"#{last_option}\" requires a argument not provided" if
|
|
24
|
+
last_option.present?
|
|
25
|
+
|
|
26
|
+
collected_option = short_option_collect_char(char)
|
|
27
|
+
last_option = collected_option if collected_option.argument?
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @return [EacCli::Definition::BaseOption] The option collected.
|
|
32
|
+
def short_option_collect_char(char)
|
|
33
|
+
option = find_short_option(char)
|
|
34
|
+
raise_error "Invalid short option \"#{char}\"" unless option
|
|
35
|
+
|
|
36
|
+
option_collect_option(option)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def short_without_prefix(short)
|
|
40
|
+
short.gsub(/\A#{::Regexp.quote(SHORT_OPTION_PREFIX)}/, '')
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -6,6 +6,14 @@ require 'eac_ruby_utils/core_ext'
|
|
|
6
6
|
module EacCli
|
|
7
7
|
module RunnerWith
|
|
8
8
|
module Subcommands
|
|
9
|
+
class << self
|
|
10
|
+
def runner?(object)
|
|
11
|
+
::EacCli::Runner.runner?(object) || (
|
|
12
|
+
object.is_a?(::Class) && object < ::EacRubyUtils::Console::DocoptRunner
|
|
13
|
+
)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
9
17
|
common_concern do
|
|
10
18
|
include ::EacCli::Runner
|
|
11
19
|
end
|
|
@@ -19,7 +27,7 @@ module EacCli
|
|
|
19
27
|
def available_subcommands_auto
|
|
20
28
|
self.class.constants
|
|
21
29
|
.map { |name| [name.to_s.underscore.gsub('_', '-'), self.class.const_get(name)] }
|
|
22
|
-
.select { |c| ::EacCli::
|
|
30
|
+
.select { |c| ::EacCli::RunnerWith::Subcommands.runner?(c[1]) }
|
|
23
31
|
.to_h.with_indifferent_access
|
|
24
32
|
end
|
|
25
33
|
|
|
@@ -49,7 +57,11 @@ module EacCli
|
|
|
49
57
|
|
|
50
58
|
def run_with_subcommand
|
|
51
59
|
if subcommand_name
|
|
52
|
-
subcommand_runner.run_run
|
|
60
|
+
if subcommand_runner.respond_to?(:run_run)
|
|
61
|
+
subcommand_runner.run_run
|
|
62
|
+
else
|
|
63
|
+
subcommand_runner.run
|
|
64
|
+
end
|
|
53
65
|
else
|
|
54
66
|
run_without_subcommand
|
|
55
67
|
end
|
|
@@ -11,7 +11,7 @@ RSpec.describe ::EacCli::Runner do
|
|
|
11
11
|
|
|
12
12
|
runner_definition do
|
|
13
13
|
arg_opt '-o', '--opt1', 'A arg option.'
|
|
14
|
-
bool_opt '-
|
|
14
|
+
bool_opt '-p', '--opt2', 'A boolean option'
|
|
15
15
|
pos_arg :pos1
|
|
16
16
|
pos_arg :pos2, repeat: true, optional: true
|
|
17
17
|
alt do
|
|
@@ -40,6 +40,27 @@ RSpec.describe ::EacCli::Runner do
|
|
|
40
40
|
it { expect(instance.parsed.pos2).to eq(%w[ccc ddd]) }
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
+
context 'with long option and argument in same position' do
|
|
44
|
+
let(:argv) { %w[--opt1=aaa pos1] }
|
|
45
|
+
|
|
46
|
+
it { expect(instance.parsed.opt1).to eq('aaa') }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
context 'with valid grouped short options' do
|
|
50
|
+
let(:argv) { %w[-po aaa pos1] }
|
|
51
|
+
|
|
52
|
+
it { expect(instance.parsed.opt1).to eq('aaa') }
|
|
53
|
+
it { expect(instance.parsed.opt2?).to eq(true) }
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
context 'with invalid grouped short options' do
|
|
57
|
+
let(:argv) { %w[-op aaa pos1] }
|
|
58
|
+
|
|
59
|
+
it do
|
|
60
|
+
expect { instance.parsed }.to raise_error(::EacCli::Parser::Error)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
43
64
|
context 'when only required args are supplied' do
|
|
44
65
|
let(:argv) { %w[bbb] }
|
|
45
66
|
let(:parsed_expected) { { opt1: nil, opt2: false, opt3: false, pos1: 'bbb', pos2: [] } }
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'eac_cli/
|
|
3
|
+
require 'eac_cli/runner_with/help'
|
|
4
|
+
require 'eac_cli/runner_with/subcommands'
|
|
4
5
|
require 'eac_ruby_utils/core_ext'
|
|
5
6
|
|
|
6
7
|
module EacRubyBase0
|
|
7
8
|
module Runner
|
|
8
9
|
require_sub __FILE__
|
|
10
|
+
enable_console_speaker
|
|
9
11
|
common_concern do
|
|
10
|
-
include ::EacCli::
|
|
12
|
+
include ::EacCli::RunnerWith::Help
|
|
13
|
+
include ::EacCli::RunnerWith::Subcommands
|
|
11
14
|
runner_definition do
|
|
12
15
|
bool_opt '-q', '--quiet', 'Quiet mode.'
|
|
13
16
|
bool_opt '-I', '--no-input', 'Fail if a input is requested.'
|
|
@@ -20,9 +23,9 @@ module EacRubyBase0
|
|
|
20
23
|
|
|
21
24
|
def run
|
|
22
25
|
on_speaker_node do |node|
|
|
23
|
-
node.stderr = ::StringIO.new if
|
|
24
|
-
node.stdin = FailIfRequestInput.new if
|
|
25
|
-
if
|
|
26
|
+
node.stderr = ::StringIO.new if parsed.quiet?
|
|
27
|
+
node.stdin = FailIfRequestInput.new if parsed.no_input?
|
|
28
|
+
if parsed.version?
|
|
26
29
|
show_version
|
|
27
30
|
else
|
|
28
31
|
run_with_subcommand
|
|
@@ -31,7 +34,7 @@ module EacRubyBase0
|
|
|
31
34
|
end
|
|
32
35
|
|
|
33
36
|
def application_version
|
|
34
|
-
|
|
37
|
+
runner_context.call(:application).version.to_s
|
|
35
38
|
end
|
|
36
39
|
|
|
37
40
|
def show_version
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'eac_cli/
|
|
4
|
-
require 'eac_ruby_utils/console/docopt_runner'
|
|
5
|
-
require 'eac_ruby_utils/core_ext'
|
|
3
|
+
require 'eac_cli/core_ext'
|
|
6
4
|
require 'eac_ruby_gems_utils/tests/multiple'
|
|
7
5
|
|
|
8
6
|
module EacRubyBase0
|
|
9
7
|
module Runner
|
|
10
|
-
class TestAll
|
|
11
|
-
|
|
12
|
-
include ::EacCli::DefaultRunner
|
|
13
|
-
|
|
14
|
-
runner_definition do
|
|
8
|
+
class TestAll
|
|
9
|
+
runner_with :help do
|
|
15
10
|
desc 'Test core and local gems.'
|
|
16
11
|
end
|
|
17
12
|
|
|
@@ -20,7 +15,7 @@ module EacRubyBase0
|
|
|
20
15
|
end
|
|
21
16
|
|
|
22
17
|
def tests_uncached
|
|
23
|
-
::EacRubyGemsUtils::Tests::Multiple.new(
|
|
18
|
+
::EacRubyGemsUtils::Tests::Multiple.new(runner_context.call(:application).all_gems)
|
|
24
19
|
end
|
|
25
20
|
end
|
|
26
21
|
end
|