avm-tools 0.84.0 → 0.87.1

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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/lib/avm/git/file_auto_fixup.rb +22 -3
  3. data/lib/avm/instances/base/auto_values/database.rb +10 -0
  4. data/lib/avm/instances/base/auto_values/filesystem.rb +12 -0
  5. data/lib/avm/instances/entry_keys.rb +1 -1
  6. data/lib/avm/instances/runner.rb +2 -4
  7. data/lib/avm/projects/stereotypes/git/update.rb +42 -0
  8. data/lib/avm/projects/stereotypes/git/update/subrepo.rb +85 -0
  9. data/lib/avm/tools/runner.rb +2 -4
  10. data/lib/avm/tools/runner/eac_rails_base0.rb +1 -1
  11. data/lib/avm/tools/runner/eac_rails_base0/apache_path.rb +1 -1
  12. data/lib/avm/tools/runner/eac_redmine_base0.rb +1 -1
  13. data/lib/avm/tools/runner/eac_redmine_base0/core_update.rb +1 -1
  14. data/lib/avm/tools/runner/eac_redmine_base0/docker.rb +1 -1
  15. data/lib/avm/tools/runner/eac_redmine_base0/project_rename.rb +1 -1
  16. data/lib/avm/tools/runner/eac_wordpress_base0.rb +1 -1
  17. data/lib/avm/tools/runner/eac_writings_base0.rb +1 -1
  18. data/lib/avm/tools/runner/eac_writings_base1.rb +1 -1
  19. data/lib/avm/tools/runner/files.rb +7 -15
  20. data/lib/avm/tools/runner/files/format.rb +18 -27
  21. data/lib/avm/tools/runner/files/rotate.rb +11 -21
  22. data/lib/avm/tools/runner/git.rb +10 -15
  23. data/lib/avm/tools/runner/git/auto_commit.rb +2 -2
  24. data/lib/avm/tools/runner/git/auto_fixup.rb +23 -16
  25. data/lib/avm/tools/runner/git/commit.rb +2 -2
  26. data/lib/avm/tools/runner/git/deploy.rb +18 -28
  27. data/lib/avm/tools/runner/git/dirty_files.rb +2 -2
  28. data/lib/avm/tools/runner/git/issue.rb +2 -2
  29. data/lib/avm/tools/runner/git/organize.rb +2 -2
  30. data/lib/avm/tools/runner/git/revisions_test.rb +2 -2
  31. data/lib/avm/tools/runner/git/subrepo.rb +2 -2
  32. data/lib/avm/tools/runner/git/subrepo/check.rb +2 -2
  33. data/lib/avm/tools/runner/git/subrepo/clone.rb +2 -2
  34. data/lib/avm/tools/runner/git/subrepo/fix.rb +4 -3
  35. data/lib/avm/tools/runner/instance.rb +1 -1
  36. data/lib/avm/tools/runner/instance/info.rb +1 -1
  37. data/lib/avm/tools/runner/launcher.rb +1 -1
  38. data/lib/avm/tools/runner/launcher/instances.rb +1 -1
  39. data/lib/avm/tools/runner/launcher/projects.rb +1 -1
  40. data/lib/avm/tools/runner/launcher/publish.rb +1 -1
  41. data/lib/avm/tools/runner/local_project.rb +5 -8
  42. data/lib/avm/tools/runner/local_project/eac_writings_base0.rb +5 -6
  43. data/lib/avm/tools/runner/local_project/eac_writings_base0/build_chapters.rb +4 -6
  44. data/lib/avm/tools/runner/local_project/eac_writings_base0/build_single.rb +4 -5
  45. data/lib/avm/tools/runner/local_project/eac_writings_base0/info.rb +4 -5
  46. data/lib/avm/tools/runner/local_project/eac_writings_base1.rb +2 -2
  47. data/lib/avm/tools/runner/local_project/eac_writings_base1/build.rb +2 -2
  48. data/lib/avm/tools/runner/local_project/info.rb +2 -2
  49. data/lib/avm/tools/runner/local_project/ruby.rb +2 -2
  50. data/lib/avm/tools/runner/local_project/ruby/bundler.rb +2 -2
  51. data/lib/avm/tools/runner/local_project/ruby/bundler/gemfile_lock.rb +2 -2
  52. data/lib/avm/tools/runner/local_project/test.rb +2 -2
  53. data/lib/avm/tools/runner/local_project/update.rb +2 -2
  54. data/lib/avm/tools/runner/local_project/version_bump.rb +10 -13
  55. data/lib/avm/tools/runner/ruby.rb +1 -1
  56. data/lib/avm/tools/runner/ruby/gems.rb +1 -1
  57. data/lib/avm/tools/runner/ruby/gems/generate.rb +1 -1
  58. data/lib/avm/tools/runner/ruby/rubocop.rb +1 -1
  59. data/lib/avm/tools/runner/self.rb +1 -1
  60. data/lib/avm/tools/runner/self/docker.rb +1 -1
  61. data/lib/avm/tools/version.rb +1 -1
  62. data/template/avm/eac_rails_base0/deploy/config/database.yml.template +3 -2
  63. data/vendor/eac_cli/lib/eac_cli/docopt/runner_context_replacement.rb +15 -0
  64. data/vendor/eac_cli/lib/eac_cli/docopt/runner_extension.rb +5 -0
  65. data/vendor/eac_cli/lib/eac_cli/parser/alternative.rb +4 -4
  66. data/vendor/eac_cli/lib/eac_cli/parser/alternative/long_options.rb +37 -0
  67. data/vendor/eac_cli/lib/eac_cli/parser/alternative/option_argument.rb +29 -0
  68. data/vendor/eac_cli/lib/eac_cli/parser/alternative/options.rb +7 -36
  69. data/vendor/eac_cli/lib/eac_cli/parser/alternative/short_options.rb +45 -0
  70. data/vendor/eac_cli/lib/eac_cli/runner.rb +0 -48
  71. data/vendor/eac_cli/lib/eac_cli/runner/after_class_methods.rb +29 -0
  72. data/vendor/eac_cli/lib/eac_cli/runner/instance_methods.rb +31 -0
  73. data/vendor/eac_cli/lib/eac_cli/runner_with/subcommands.rb +15 -3
  74. data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
  75. data/vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb +22 -1
  76. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/application.rb +1 -0
  77. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +9 -6
  78. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner/test_all.rb +4 -9
  79. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  80. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/common_concern/module_setup.rb +16 -6
  81. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/common_constructor.rb +2 -99
  82. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/class_initialize.rb +29 -0
  83. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/instance_initialize.rb +53 -0
  84. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/common_constructor/super_args.rb +54 -0
  85. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/docopt_runner/_subcommands.rb +10 -1
  86. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/traverser.rb +0 -2
  87. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/inflector.rb +4 -1
  88. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/local_time_zone.rb +38 -0
  89. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel.rb +4 -0
  90. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel/nyi.rb +8 -0
  91. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/template.rb +10 -0
  92. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/object/template.rb +1 -8
  93. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/time/default_time_zone_set.rb +3 -2
  94. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  95. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/yaml.rb +8 -0
  96. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/common_concern_spec.rb +14 -4
  97. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/common_constructor_spec.rb +30 -0
  98. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/inflector_spec.rb +2 -1
  99. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/local_time_zone_spec.rb +17 -0
  100. metadata +18 -3
  101. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/time/local_time_zone.rb +0 -25
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d6a742d3c0263c2512a52c5109e56336b275560ed7db3c94fe42792021c1762a
4
- data.tar.gz: 3efdf68bf27d110a3a17ea012b208b6a59b40a05158f360f018423917fc55089
3
+ metadata.gz: 39b5ee493e22bb4e2eb77a9e62067e0de6dd23b3d3d4dd62ba2eeadedf183d22
4
+ data.tar.gz: 0d528d18932807487721a84c32a6c4d1f2906a015840ac360921fcbca78b493c
5
5
  SHA512:
