avm 0.3.2 → 0.6.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.
- checksums.yaml +4 -4
- data/lib/avm/data/instance/files_unit.rb +40 -0
- data/lib/avm/data/instance/package.rb +18 -0
- data/lib/avm/data/instance/unit.rb +17 -0
- data/lib/avm/{git/issue.rb → data/instance.rb} +2 -2
- data/lib/avm/data/package/dump.rb +119 -0
- data/lib/avm/data/package/load.rb +48 -0
- data/lib/avm/data/package.rb +42 -0
- data/lib/avm/data/unit.rb +94 -0
- data/lib/avm/jobs/base.rb +63 -0
- data/lib/avm/jobs/variables_source.rb +22 -0
- data/lib/avm/{git/organize.rb → jobs.rb} +2 -4
- data/lib/avm/path_string.rb +27 -0
- data/lib/avm/registry/base.rb +65 -0
- data/lib/avm/registry.rb +29 -0
- data/lib/avm/rspec/setup.rb +22 -0
- data/lib/avm/rspec/shared_examples/in_avm_registry.rb +11 -0
- data/lib/avm/rspec/shared_examples/not_in_avm_registry.rb +14 -0
- data/lib/avm/rspec.rb +9 -0
- data/lib/avm/scms/base.rb +28 -0
- data/lib/avm/scms/commit.rb +43 -0
- data/lib/avm/source_stereotypes/base.rb +21 -0
- data/lib/avm/sources/base.rb +67 -0
- data/lib/avm/sources/configuration/_locale.rb +16 -0
- data/lib/avm/sources/configuration/_rubocop.rb +24 -0
- data/lib/avm/sources/configuration/_tests.rb +27 -0
- data/lib/avm/sources/configuration.rb +55 -0
- data/lib/avm/sources.rb +9 -0
- data/lib/avm/sync.rb +94 -0
- data/lib/avm/version.rb +1 -1
- metadata +80 -68
- data/lib/avm/files/appendable/file_content.rb +0 -24
- data/lib/avm/files/appendable/plain_directory.rb +0 -25
- data/lib/avm/files/appendable/resource_base.rb +0 -13
- data/lib/avm/files/appendable/tar_output_command.rb +0 -26
- data/lib/avm/files/appendable/templatized_directory.rb +0 -29
- data/lib/avm/files/appendable.rb +0 -55
- data/lib/avm/files/appender.rb +0 -11
- data/lib/avm/files/deploy.rb +0 -71
- data/lib/avm/files/formatter/formats/base.rb +0 -62
- data/lib/avm/files/formatter/formats/generic_plain.rb +0 -34
- data/lib/avm/files/formatter/formats/html.rb +0 -45
- data/lib/avm/files/formatter/formats/javascript.rb +0 -23
- data/lib/avm/files/formatter/formats/json.rb +0 -27
- data/lib/avm/files/formatter/formats/php.rb +0 -21
- data/lib/avm/files/formatter/formats/python.rb +0 -21
- data/lib/avm/files/formatter/formats/ruby.rb +0 -22
- data/lib/avm/files/formatter/formats/xml.rb +0 -27
- data/lib/avm/files/formatter/formats.rb +0 -13
- data/lib/avm/files/formatter/utf8_assert.rb +0 -74
- data/lib/avm/files/formatter.rb +0 -90
- data/lib/avm/files/info.rb +0 -24
- data/lib/avm/files/rotate.rb +0 -107
- data/lib/avm/files.rb +0 -9
- data/lib/avm/git/auto_commit/commit_info.rb +0 -23
- data/lib/avm/git/auto_commit/rules/base.rb +0 -39
- data/lib/avm/git/auto_commit/rules/last.rb +0 -19
- data/lib/avm/git/auto_commit/rules/manual.rb +0 -45
- data/lib/avm/git/auto_commit/rules/new.rb +0 -24
- data/lib/avm/git/auto_commit/rules/nth.rb +0 -31
- data/lib/avm/git/auto_commit/rules/unique.rb +0 -21
- data/lib/avm/git/auto_commit/rules.rb +0 -31
- data/lib/avm/git/auto_commit_path/ruby.rb +0 -20
- data/lib/avm/git/auto_commit_path.rb +0 -28
- data/lib/avm/git/commit/class_methods.rb +0 -31
- data/lib/avm/git/commit/deploy.rb +0 -38
- data/lib/avm/git/commit/deploy_methods.rb +0 -19
- data/lib/avm/git/commit/diff_tree_line.rb +0 -32
- data/lib/avm/git/commit/file.rb +0 -46
- data/lib/avm/git/commit.rb +0 -59
- data/lib/avm/git/file_auto_fixup.rb +0 -83
- data/lib/avm/git/issue/complete/commits.rb +0 -42
- data/lib/avm/git/issue/complete/git_subrepos.rb +0 -23
- data/lib/avm/git/issue/complete/local_branch.rb +0 -54
- data/lib/avm/git/issue/complete/local_tag.rb +0 -39
- data/lib/avm/git/issue/complete/push.rb +0 -54
- data/lib/avm/git/issue/complete/remote.rb +0 -33
- data/lib/avm/git/issue/complete/test.rb +0 -45
- data/lib/avm/git/issue/complete/tracker.rb +0 -28
- data/lib/avm/git/issue/complete/validation.rb +0 -31
- data/lib/avm/git/issue/complete/validations.rb +0 -53
- data/lib/avm/git/issue/complete/working_tree.rb +0 -19
- data/lib/avm/git/issue/complete.rb +0 -51
- data/lib/avm/git/issue/deliver.rb +0 -56
- data/lib/avm/git/organize/reference_update.rb +0 -34
- data/lib/avm/git/organize/repository.rb +0 -76
- data/lib/avm/git/revision_test.rb +0 -106
- data/lib/avm/git/subrepo_check/parent.rb +0 -51
- data/lib/avm/git/subrepo_check/remote.rb +0 -89
- data/lib/avm/git/subrepo_check/show_result.rb +0 -32
- data/lib/avm/git/subrepo_check.rb +0 -38
- data/lib/avm/git/subrepo_checks.rb +0 -59
- data/lib/avm/git.rb +0 -10
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'avm/git/auto_commit/commit_info'
|
|
4
|
-
require 'eac_ruby_utils/core_ext'
|
|
5
|
-
|
|
6
|
-
module Avm
|
|
7
|
-
module Git
|
|
8
|
-
class FileAutoFixup
|
|
9
|
-
enable_speaker
|
|
10
|
-
enable_simple_cache
|
|
11
|
-
enable_listable
|
|
12
|
-
|
|
13
|
-
common_constructor :git, :path, :rules do
|
|
14
|
-
self.path = path.to_pathname.expand_path(git.root_path)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
COMMITS_SEARCH_INTERVAL = 'origin/master..HEAD'
|
|
18
|
-
|
|
19
|
-
def git_relative_path
|
|
20
|
-
path.to_pathname.relative_path_from(git.root_path)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def run
|
|
24
|
-
start_banner
|
|
25
|
-
run_commit || warn("No rule returned commit information for \"#{path}\"")
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
private
|
|
29
|
-
|
|
30
|
-
def commit_args
|
|
31
|
-
commit_info.if_present([], &:git_commit_args) + ['--', git_relative_path]
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def commit_info_uncached
|
|
35
|
-
rules.lazy.map { |rule| rule.with_file(self).commit_info }.find(&:present?)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def start_banner
|
|
39
|
-
infov 'Path', path
|
|
40
|
-
infov ' Commits found', commits.count
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def run_commit
|
|
44
|
-
return false if commit_info.blank?
|
|
45
|
-
|
|
46
|
-
infov ' Commit arguments', ::Shellwords.join(commit_args)
|
|
47
|
-
run_git_add_and_commit
|
|
48
|
-
success ' Commited'
|
|
49
|
-
true
|
|
50
|
-
end
|
|
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
|
-
|
|
62
|
-
def commits_uncached
|
|
63
|
-
git.execute!('log', '--pretty=format:%H', COMMITS_SEARCH_INTERVAL, '--', path)
|
|
64
|
-
.each_line.map { |sha1| ::Avm::Git::Commit.new(git, sha1.strip) }
|
|
65
|
-
.reject { |commit| commit.subject.start_with?('fixup!') }
|
|
66
|
-
.each_with_index.map { |commit, index| CommitDelegator.new(commit, index) }
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
class CommitDelegator < ::SimpleDelegator
|
|
70
|
-
attr_reader :index
|
|
71
|
-
|
|
72
|
-
def initialize(commit, index)
|
|
73
|
-
super(commit)
|
|
74
|
-
@index = index
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def position
|
|
78
|
-
index + 1
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'avm/result'
|
|
4
|
-
|
|
5
|
-
module Avm
|
|
6
|
-
module Git
|
|
7
|
-
module Issue
|
|
8
|
-
class Complete
|
|
9
|
-
module Commits
|
|
10
|
-
def commits_result
|
|
11
|
-
::Avm::Result.success_or_error(commits.any?, 'yes', 'none')
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def commits_uncached
|
|
15
|
-
return [] unless branch_hash && follow_master?
|
|
16
|
-
|
|
17
|
-
interval = remote_master_hash ? "#{remote_master_hash}..#{branch_hash}" : branch_hash
|
|
18
|
-
@git.execute!('rev-list', interval).each_line.map(&:strip)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def bifurcations_result
|
|
22
|
-
commits.each do |commit|
|
|
23
|
-
if multiple_parents?(commit)
|
|
24
|
-
return ::Avm::Result.error("#{commit} has multiple parents")
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
::Avm::Result.success('no')
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def multiple_parents?(commit)
|
|
31
|
-
commit_parents(commit).count > 1
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def commit_parents(commit)
|
|
35
|
-
@git.execute!('log', '--pretty=%P', '-n', '1', commit).split(' ').map(&:strip)
|
|
36
|
-
.select(&:present?)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'avm/git/subrepo_checks'
|
|
4
|
-
require 'eac_git/local'
|
|
5
|
-
|
|
6
|
-
module Avm
|
|
7
|
-
module Git
|
|
8
|
-
module Issue
|
|
9
|
-
class Complete
|
|
10
|
-
module GitSubrepos
|
|
11
|
-
def git_subrepos_result
|
|
12
|
-
return ::Avm::Result.error('Unclean workspace') unless clean_workspace?
|
|
13
|
-
|
|
14
|
-
infom 'Checking Git subrepos...'
|
|
15
|
-
r = ::Avm::Git::SubrepoChecks.new(::EacGit::Local.new(@git)).add_all_subrepos
|
|
16
|
-
r.check_remote = true
|
|
17
|
-
r.result
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'avm/result'
|
|
4
|
-
|
|
5
|
-
module Avm
|
|
6
|
-
module Git
|
|
7
|
-
module Issue
|
|
8
|
-
class Complete
|
|
9
|
-
module LocalBranch
|
|
10
|
-
def branch_uncached
|
|
11
|
-
@git.current_branch
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def branch_hash_uncached
|
|
15
|
-
@git.rev_parse("refs/heads/#{branch}")
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def branch_name
|
|
19
|
-
branch.split('/')[-1]
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def branch_name_result
|
|
23
|
-
::Avm::Result.success_or_error(issue_id.present?, branch_name)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def branch_hash_result
|
|
27
|
-
::Avm::Result.success_or_error(
|
|
28
|
-
branch_hash.present?,
|
|
29
|
-
branch_hash
|
|
30
|
-
)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def follow_master_result
|
|
34
|
-
return ::Avm::Result.neutral('No branch hash') unless branch_hash
|
|
35
|
-
|
|
36
|
-
r = follow_master?
|
|
37
|
-
::Avm::Result.success_or_error(r, 'yes', 'no')
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def follow_master?
|
|
41
|
-
remote_master_hash ? @git.descendant?(branch_hash, remote_master_hash) : true
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def remove_local_branch
|
|
45
|
-
info 'Removendo branch local...'
|
|
46
|
-
bn = branch_name
|
|
47
|
-
git(['checkout', branch_hash])
|
|
48
|
-
git(['branch', '-D', bn])
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'avm/result'
|
|
4
|
-
|
|
5
|
-
module Avm
|
|
6
|
-
module Git
|
|
7
|
-
module Issue
|
|
8
|
-
class Complete
|
|
9
|
-
module LocalTag
|
|
10
|
-
def assert_tag
|
|
11
|
-
if tag_hash
|
|
12
|
-
return if tag_hash == branch_hash
|
|
13
|
-
|
|
14
|
-
delete_tag
|
|
15
|
-
end
|
|
16
|
-
create_tag
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def delete_tag
|
|
20
|
-
info 'Removendo tag...'
|
|
21
|
-
git(['tag', '-d', branch_name])
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def tag
|
|
25
|
-
"refs/tags/#{branch_name}"
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def tag_hash
|
|
29
|
-
@git.rev_parse(tag)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def create_tag
|
|
33
|
-
git(['tag', branch_name, branch_hash])
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Avm
|
|
4
|
-
module Git
|
|
5
|
-
module Issue
|
|
6
|
-
class Complete
|
|
7
|
-
module Push
|
|
8
|
-
def dry_push_args
|
|
9
|
-
%w[push --dry-run] + [remote_name] + pushs
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def dry_push_result
|
|
13
|
-
return ::Avm::Result.error('Nothing to push') if pushs.empty?
|
|
14
|
-
|
|
15
|
-
r = @git.execute(dry_push_args)
|
|
16
|
-
message = if r.fetch(:exit_code).zero?
|
|
17
|
-
'ok'
|
|
18
|
-
else
|
|
19
|
-
r.fetch(:stderr) + "\n#{::Shellwords.join(dry_push_args)}"
|
|
20
|
-
end
|
|
21
|
-
::Avm::Result.success_or_error(r.fetch(:exit_code).zero?, message)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def push
|
|
25
|
-
if pushs.empty?
|
|
26
|
-
info 'PUSH: Nada a enviar'
|
|
27
|
-
else
|
|
28
|
-
info "PUSH: enviando \"#{pushs}\"..."
|
|
29
|
-
git(%w[push origin] + pushs)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def pushs_uncached
|
|
34
|
-
[master_push, remove_branch_push, tag_push].reject(&:nil?)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def master_push
|
|
38
|
-
remote_master_hash != branch_hash ? "#{branch_hash}:refs/heads/master" : nil
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def remove_branch_push
|
|
42
|
-
remote_branch_hash ? ":refs/heads/#{branch}" : nil
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def tag_push
|
|
46
|
-
return nil unless !remote_tag_hash || remote_tag_hash != branch_hash
|
|
47
|
-
|
|
48
|
-
"#{branch_hash}:#{tag}"
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Avm
|
|
4
|
-
module Git
|
|
5
|
-
module Issue
|
|
6
|
-
class Complete
|
|
7
|
-
module Remote
|
|
8
|
-
def remote_master_hash
|
|
9
|
-
remote_hashs['refs/heads/master']
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def remote_branch_hash
|
|
13
|
-
remote_hashs["refs/heads/#{branch}"]
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def remote_tag_hash
|
|
17
|
-
remote_hashs[tag]
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
private
|
|
21
|
-
|
|
22
|
-
def remote_name
|
|
23
|
-
'origin'
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def remote_hashs_uncached
|
|
27
|
-
@git.remote_hashs(remote_name)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'avm/apps/sources/configuration'
|
|
4
|
-
require 'avm/result'
|
|
5
|
-
require 'eac_ruby_utils/fs/temp'
|
|
6
|
-
|
|
7
|
-
module Avm
|
|
8
|
-
module Git
|
|
9
|
-
module Issue
|
|
10
|
-
class Complete
|
|
11
|
-
module Test
|
|
12
|
-
def test_result
|
|
13
|
-
test_command = configuration.if_present(&:any_test_command)
|
|
14
|
-
return ::Avm::Result.success('unconfigured') if test_command.blank?
|
|
15
|
-
|
|
16
|
-
infom "Running test command \"#{test_command}\"..."
|
|
17
|
-
result = test_command.execute
|
|
18
|
-
test_result_log(result)
|
|
19
|
-
if result.fetch(:exit_code).zero?
|
|
20
|
-
::Avm::Result.success('yes')
|
|
21
|
-
else
|
|
22
|
-
::Avm::Result.error('no')
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
def test_result_log(result)
|
|
29
|
-
stdout_file = ::EacRubyUtils::Fs::Temp.file
|
|
30
|
-
stderr_file = ::EacRubyUtils::Fs::Temp.file
|
|
31
|
-
stdout_file.write(result.fetch(:stdout))
|
|
32
|
-
stderr_file.write(result.fetch(:stderr))
|
|
33
|
-
infov ' * Exit code', result.fetch(:exit_code)
|
|
34
|
-
infov ' * STDOUT', stdout_file.to_path
|
|
35
|
-
infov ' * STDERR', stderr_file.to_path
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def configuration_uncached
|
|
39
|
-
::Avm::Apps::Sources::Configuration.find_by_path(@git)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'clipboard'
|
|
4
|
-
|
|
5
|
-
module Avm
|
|
6
|
-
module Git
|
|
7
|
-
module Issue
|
|
8
|
-
class Complete
|
|
9
|
-
module Tracker
|
|
10
|
-
def clipboard_copy_tracker_message
|
|
11
|
-
::Clipboard.copy(textile_tracker_message)
|
|
12
|
-
infov 'Copied to clipboard', textile_tracker_message
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
private
|
|
16
|
-
|
|
17
|
-
def textile_tracker_message_uncached
|
|
18
|
-
"Revisado para commit:#{branch_short_hash}, ok."
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def branch_short_hash
|
|
22
|
-
git(['log', '--pretty=format:%h', '-1', '-q', branch_hash])
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'avm/result'
|
|
4
|
-
require 'eac_ruby_utils/core_ext'
|
|
5
|
-
|
|
6
|
-
module Avm
|
|
7
|
-
module Git
|
|
8
|
-
module Issue
|
|
9
|
-
class Complete
|
|
10
|
-
class Validation
|
|
11
|
-
enable_simple_cache
|
|
12
|
-
common_constructor :parent, :key, :label
|
|
13
|
-
|
|
14
|
-
def skip?
|
|
15
|
-
parent.skip_validations.include?(key)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
private
|
|
19
|
-
|
|
20
|
-
def result_uncached
|
|
21
|
-
if skip?
|
|
22
|
-
::Avm::Result.neutral('skipped')
|
|
23
|
-
else
|
|
24
|
-
parent.send("#{key}_result")
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'avm/git/issue/complete/validation'
|
|
4
|
-
require 'avm/result'
|
|
5
|
-
require 'ostruct'
|
|
6
|
-
|
|
7
|
-
module Avm
|
|
8
|
-
module Git
|
|
9
|
-
module Issue
|
|
10
|
-
class Complete
|
|
11
|
-
module Validations
|
|
12
|
-
VALIDATIONS = {
|
|
13
|
-
clean_workspace: 'Clean workspace?',
|
|
14
|
-
branch_name: 'Branch name',
|
|
15
|
-
branch_hash: 'Branch hash',
|
|
16
|
-
follow_master: 'Follow master?',
|
|
17
|
-
commits: 'Commits?',
|
|
18
|
-
bifurcations: 'Bifurcations?',
|
|
19
|
-
dry_push: 'Dry push?',
|
|
20
|
-
git_subrepos: 'Git subrepos ok?',
|
|
21
|
-
test: 'Test ok?'
|
|
22
|
-
}.with_indifferent_access.freeze
|
|
23
|
-
|
|
24
|
-
def valid?
|
|
25
|
-
validations.map(&:result).none?(&:error?)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def validations_banner
|
|
29
|
-
validations.each do |v|
|
|
30
|
-
infov "[#{v.key}] #{v.label}", v.result.label
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def validate_skip_validations
|
|
35
|
-
skip_validations.each do |validation|
|
|
36
|
-
next if VALIDATIONS.keys.include?(validation)
|
|
37
|
-
|
|
38
|
-
raise "\"#{validation}\" is not a registered validation"
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
private
|
|
43
|
-
|
|
44
|
-
def validations_uncached
|
|
45
|
-
VALIDATIONS.map do |key, label|
|
|
46
|
-
::Avm::Git::Issue::Complete::Validation.new(self, key, label)
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Avm
|
|
4
|
-
module Git
|
|
5
|
-
module Issue
|
|
6
|
-
class Complete
|
|
7
|
-
module WorkingTree
|
|
8
|
-
def clean_workspace_result
|
|
9
|
-
::Avm::Result.success_or_error(clean_workspace?, 'yes', 'no')
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def clean_workspace?
|
|
13
|
-
@git.dirty_files.none?
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'avm/tools/core_ext'
|
|
4
|
-
|
|
5
|
-
module Avm
|
|
6
|
-
module Git
|
|
7
|
-
module Issue
|
|
8
|
-
class Complete
|
|
9
|
-
require_sub __FILE__, include_modules: true
|
|
10
|
-
enable_simple_cache
|
|
11
|
-
enable_speaker
|
|
12
|
-
|
|
13
|
-
attr_reader :skip_validations
|
|
14
|
-
|
|
15
|
-
def initialize(options)
|
|
16
|
-
consumer = ::EacRubyUtils::OptionsConsumer.new(options)
|
|
17
|
-
dir, @skip_validations = consumer.consume_all(:dir, :skip_validations)
|
|
18
|
-
validate_skip_validations
|
|
19
|
-
consumer.validate
|
|
20
|
-
@git = ::Avm::Launcher::Git::Base.new(dir)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def start_banner
|
|
24
|
-
validations_banner
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def run
|
|
28
|
-
return false unless valid?
|
|
29
|
-
|
|
30
|
-
assert_tag
|
|
31
|
-
push
|
|
32
|
-
remove_local_branch
|
|
33
|
-
clipboard_copy_tracker_message
|
|
34
|
-
true
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def issue_id
|
|
38
|
-
m = branch_name.match(/\A#{Regexp.quote('issue_')}(\d+)\z/)
|
|
39
|
-
m ? m[1].to_i : nil
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
private
|
|
43
|
-
|
|
44
|
-
def git(args, exit_outputs = {})
|
|
45
|
-
r = @git.execute!(args, exit_outputs: exit_outputs)
|
|
46
|
-
r.is_a?(String) ? r.strip : r
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'avm/tools/core_ext'
|
|
4
|
-
require 'clipboard'
|
|
5
|
-
|
|
6
|
-
module Avm
|
|
7
|
-
module Git
|
|
8
|
-
module Issue
|
|
9
|
-
class Deliver
|
|
10
|
-
enable_simple_cache
|
|
11
|
-
enable_speaker
|
|
12
|
-
|
|
13
|
-
common_constructor :git_repo
|
|
14
|
-
|
|
15
|
-
def run
|
|
16
|
-
push
|
|
17
|
-
clipboard_copy_tracker_message
|
|
18
|
-
true
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def start_banner
|
|
22
|
-
infov 'Branch name', branch_name
|
|
23
|
-
infov 'Commit ID', branch_commit_id
|
|
24
|
-
infov 'Push arguments', ::Shellwords.join(push_args)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
private
|
|
28
|
-
|
|
29
|
-
def branch_commit_id
|
|
30
|
-
git_repo.rev_parse(branch_name)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def branch_name_uncached
|
|
34
|
-
git_repo.command('rev-parse', '--abbrev-ref', 'HEAD').execute!.strip
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def clipboard_copy_tracker_message
|
|
38
|
-
::Clipboard.copy(textile_tracker_message)
|
|
39
|
-
infov 'Copied to clipboard', textile_tracker_message
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def push
|
|
43
|
-
git_repo.command(*push_args).system!
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def push_args
|
|
47
|
-
%w[push origin --force] + ["#{branch_name}:refs/heads/#{branch_name}"]
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def textile_tracker_message
|
|
51
|
-
"#{branch_name}: commit:#{branch_commit_id}."
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
|
4
|
-
|
|
5
|
-
module Avm
|
|
6
|
-
module Git
|
|
7
|
-
module Organize
|
|
8
|
-
class ReferenceUpdate
|
|
9
|
-
enable_listable
|
|
10
|
-
lists.add_symbol :operation, :remove
|
|
11
|
-
|
|
12
|
-
common_constructor :repository, :reference, :operation
|
|
13
|
-
|
|
14
|
-
def run_operation
|
|
15
|
-
send("run_operation_#{operation}")
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def to_s
|
|
19
|
-
"#{reference} [#{operation}]"
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
private
|
|
23
|
-
|
|
24
|
-
def reference_pathname
|
|
25
|
-
repository.refs_root.join(reference)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def run_operation_remove
|
|
29
|
-
reference_pathname.unlink
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|