avm-tools 0.86.0 → 0.87.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/lib/avm/git/file_auto_fixup.rb +22 -3
  3. data/lib/avm/tools/runner.rb +2 -4
  4. data/lib/avm/tools/runner/eac_rails_base0.rb +1 -1
  5. data/lib/avm/tools/runner/eac_rails_base0/apache_path.rb +1 -1
  6. data/lib/avm/tools/runner/eac_redmine_base0.rb +1 -1
  7. data/lib/avm/tools/runner/eac_redmine_base0/core_update.rb +1 -1
  8. data/lib/avm/tools/runner/eac_redmine_base0/docker.rb +1 -1
  9. data/lib/avm/tools/runner/eac_redmine_base0/project_rename.rb +1 -1
  10. data/lib/avm/tools/runner/eac_wordpress_base0.rb +1 -1
  11. data/lib/avm/tools/runner/eac_writings_base0.rb +1 -1
  12. data/lib/avm/tools/runner/eac_writings_base1.rb +1 -1
  13. data/lib/avm/tools/runner/files.rb +7 -15
  14. data/lib/avm/tools/runner/files/format.rb +18 -27
  15. data/lib/avm/tools/runner/files/rotate.rb +11 -21
  16. data/lib/avm/tools/runner/git.rb +10 -15
  17. data/lib/avm/tools/runner/git/auto_commit.rb +2 -2
  18. data/lib/avm/tools/runner/git/auto_fixup.rb +23 -16
  19. data/lib/avm/tools/runner/git/commit.rb +2 -2
  20. data/lib/avm/tools/runner/git/deploy.rb +18 -28
  21. data/lib/avm/tools/runner/git/dirty_files.rb +2 -2
  22. data/lib/avm/tools/runner/git/issue.rb +2 -2
  23. data/lib/avm/tools/runner/git/organize.rb +2 -2
  24. data/lib/avm/tools/runner/git/revisions_test.rb +2 -2
  25. data/lib/avm/tools/runner/git/subrepo.rb +2 -2
  26. data/lib/avm/tools/runner/git/subrepo/check.rb +2 -2
  27. data/lib/avm/tools/runner/git/subrepo/clone.rb +2 -2
  28. data/lib/avm/tools/runner/git/subrepo/fix.rb +4 -3
  29. data/lib/avm/tools/runner/instance.rb +1 -1
  30. data/lib/avm/tools/runner/instance/info.rb +1 -1
  31. data/lib/avm/tools/runner/launcher.rb +1 -1
  32. data/lib/avm/tools/runner/launcher/instances.rb +1 -1
  33. data/lib/avm/tools/runner/launcher/projects.rb +1 -1
  34. data/lib/avm/tools/runner/launcher/publish.rb +1 -1
  35. data/lib/avm/tools/runner/local_project.rb +5 -8
  36. data/lib/avm/tools/runner/local_project/eac_writings_base0.rb +2 -2
  37. data/lib/avm/tools/runner/local_project/eac_writings_base0/build_chapters.rb +2 -2
  38. data/lib/avm/tools/runner/local_project/eac_writings_base0/build_single.rb +2 -2
  39. data/lib/avm/tools/runner/local_project/eac_writings_base0/info.rb +2 -2
  40. data/lib/avm/tools/runner/local_project/eac_writings_base1.rb +2 -2
  41. data/lib/avm/tools/runner/local_project/eac_writings_base1/build.rb +2 -2
  42. data/lib/avm/tools/runner/local_project/info.rb +2 -2
  43. data/lib/avm/tools/runner/local_project/ruby.rb +2 -2
  44. data/lib/avm/tools/runner/local_project/ruby/bundler.rb +2 -2
  45. data/lib/avm/tools/runner/local_project/ruby/bundler/gemfile_lock.rb +2 -2
  46. data/lib/avm/tools/runner/local_project/test.rb +2 -2
  47. data/lib/avm/tools/runner/local_project/update.rb +2 -2
  48. data/lib/avm/tools/runner/local_project/version_bump.rb +10 -13
  49. data/lib/avm/tools/runner/ruby.rb +1 -1
  50. data/lib/avm/tools/runner/ruby/gems.rb +1 -1
  51. data/lib/avm/tools/runner/ruby/gems/generate.rb +1 -1
  52. data/lib/avm/tools/runner/ruby/rubocop.rb +1 -1
  53. data/lib/avm/tools/runner/self.rb +1 -1
  54. data/lib/avm/tools/runner/self/docker.rb +1 -1
  55. data/lib/avm/tools/version.rb +1 -1
  56. data/vendor/eac_cli/lib/eac_cli/docopt/runner_context_replacement.rb +15 -0
  57. data/vendor/eac_cli/lib/eac_cli/docopt/runner_extension.rb +5 -0
  58. data/vendor/eac_cli/lib/eac_cli/parser/alternative.rb +4 -4
  59. data/vendor/eac_cli/lib/eac_cli/parser/alternative/long_options.rb +37 -0
  60. data/vendor/eac_cli/lib/eac_cli/parser/alternative/option_argument.rb +29 -0
  61. data/vendor/eac_cli/lib/eac_cli/parser/alternative/options.rb +7 -36
  62. data/vendor/eac_cli/lib/eac_cli/parser/alternative/short_options.rb +45 -0
  63. data/vendor/eac_cli/lib/eac_cli/runner_with/subcommands.rb +14 -2
  64. data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
  65. data/vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb +22 -1
  66. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/application.rb +1 -0
  67. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +9 -6
  68. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner/test_all.rb +4 -9
  69. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  70. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/traverser.rb +0 -2
  71. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/inflector.rb +4 -1
  72. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/template.rb +10 -0
  73. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/object/template.rb +1 -8
  74. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  75. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/yaml.rb +8 -0
  76. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/inflector_spec.rb +2 -1
  77. metadata +7 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d94c38f057d3459362f2f15eba68de92e72a7141f03a5c029e920db648eb34b