6
- metadata.gz: 1c1fcb15c0f44dc6a91081eed404f64e1a729fce4de417ada083f09b23149a7192b33d8ed67a4d087de84c161f43aca09b10dd9a51ec4c1ce645354c2cd62b96
7
- data.tar.gz: 04bae047386b129d906a5ed2f8663ba0c0c3019a48b0b63603ac431ad4cc17163b92bae642daa9785d3c8d8277e1643d65da5ff612815e1110ae0566a8258086
6
+ metadata.gz: 4a7a88618b900c728d17a3ef9f492f1b0f42d74313190f8de7d532ebda8f89e27866eb9edbdee7043cfadfd075b71b44390d8c190191b11341120baef2489fea
7
+ data.tar.gz: e209c17b18ab7d34483054cb5545da9e946212ca857ae52ec18fa87b00704c3a589697ab1e0dfa1ec8b093afe55a8f8ea5a1e61487bda8ca717196d4e0e47679
@@ -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)
@@ -8,6 +8,7 @@ module Avm
8
8
  module AutoValues
9
9
  module Database
10
10
  DEFAULT_HOSTNAME = '127.0.0.1'
11
+ DEFAULT_LIMIT = 5
11
12
  DEFAULT_PORTS = {
12
13
  'postgresql' => 5432,
13
14
  'mysql' => 3306,
@@ -15,6 +16,7 @@ module Avm
15
16
  'sqlserver' => 1433
16
17
  }.freeze
