avm-tools 0.87.1 → 0.92.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_writings_base1.rb → eac_asciidoctor_base0.rb} +1 -1
- data/lib/avm/{eac_writings_base1 → eac_asciidoctor_base0}/apache_host.rb +1 -1
- data/lib/avm/{eac_writings_base1 → eac_asciidoctor_base0}/build.rb +5 -3
- data/lib/avm/{eac_writings_base1 → eac_asciidoctor_base0}/build/file.rb +4 -4
- data/lib/avm/{eac_writings_base1 → eac_asciidoctor_base0}/deploy.rb +6 -6
- data/lib/avm/{eac_writings_base1 → eac_asciidoctor_base0}/instance.rb +1 -1
- data/lib/avm/{eac_writings_base1 → eac_asciidoctor_base0}/project.rb +1 -1
- data/lib/avm/eac_rails_base1/runner/log.rb +43 -0
- data/lib/avm/eac_rails_base1/runner_with/bundle.rb +2 -32
- data/lib/avm/eac_rails_base1/runner_with/rails_environment.rb +47 -0
- data/lib/avm/eac_webapp_base0/deploy.rb +16 -4
- data/lib/avm/eac_webapp_base0/deploy/appended_directories.rb +1 -1
- data/lib/avm/eac_webapp_base0/deploy/git_info.rb +1 -1
- data/lib/avm/eac_webapp_base0/instance.rb +2 -0
- data/lib/avm/eac_webapp_base0/runner/deploy.rb +13 -21
- data/lib/avm/executables.rb +1 -1
- data/lib/avm/git/auto_commit/commit_info.rb +22 -0
- data/lib/avm/git/auto_commit/rules.rb +31 -0
- data/lib/avm/git/auto_commit/rules/base.rb +39 -0
- data/lib/avm/git/auto_commit/rules/last.rb +19 -0
- data/lib/avm/git/auto_commit/rules/manual.rb +45 -0
- data/lib/avm/git/auto_commit/rules/nth.rb +23 -0
- data/lib/avm/git/auto_commit/rules/unique.rb +21 -0
- data/lib/avm/git/file_auto_fixup.rb +15 -62
- data/lib/avm/instances/runner.rb +1 -1
- data/lib/avm/tools/runner/{eac_writings_base1.rb → eac_asciidoctor_base0.rb} +2 -2
- data/lib/avm/tools/runner/eac_webapp_base0.rb +14 -0
- data/lib/avm/tools/runner/git/auto_commit.rb +12 -13
- data/lib/avm/tools/runner/git/auto_fixup.rb +9 -9
- data/lib/avm/tools/runner/git/commit.rb +11 -20
- data/lib/avm/tools/runner/instance.rb +3 -6
- data/lib/avm/tools/runner/instance/info.rb +4 -7
- data/lib/avm/tools/runner/local_project/{eac_writings_base1.rb → eac_asciidoctor_base0.rb} +2 -2
- data/lib/avm/tools/runner/local_project/{eac_writings_base1 → eac_asciidoctor_base0}/build.rb +5 -9
- data/lib/avm/tools/version.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/definition/argument_option.rb +8 -0
- data/vendor/eac_cli/lib/eac_cli/definition/base_option.rb +6 -1
- data/vendor/eac_cli/lib/eac_cli/definition/boolean_option.rb +8 -0
- data/vendor/eac_cli/lib/eac_cli/definition/positional_argument.rb +12 -0
- data/vendor/eac_cli/lib/eac_cli/parser/collector.rb +3 -17
- data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
- data/vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb +21 -3
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/local_time_zone.rb +4 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- metadata +42 -13
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/time/default_time_zone_set.rb +0 -6
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module Git
|
7
|
+
module AutoCommit
|
8
|
+
module Rules
|
9
|
+
class Base
|
10
|
+
class << self
|
11
|
+
def keys
|
12
|
+
[long_key, short_key]
|
13
|
+
end
|
14
|
+
|
15
|
+
def long_key
|
16
|
+
name.demodulize.variableize
|
17
|
+
end
|
18
|
+
|
19
|
+
def short_key
|
20
|
+
long_key[0, 1]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def with_file(file)
|
25
|
+
self.class.const_get('WithFile').new(self, file)
|
26
|
+
end
|
27
|
+
|
28
|
+
class WithFile
|
29
|
+
common_constructor :rule, :file
|
30
|
+
|
31
|
+
def new_commit_info
|
32
|
+
::Avm::Git::AutoCommit::CommitInfo.new
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/git/auto_commit/rules/base'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module Git
|
7
|
+
module AutoCommit
|
8
|
+
module Rules
|
9
|
+
class Last < ::Avm::Git::AutoCommit::Rules::Base
|
10
|
+
class WithFile < ::Avm::Git::AutoCommit::Rules::Base::WithFile
|
11
|
+
def commit_info
|
12
|
+
file.commits.last.if_present { |v| new_commit_info.fixup(v) }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/git/auto_commit/rules/base'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module Git
|
7
|
+
module AutoCommit
|
8
|
+
module Rules
|
9
|
+
class Manual < ::Avm::Git::AutoCommit::Rules::Base
|
10
|
+
class WithFile < ::Avm::Git::AutoCommit::Rules::Base::WithFile
|
11
|
+
enable_console_speaker
|
12
|
+
|
13
|
+
COMMIT_FORMAT = '%h - %s (%cr)'
|
14
|
+
SKIP_OPTION = 's'
|
15
|
+
|
16
|
+
def commit_info
|
17
|
+
return nil unless file.commits.any?
|
18
|
+
|
19
|
+
commits_banner
|
20
|
+
request_input('Which commit?', list: commits_by_position).if_present do |v|
|
21
|
+
new_commit_info.fixup(v)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def commits_banner
|
26
|
+
file.commits.each_with_index do |commit, _index|
|
27
|
+
infov " #{commit.position}", format_commit(commit)
|
28
|
+
end
|
29
|
+
infov " #{SKIP_OPTION}", 'skip'
|
30
|
+
end
|
31
|
+
|
32
|
+
def commits_by_position
|
33
|
+
(file.commits.map { |commit| [commit.position.to_s, commit] } + [[SKIP_OPTION, nil]])
|
34
|
+
.to_h
|
35
|
+
end
|
36
|
+
|
37
|
+
def format_commit(commit)
|
38
|
+
commit.format(COMMIT_FORMAT)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/git/auto_commit/rules/base'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module Git
|
7
|
+
module AutoCommit
|
8
|
+
module Rules
|
9
|
+
class Nth < ::Avm::Git::AutoCommit::Rules::Base
|
10
|
+
common_constructor :number do
|
11
|
+
self.number = number.to_i
|
12
|
+
end
|
13
|
+
|
14
|
+
class WithFile < ::Avm::Git::AutoCommit::Rules::Base::WithFile
|
15
|
+
def commit_info
|
16
|
+
file.commits(number - 1).if_present { |v| new_commit_info.fixup(v) }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/git/auto_commit/rules/base'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module Git
|
7
|
+
module AutoCommit
|
8
|
+
module Rules
|
9
|
+
class Unique < ::Avm::Git::AutoCommit::Rules::Base
|
10
|
+
class WithFile < ::Avm::Git::AutoCommit::Rules::Base::WithFile
|
11
|
+
def commit_info
|
12
|
+
return nil unless file.commits.count == 1
|
13
|
+
|
14
|
+
new_commit_info.fixup(file.commits.first)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'avm/git/auto_commit/commit_info'
|
3
4
|
require 'eac_ruby_utils/core_ext'
|
4
5
|
|
5
6
|
module Avm
|
@@ -8,31 +9,24 @@ module Avm
|
|
8
9
|
enable_console_speaker
|
9
10
|
enable_simple_cache
|
10
11
|
enable_listable
|
11
|
-
lists.add_symbol :option, :select, :unique
|
12
12
|
|
13
|
-
common_constructor :git, :path, :
|
14
|
-
self.options = self.class.lists.option.hash_keys_validate!(options.symbolize_keys)
|
15
|
-
end
|
13
|
+
common_constructor :git, :path, :rules
|
16
14
|
|
17
|
-
COMMIT_FORMAT = '%h - %s (%cr)'
|
18
15
|
COMMITS_SEARCH_INTERVAL = 'origin/master..HEAD'
|
19
|
-
SKIP_OPTION = 's'
|
20
16
|
|
21
17
|
def run
|
22
18
|
start_banner
|
23
|
-
|
24
|
-
run_no_commits_found
|
25
|
-
elsif auto_selected_commit.present?
|
26
|
-
fixup_commit(auto_selected_commit)
|
27
|
-
else
|
28
|
-
run_commits_selection
|
29
|
-
end
|
19
|
+
run_commit || warn("No rule returned commit information for \"#{path}\"")
|
30
20
|
end
|
31
21
|
|
32
22
|
private
|
33
23
|
|
34
|
-
def
|
35
|
-
|
24
|
+
def commit_args
|
25
|
+
commit_info.if_present([], &:git_commit_args) + ['--', path]
|
26
|
+
end
|
27
|
+
|
28
|
+
def commit_info_uncached
|
29
|
+
rules.lazy.map { |rule| rule.with_file(self).commit_info }.find(&:present?)
|
36
30
|
end
|
37
31
|
|
38
32
|
def start_banner
|
@@ -40,50 +34,13 @@ module Avm
|
|
40
34
|
infov ' Commits found', commits.count
|
41
35
|
end
|
42
36
|
|
43
|
-
def
|
44
|
-
|
45
|
-
end
|
46
|
-
|
47
|
-
def fixup_commit(commit)
|
48
|
-
infov ' Commit selected/found', format_commit(commit)
|
49
|
-
git.execute!('commit', '--fixup', commit.sha1, '--', path)
|
50
|
-
success " Fixup with \"#{format_commit(commit)}\""
|
51
|
-
end
|
52
|
-
|
53
|
-
def run_commits_selection
|
54
|
-
selected_commit = select_commit
|
55
|
-
if selected_commit
|
56
|
-
fixup_commit(selected_commit)
|
57
|
-
else
|
58
|
-
infom ' Skipped'
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def select_commit
|
63
|
-
commits_banner
|
64
|
-
request_input('Which commit?', list: commits_by_position)
|
65
|
-
end
|
66
|
-
|
67
|
-
def selected_commit_by_unique
|
68
|
-
return unless options[OPTION_UNIQUE]
|
69
|
-
return commits.first if commits.first
|
70
|
-
end
|
37
|
+
def run_commit
|
38
|
+
return false if commit_info.blank?
|
71
39
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
end
|
77
|
-
|
78
|
-
def commits_banner
|
79
|
-
commits.each_with_index do |commit, _index|
|
80
|
-
infov " #{commit.position}", format_commit(commit)
|
81
|
-
end
|
82
|
-
infov " #{SKIP_OPTION}", 'skip'
|
83
|
-
end
|
84
|
-
|
85
|
-
def commits_by_position
|
86
|
-
(commits.map { |commit| [commit.position.to_s, commit] } + [[SKIP_OPTION, nil]]).to_h
|
40
|
+
infov ' Commit arguments', ::Shellwords.join(commit_args)
|
41
|
+
git.execute!('commit', *commit_args)
|
42
|
+
success ' Commited'
|
43
|
+
true
|
87
44
|
end
|
88
45
|
|
89
46
|
def commits_uncached
|
@@ -93,10 +50,6 @@ module Avm
|
|
93
50
|
.each_with_index.map { |commit, index| CommitDelegator.new(commit, index) }
|
94
51
|
end
|
95
52
|
|
96
|
-
def format_commit(commit)
|
97
|
-
commit.format(COMMIT_FORMAT)
|
98
|
-
end
|
99
|
-
|
100
53
|
class CommitDelegator < ::SimpleDelegator
|
101
54
|
attr_reader :index
|
102
55
|
|
data/lib/avm/instances/runner.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'avm/eac_webapp_base0/runner'
|
4
|
-
require 'avm/
|
4
|
+
require 'avm/eac_asciidoctor_base0'
|
5
5
|
require 'eac_ruby_utils/console/docopt_runner'
|
6
6
|
|
7
7
|
module Avm
|
8
8
|
module Tools
|
9
9
|
class Runner
|
10
|
-
class
|
10
|
+
class EacAsciidoctorBase0 < ::Avm::EacWebappBase0::Runner
|
11
11
|
require_sub __FILE__
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_webapp_base0/runner'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module Tools
|
8
|
+
class Runner
|
9
|
+
class EacWebappBase0 < ::Avm::EacWebappBase0::Runner
|
10
|
+
require_sub __FILE__
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -2,16 +2,14 @@
|
|
2
2
|
|
3
3
|
require 'avm/git/auto_commit_path'
|
4
4
|
require 'avm/files/formatter'
|
5
|
-
require 'eac_cli/
|
5
|
+
require 'eac_cli/core_ext'
|
6
6
|
|
7
7
|
module Avm
|
8
8
|
module Tools
|
9
9
|
class Runner
|
10
10
|
class Git
|
11
|
-
class AutoCommit
|
12
|
-
|
13
|
-
|
14
|
-
runner_definition do
|
11
|
+
class AutoCommit
|
12
|
+
runner_with :help do
|
15
13
|
desc 'Commit with message based in content commited.'
|
16
14
|
bool_opt '-d', '--dirty', 'Select dirty files.'
|
17
15
|
bool_opt '-f', '--format', 'Format files before commit.'
|
@@ -33,17 +31,19 @@ module Avm
|
|
33
31
|
|
34
32
|
def clear_stage
|
35
33
|
infom 'Clearing stage...'
|
36
|
-
|
34
|
+
runner_context.call(:git).system!('reset', 'HEAD')
|
37
35
|
end
|
38
36
|
|
39
37
|
def dirty_paths
|
40
|
-
return [] unless
|
38
|
+
return [] unless parsed.dirty?
|
41
39
|
|
42
|
-
|
40
|
+
runner_context.call(:git).dirty_files.map do |d|
|
41
|
+
runner_context.call(:git).root_path.join / d.path
|
42
|
+
end
|
43
43
|
end
|
44
44
|
|
45
45
|
def format_files
|
46
|
-
return unless
|
46
|
+
return unless parsed.format?
|
47
47
|
|
48
48
|
infom 'Formating files...'
|
49
49
|
::Avm::Files::Formatter.new(paths.map(&:path),
|
@@ -51,10 +51,9 @@ module Avm
|
|
51
51
|
end
|
52
52
|
|
53
53
|
def paths_uncached
|
54
|
-
(
|
55
|
-
.
|
56
|
-
.
|
57
|
-
.sort.uniq.map { |path| ::Avm::Git::AutoCommitPath.new(context(:git), path) }
|
54
|
+
(parsed.paths.map { |p| p.to_pathname.expand_path } + dirty_paths)
|
55
|
+
.reject(&:directory?).sort.uniq
|
56
|
+
.map { |path| ::Avm::Git::AutoCommitPath.new(runner_context.call(:git), path) }
|
58
57
|
end
|
59
58
|
|
60
59
|
def run_paths
|
@@ -3,6 +3,7 @@
|
|
3
3
|
require 'eac_cli/core_ext'
|
4
4
|
require 'eac_ruby_utils/console/docopt_runner'
|
5
5
|
require 'avm/git/file_auto_fixup'
|
6
|
+
require 'avm/git/auto_commit/rules'
|
6
7
|
|
7
8
|
module Avm
|
8
9
|
module Tools
|
@@ -11,25 +12,18 @@ module Avm
|
|
11
12
|
class AutoFixup
|
12
13
|
runner_with :help do
|
13
14
|
desc 'Auto fixup files.'
|
14
|
-
|
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.'
|
15
|
+
arg_opt '-r', '--rule', 'Apply a rule in the specified order.', repeat: true
|
17
16
|
pos_arg :files, repeat: true, optional: true
|
18
17
|
end
|
19
18
|
|
20
19
|
def run
|
21
20
|
files.each do |file|
|
22
|
-
::Avm::Git::FileAutoFixup.new(runner_context.call(:git), file,
|
21
|
+
::Avm::Git::FileAutoFixup.new(runner_context.call(:git), file, rules).run
|
23
22
|
end
|
24
23
|
end
|
25
24
|
|
26
25
|
private
|
27
26
|
|
28
|
-
def file_options
|
29
|
-
{ Avm::Git::FileAutoFixup::OPTION_SELECT => select,
|
30
|
-
Avm::Git::FileAutoFixup::OPTION_UNIQUE => parsed.unique? }
|
31
|
-
end
|
32
|
-
|
33
27
|
def files
|
34
28
|
files_from_option || dirty_files
|
35
29
|
end
|
@@ -43,6 +37,12 @@ module Avm
|
|
43
37
|
runner_context.call(:git).dirty_files.map(&:path)
|
44
38
|
end
|
45
39
|
|
40
|
+
def rules
|
41
|
+
parsed.rule.map do |rule_string|
|
42
|
+
::Avm::Git::AutoCommit::Rules.parse(rule_string)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
46
|
def select
|
47
47
|
parsed.last? ? 1 : parsed.select
|
48
48
|
end
|
@@ -11,22 +11,13 @@ module Avm
|
|
11
11
|
module Tools
|
12
12
|
class Runner
|
13
13
|
class Git
|
14
|
-
class Commit
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
Usage:
|
22
|
-
__PROGRAM__ [options] <ref>
|
23
|
-
__PROGRAM__ -h | --help
|
24
|
-
|
25
|
-
Options:
|
26
|
-
-h --help Mostra esta ajuda.
|
27
|
-
-f --files Mostra os arquivos.
|
28
|
-
-s --size Mostra o tamanho de arquivos.
|
29
|
-
DOCOPT
|
14
|
+
class Commit
|
15
|
+
runner_with :help do
|
16
|
+
desc 'Mostra informações de um commit.'
|
17
|
+
bool_opt '-f', '--files', 'Mostra os arquivos.'
|
18
|
+
bool_opt '-s', '--size', 'Mostra o tamanho de arquivos.'
|
19
|
+
pos_arg :ref
|
20
|
+
end
|
30
21
|
|
31
22
|
def run
|
32
23
|
input_banner
|
@@ -64,7 +55,7 @@ module Avm
|
|
64
55
|
end
|
65
56
|
|
66
57
|
def files_banner
|
67
|
-
return unless
|
58
|
+
return unless parsed.files?
|
68
59
|
|
69
60
|
commit.files.each do |file|
|
70
61
|
infov " #{file.path}", file_value(file)
|
@@ -82,11 +73,11 @@ module Avm
|
|
82
73
|
end
|
83
74
|
|
84
75
|
def reference
|
85
|
-
|
76
|
+
parsed.ref
|
86
77
|
end
|
87
78
|
|
88
79
|
def git_uncached
|
89
|
-
::EacLauncher::Git::Base.new(
|
80
|
+
::EacLauncher::Git::Base.new(runner_context.call(:repository_path))
|
90
81
|
end
|
91
82
|
|
92
83
|
def commit_uncached
|
@@ -103,7 +94,7 @@ module Avm
|
|
103
94
|
end
|
104
95
|
|
105
96
|
def show_size?
|
106
|
-
|
97
|
+
parsed.size?
|
107
98
|
end
|
108
99
|
end
|
109
100
|
end
|