4
- data.tar.gz: 2719a55cb7b994c496349331e4b5a40a11307e4fe92d889914d3005836d68398
3
+ metadata.gz: df3208595cdaefa7e6f51a5a14518064df146b2081e32365e3ad746326e844bb
4
+ data.tar.gz: 367b039c49b3ff3e9a8083bafe1c889656e924403014efbeec2f3032ccfe0247
5
5
  SHA512:
6
- metadata.gz: 54d1c5271e6d30791bbc6a9cd6084f21ef2e171f3b64e21c315aa41f4bf2f289ae4c8725f74280a0f008d4a6fb32ce85f71fcf3f5e83d46a5ef14d48dc7a6174
7
- data.tar.gz: 2c717894f623ab3bfd4b8b489c01adf8cc564a638c374fa1f7dbc5f9be715461ae4b1f8847b22d48a383e51775754eac408d8f6273260ff32dd1837acd5b30dd
6
+ metadata.gz: 1e1aa08cda713c6600a551681f4f2d986e939675ba41bd5f270497f9dba564213906ae71890ce9ea00285a289d8edc626d70bd91aa31e2a381524bc19404d58b
7
+ data.tar.gz: 25c272f9097b2d48cf1d88ece314eef1361527644942c3b0e1e862709f60e155ac4db9a31b823432f72abd478eaec9f4218503932228a8bf0c44c30b3a3ee46b
@@ -7,8 +7,12 @@ module Avm
7
7
  class FileAutoFixup
8
8
  enable_console_speaker
9
9
  enable_simple_cache
10
+ enable_listable
11
+ lists.add_symbol :option, :select, :unique
10
12
 
11
- common_constructor :git, :path
13
+ common_constructor :git, :path, :options, default: [{}] do
14
+ self.options = self.class.lists.option.hash_keys_validate!(options.symbolize_keys)
15
+ end
12
16
 
13
17
  COMMIT_FORMAT = '%h - %s (%cr)'
14
18
  COMMITS_SEARCH_INTERVAL = 'origin/master..HEAD'
@@ -18,8 +22,8 @@ module Avm
18
22
  start_banner
19
23
  if commits.count.zero?