17
18
  DEFAULT_SYSTEM = 'postgresql'
19
+ DEFAULT_TIMEOUT = 5000
18
20
 
19
21
  def auto_database_name
20
22
  inherited_entry_value(::Avm::Instances::EntryKeys::DATABASE_ID,
@@ -25,6 +27,10 @@ module Avm
25
27
  database_auto_common('hostname') || DEFAULT_HOSTNAME
26
28
  end
27
29
 
30
+ def auto_database_limit
31
+ database_auto_common('limit') || DEFAULT_LIMIT
32
+ end
33
+
28
34
  def auto_database_password
29
35
  database_auto_common('password')
30
36
  end
@@ -41,6 +47,10 @@ module Avm
41
47
  database_auto_common('system') || DEFAULT_SYSTEM
42
48
  end
43
49
 
50
+ def auto_database_timeout
51
+ database_auto_common('timeout') || DEFAULT_TIMEOUT
52
+ end
53
+
44
54
  private
45
55
 
46
56
  def database_auto_common(suffix)
@@ -20,12 +20,24 @@ module Avm
20
20
  end
21
21
 
22
22
  def auto_fs_url
23
+ auto_fs_url_with_ssh || auto_fs_url_without_ssh
24
+ end
25
+
26
+ def auto_fs_url_with_ssh
23
27
  read_entry_optional('ssh.url').if_present do |ssh_url|
24
28
  read_entry_optional('fs_path').if_present do |fs_path|
25
29
  "#{ssh_url}#{fs_path}"
26
30
  end
27
31
  end
28
32
  end
33
+
34
+ def auto_fs_url_without_ssh
35
+ return nil if read_entry_optional('ssh.url').present?
36
+
37
+ read_entry_optional('fs_path').if_present do |fs_path|
38
+ "file://#{fs_path}"
39
+ end
40
+ end
29
41
  end
30
42
  end
31
43
  end
@@ -41,7 +41,7 @@ module Avm
41
41
 
42
42
  {
43
43
  '' => %w[fs_path host_id source_instance_id],
44
- database: %w[id hostname name password port system username],
44
+ database: %w[id hostname limit name password port system timeout username],
45
45
  mailer: {
46
46
  '' => %w[id from reply_to],
47
47
  smtp: %w[address port domain username password authentication starttls_auto]
@@ -1,11 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_cli/core_ext'
4
- require 'eac_ruby_utils/console/docopt_runner'
5
4
 
6
5
  module Avm
7
6
  module Instances
8
- class Runner < ::EacRubyUtils::Console::DocoptRunner
7
+ class Runner
9
8
  class << self
10
9
  def instance_class
11
10
  ::Avm.const_get(stereotype_name).const_get('Instance')
@@ -20,9 +19,8 @@ module Avm
20
19
  end
21
20
  end
22
21
 
23
- runner_with
24
22
  description = "Utilities for #{stereotype_name} instances."
25
- runner_definition do
23
+ runner_with :help, :subcommands do
26
24
  desc description
27
25
  pos_arg 'instance-id'
28
26
  subcommands
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'avm/patches/class/i18n'
5
+
6
+ module Avm
7
+ module Projects
8
+ module Stereotypes
9
+ class Git
10
+ class Update
11
+ require_sub __FILE__
12
+ enable_simple_cache
13
+ enable_console_speaker
14
+ common_constructor :instance
15
+
16
+ delegate :git_repo, to: :instance
17
+
18
+ def run
19
+ clean_all
20
+ selected_subrepos.map do |f|
21
+ infov 'Subrepo', f
22
+ on_speaker_node do |node|
23
+ node.stderr_line_prefix = ' '
24
+ ::Avm::Projects::Stereotypes::Git::Update::Subrepo.new(self, f).run
25
+ end
26
+ end
27
+ end
28
+
29
+ def selected_subrepos_uncached
30
+ git_repo.command('subrepo', '-q', 'status').execute!.split("\n").map(&:strip)
31
+ .select(&:present?).map(&:to_pathname)
32
+ end
33
+
34
+ def clean_all
35
+ infom 'Cleaning'
36
+ git_repo.command('subrepo', 'clean', '--all').execute!
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_launcher/git/base'
4
+ require 'avm/git/commit'
5
+
6
+ module Avm
7
+ module Projects
8
+ module Stereotypes
9
+ class Git
10
+ class Update
11
+ class Subrepo
12
+ TRANSLATE_CLASS = self
13
+
14
+ require_sub __FILE__, include_modules: true
15
+ enable_simple_cache
16
+ enable_console_speaker
17
+ common_constructor :parent_update, :subpath do
18
+ self.subpath = subpath.to_pathname
19
+ end
20
+
21
+ delegate :git_repo, :instance, to: :parent_update
22
+
23
+ def run
24
+ run_banner
25
+ if base_commit.sha1 == pull_commit.sha1
26
+ infom 'No new commit (No changes)'
27
+ elsif fix_message.present?
28
+ on_fix_message_present
29
+ else
30
+ warn 'No fix message found'
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ def base_commit_uncached
37
+ ::Avm::Git::Commit.new(git_repo, git_repo.rev_parse('HEAD'))
38
+ end
39
+
40
+ def on_fix_message_present
41
+ infom 'Fixing message...'
42
+ infov 'Message', fix_message
43
+ git_repo.command('commit', '--amend', '-m', fix_message).execute!
44
+ end
45
+
46
+ def pull_commit_uncached
47
+ base_commit
48
+ infom 'Pulling subrepo...'
49
+ git_repo.command('subrepo', 'pull', '--force', subpath).execute!
50
+ ::Avm::Git::Commit.new(
51
+ ::EacLauncher::Git::Base.new(git_repo.root_path.to_path),
52
+ git_repo.rev_parse('HEAD')
53
+ )
54
+ end
55
+
56
+ def run_banner
57
+ infov 'Base SHA1', base_commit.sha1
58
+ infov 'Pull SHA1', pull_commit.sha1
59
+ end
60
+
61
+ def fix_message
62
+ TRANSLATE_CLASS.translate(
63
+ fix_message_translate_key, subpath: subpath, name: subpath.basename,
64
+ __locale: instance.locale
65
+ )
66
+ end
67
+
68
+ def fix_message_translate_key
69
+ if gitrepo_only_changed?
70
+ :gitrepo_only_changed_fix_message
71
+ else
72
+ :content_updated_fix_message
73
+ end
74
+ end
75
+
76
+ def gitrepo_only_changed?
77
+ pull_commit.files.count == 1 &&
78
+ ::File.basename(pull_commit.files.first.path) == '.gitrepo'
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
@@ -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