20
24
  run_no_commits_found
21
- elsif commits.count == 1
22
- fixup_commit(commits.first)
25
+ elsif auto_selected_commit.present?
26
+ fixup_commit(auto_selected_commit)
23
27
  else
24
28
  run_commits_selection
25
29
  end
@@ -27,6 +31,10 @@ module Avm
27
31
 
28
32
  private
29
33
 
34
+ def auto_selected_commit_uncached
35
+ selected_commit_by_unique || select_commit_by_select
36
+ end
37
+
30
38
  def start_banner
31
39
  infov 'Path', path
32
40
  infov ' Commits found', commits.count
@@ -56,6 +64,17 @@ module Avm
56
64
  request_input('Which commit?', list: commits_by_position)
57
65
  end
58
66
 
67
+ def selected_commit_by_unique
68
+ return unless options[OPTION_UNIQUE]
69
+ return commits.first if commits.first
70
+ end
71
+
72
+ def select_commit_by_select
73
+ options[OPTION_SELECT].if_present(&:to_i).if_present do |v|
74
+ commits.find { |commit| commit.position == v }
75
+ end
76
+ end
77
+
59
78
  def commits_banner
60
79
  commits.each_with_index do |commit, _index|
61
80
  infov " #{commit.position}", format_commit(commit)
@@ -3,14 +3,12 @@
3
3
  require 'avm/self'
4
4
  require 'avm/tools/version'
5
5
  require 'eac_ruby_base0/runner'
6
- require 'eac_ruby_utils/console/docopt_runner'
7
- require 'eac_ruby_utils/core_ext'
8
6
 
9
7
  module Avm
10
8
  module Tools
11
- class Runner < ::EacRubyUtils::Console::DocoptRunner
12
- include ::EacRubyBase0::Runner
9
+ class Runner
13
10
  require_sub __FILE__
11
+ include ::EacRubyBase0::Runner
14
12
 
15
13
  runner_definition do
16
14
  desc 'Tools for AVM.'
@@ -7,7 +7,7 @@ require 'eac_ruby_utils/core_ext'
7
7
 
8
8
  module Avm
9
9
  module Tools
10
- class Runner < ::EacRubyUtils::Console::DocoptRunner
10
+ class Runner
11
11
  class EacRailsBase0 < ::Avm::EacRailsBase1::Runner
12
12
  require_sub __FILE__
13
13
  end
@@ -7,7 +7,7 @@ require 'avm/eac_rails_base0/apache_path'
7
7
 
8
8
  module Avm
9
9
  module Tools
10
- class Runner < ::EacRubyUtils::Console::DocoptRunner
10
+ class Runner
11
11
  class EacRailsBase0 < ::Avm::EacRailsBase1::Runner
12
12
  class ApachePath < ::EacRubyUtils::Console::DocoptRunner
13
13
  runner_with
@@ -7,7 +7,7 @@ require 'eac_ruby_utils/core_ext'
7
7
 
8
8
  module Avm
9
9
  module Tools
10
- class Runner < ::EacRubyUtils::Console::DocoptRunner
10
+ class Runner
11
11
  class EacRedmineBase0 < ::Avm::EacRailsBase1::Runner
12
12
  require_sub __FILE__
13
13
  end
@@ -7,7 +7,7 @@ require 'eac_ruby_utils/core_ext'
7
7
 
8
8
  module Avm
9
9
  module Tools
10
- class Runner < ::EacRubyUtils::Console::DocoptRunner
10
+ class Runner
11
11
  class EacRedmineBase0 < ::Avm::EacRailsBase1::Runner
12
12
  class CoreUpdate < ::EacRubyUtils::Console::DocoptRunner
13
13
  include ::EacCli::DefaultRunner
@@ -4,7 +4,7 @@ require 'avm/docker/runner'
4
4
 
5
5
  module Avm
6
6
  module Tools
7
- class Runner < ::EacRubyUtils::Console::DocoptRunner
7
+ class Runner
8
8
  class EacRedmineBase0 < ::Avm::EacRailsBase1::Runner
9
9
  class Docker < ::Avm::Docker::Runner
10
10
  end
@@ -5,7 +5,7 @@ require 'avm/eac_rails_base1/runner/code_runner'
5
5
 
6
6
  module Avm
7
7
  module Tools
8
- class Runner < ::EacRubyUtils::Console::DocoptRunner
8
+ class Runner
9
9
  class EacRedmineBase0 < ::Avm::EacRailsBase1::Runner
10
10
  class ProjectRename
11
11
  runner_with ::Avm::EacRailsBase1::RunnerWith::Bundle do
@@ -7,7 +7,7 @@ require 'eac_ruby_utils/core_ext'
7
7
 
8
8
  module Avm
9
9
  module Tools
10
- class Runner < ::EacRubyUtils::Console::DocoptRunner
10
+ class Runner
11
11
  class EacWordpressBase0 < ::Avm::EacWebappBase0::Runner
12
12
  require_sub __FILE__
13
13
  end
@@ -6,7 +6,7 @@ require 'eac_ruby_utils/console/docopt_runner'
6
6
 
7
7
  module Avm
8
8
  module Tools
9
- class Runner < ::EacRubyUtils::Console::DocoptRunner
9
+ class Runner
10
10
  class EacWritingsBase0 < ::Avm::EacWebappBase0::Runner
11
11
  require_sub __FILE__
12
12
  end
@@ -6,7 +6,7 @@ require 'eac_ruby_utils/console/docopt_runner'
6
6
 
7
7
  module Avm
8
8
  module Tools
9
- class Runner < ::EacRubyUtils::Console::DocoptRunner
9
+ class Runner
10
10
  class EacWritingsBase1 < ::Avm::EacWebappBase0::Runner
11
11
  require_sub __FILE__
12
12
  end
@@ -1,24 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/console/docopt_runner'
4
- require 'eac_ruby_utils/core_ext'
3
+ require 'eac_cli/core_ext'
5
4
 
6
5
  module Avm
7
6
  module Tools
8
- class Runner < ::EacRubyUtils::Console::DocoptRunner
9
- class Files < ::EacRubyUtils::Console::DocoptRunner
7
+ class Runner
8
+ class Files
10
9
  require_sub __FILE__
11
-
12
- DOC = <<~DOCOPT
13
- Files utilities for AVM.
14
-
15
- Usage:
16
- __PROGRAM__ [options] __SUBCOMMANDS__
17
- __PROGRAM__ -h | --help
18
-
19
- Options:
20
- -h --help Show this screen.
21
- DOCOPT
10
+ runner_with :help, :subcommands do
11
+ desc 'Files utilities for AVM.'
12
+ subcommands
13
+ end
22
14
  end
23
15
  end
24
16
  end
@@ -1,40 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'avm/files/formatter'
4
+ require 'eac_cli/core_ext'
4
5
  require 'eac_launcher/git/base'
5
- require 'eac_ruby_utils/console/docopt_runner'
6
- require 'eac_ruby_utils/core_ext'
7
6
 
8
7
  module Avm
9
8
  module Tools
10
- class Runner < ::EacRubyUtils::Console::DocoptRunner
11
- class Files < ::EacRubyUtils::Console::DocoptRunner
12
- class Format < ::EacRubyUtils::Console::DocoptRunner
13
- include ::EacRubyUtils::Console::Speaker
14
-
15
- DOC = <<~DOCOPT
16
- Format files.
17
-
18
- Usage:
19
- __PROGRAM__ [options] [<paths>...]
20
- __PROGRAM__ -h | --help
21
-
22
- Options:
23
- -h --help Show this screen.
24
- -a --apply Confirm changes.
25
- -n --no-recursive No recursive.
26
- -v --verbose Verbose
27
- -d --git-dirty Select Git dirty files to format.
28
- DOCOPT
9
+ class Runner
10
+ class Files
11
+ class Format
12
+ runner_with :help do
13
+ desc 'Format files.'
14
+ bool_opt '-a', '--apply', 'Confirm changes.'
15
+ bool_opt '-n', '--no-recursive', 'No recursive.'
16
+ bool_opt '-v', '--verbose', 'Verbose'
17
+ bool_opt '-d', '--git-dirty', 'Select Git dirty files to format.'
18
+ pos_arg :paths, repeat: true, optional: true
19
+ end
29
20
 
30
21
  def run
31
22
  ::Avm::Files::Formatter.new(source_paths, formatter_options).run
32
23
  end
33
24
 
34
25
  def formatter_options
35
- { ::Avm::Files::Formatter::OPTION_APPLY => options.fetch('--apply'),
36
- ::Avm::Files::Formatter::OPTION_RECURSIVE => !options.fetch('--no-recursive'),
37
- ::Avm::Files::Formatter::OPTION_VERBOSE => options.fetch('--verbose') }
26
+ { ::Avm::Files::Formatter::OPTION_APPLY => parsed.apply?,
27
+ ::Avm::Files::Formatter::OPTION_RECURSIVE => !parsed.no_recursive?,
28
+ ::Avm::Files::Formatter::OPTION_VERBOSE => parsed.verbose? }
38
29
  end
39
30
 
40
31
  def git
@@ -46,10 +37,10 @@ module Avm
46
37
  end
47
38
 
48
39
  def source_paths
49
- if options.fetch('--git-dirty')
50
- options.fetch('<paths>') + git_dirty_files
40
+ if parsed.git_dirty?
41
+ parsed.paths + git_dirty_files
51
42
  else
52
- options.fetch('<paths>').if_present(%w[.])
43
+ parsed.paths.if_present(%w[.])
53
44
  end
54
45
  end
55
46
  end
@@ -1,28 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/console/docopt_runner'
4
- require 'eac_ruby_utils/console/speaker'
5
3
  require 'avm/files/rotate'
4
+ require 'eac_cli/core_ext'
6
5
 
7
6
  module Avm
8
7
  module Tools
9
- class Runner < ::EacRubyUtils::Console::DocoptRunner
10
- class Files < ::EacRubyUtils::Console::DocoptRunner
11
- class Rotate < ::EacRubyUtils::Console::DocoptRunner
12
- include ::EacRubyUtils::Console::Speaker
13
-
14
- DOC = <<~DOCOPT
15
- Rotates a file (Like a backup).
16
-
17
- Usage:
18
- __PROGRAM__ [options] <path>
19
- __PROGRAM__ -h | --help
20
-
21
- Options:
22
- -h --help Show this screen.
23
- -L --space-limit=<space> Limit by <space> the space used by rotated files.
24
- DOCOPT
25
-
8
+ class Runner
9
+ class Files
10
+ class Rotate
11
+ runner_with :help do
12
+ desc 'Rotates a file (Like a backup).'
13
+ arg_opt '-L', '--space-limit', 'Limit by <space> the space used by rotated files.'
14
+ pos_arg :path
15
+ end
26
16
  def run
27
17
  error_message = rotate.run
28
18
  fatal_error(error_message) if error_message
@@ -30,8 +20,8 @@ module Avm
30
20
 
31
21
  def rotate
32
22
  @rotate ||= ::Avm::Files::Rotate.new(
33
- options.fetch('<path>'),
34
- space_limit: options.fetch('--space-limit')
23
+ parsed.path,
24
+ space_limit: parsed.space_limit
35
25
  )
36
26
  end
37
27
  end
@@ -7,26 +7,21 @@ require 'eac_launcher/git/base'
7
7
 
8
8
  module Avm
9
9
  module Tools
10
- class Runner < ::EacRubyUtils::Console::DocoptRunner
11
- class Git < ::EacRubyUtils::Console::DocoptRunner
12
- DOC = <<~DOCOPT
13
- Git utilities for AVM.
14
-
15
- Usage:
16
- __PROGRAM__ [options] __SUBCOMMANDS__
17
- __PROGRAM__ -h | --help
18
-
19
- Options:
20
- -h --help Show this screen.
21
- -C <path> Path to Git repository.
22
- DOCOPT
10
+ class Runner
11
+ class Git
12
+ require_sub __FILE__
13
+ runner_with :help, :subcommands do
14
+ desc 'Git utilities for AVM.'
15
+ arg_opt '-C', '--path', 'Path to Git repository.'
16
+ subcommands
17
+ end
23
18
 
24
19
  def repository_path
25
- repository_path? ? options.fetch('-C') : '.'
20
+ repository_path? ? parsed.path : '.'
26
21
  end
27
22
 
28
23
  def repository_path?
29
- options.fetch('-C').present?
24
+ parsed.path.present?
30
25
  end
31
26
 
32
27
  def git
@@ -6,8 +6,8 @@ require 'eac_cli/default_runner'
6
6
 
7
7
  module Avm
8
8
  module Tools
9
- class Runner < ::EacRubyUtils::Console::DocoptRunner
10
- class Git < ::EacRubyUtils::Console::DocoptRunner
9
+ class Runner
10
+ class Git
11
11
  class AutoCommit < ::EacRubyUtils::Console::DocoptRunner
12
12
  include ::EacCli::DefaultRunner
13
13
 
@@ -1,43 +1,50 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'eac_cli/core_ext'
3
4
  require 'eac_ruby_utils/console/docopt_runner'
4
5
  require 'avm/git/file_auto_fixup'
5
6
 
6
7
  module Avm
7
8
  module Tools
8
- class Runner < ::EacRubyUtils::Console::DocoptRunner
9
- class Git < ::EacRubyUtils::Console::DocoptRunner
10
- class AutoFixup < ::EacRubyUtils::Console::DocoptRunner
11
- DOC = <<~DOCOPT
12
- Auto fixup files.
13
-
14
- Usage:
15
- __PROGRAM__ [options] [<files>...]
16
- __PROGRAM__ -h | --help
17
-
18
- Options:
19
- -h --help Mostra esta ajuda.
20
- DOCOPT
9
+ class Runner
10
+ class Git
11
+ class AutoFixup
12
+ runner_with :help do
13
+ desc 'Auto fixup files.'
14
+ bool_opt '-l', '--last', 'Equivalent to "--select=1".'
15
+ arg_opt '-s', '--select', 'Automatically select de <value>-th commit.'
16
+ bool_opt '-u', '--unique', 'Automatically select the first commit if it is unique.'
17
+ pos_arg :files, repeat: true, optional: true
18
+ end
21
19
 
22
20
  def run
23
21
  files.each do |file|
24
- ::Avm::Git::FileAutoFixup.new(context(:git), file).run
22
+ ::Avm::Git::FileAutoFixup.new(runner_context.call(:git), file, file_options).run
25
23
  end
26
24
  end
27
25
 
28
26
  private
29
27
 
28
+ def file_options
29
+ { Avm::Git::FileAutoFixup::OPTION_SELECT => select,
30
+ Avm::Git::FileAutoFixup::OPTION_UNIQUE => parsed.unique? }
31
+ end
32
+
30
33
  def files
31
34
  files_from_option || dirty_files
32
35
  end
33
36
 
34
37
  def files_from_option
35
- r = options.fetch('<files>')
38
+ r = parsed.files
36
39
  r.any? ? r.map { |p| p.to_pathname.expand_path } : nil
37
40
  end
38
41
 
39
42
  def dirty_files
40
- context(:git).dirty_files.map(&:path)
43
+ runner_context.call(:git).dirty_files.map(&:path)
44
+ end
45
+
46
+ def select
47
+ parsed.last? ? 1 : parsed.select
41
48
  end
42
49
  end
43
50
  end
@@ -9,8 +9,8 @@ require 'avm/git/commit'
9
9
 
10
10
  module Avm
11
11
  module Tools
12
- class Runner < ::EacRubyUtils::Console::DocoptRunner
13
- class Git < ::EacRubyUtils::Console::DocoptRunner
12
+ class Runner
13
+ class Git
14
14
  class Commit < ::EacRubyUtils::Console::DocoptRunner
15
15
  include ::EacRubyUtils::SimpleCache
16
16
  include ::EacRubyUtils::Console::Speaker