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
data/lib/avm/files/rotate.rb
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'active_support/core_ext/object/blank'
|
|
4
|
-
require 'eac_ruby_utils/simple_cache'
|
|
5
|
-
|
|
6
|
-
module Avm
|
|
7
|
-
module Files
|
|
8
|
-
class Rotate
|
|
9
|
-
include ::EacRubyUtils::SimpleCache
|
|
10
|
-
|
|
11
|
-
attr_reader :options, :source_path
|
|
12
|
-
|
|
13
|
-
def initialize(source_path, options = {})
|
|
14
|
-
@source_path = source_path
|
|
15
|
-
@options = options
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def run
|
|
19
|
-
validate_msg = validate
|
|
20
|
-
return validate_msg if validate_msg.present?
|
|
21
|
-
|
|
22
|
-
::FileUtils.mv(source_path, target_path)
|
|
23
|
-
check_space_limit
|
|
24
|
-
nil
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def space_limit
|
|
28
|
-
r = options[:space_limit].try(:to_i)
|
|
29
|
-
return r if r.present? && r.positive?
|
|
30
|
-
|
|
31
|
-
r
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def space_used
|
|
35
|
-
rotated_files.inject(0) { |a, e| a + ::File.size(e) }
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def rotated_files
|
|
39
|
-
::Dir["#{dirname}/#{source_basename_without_extension}*#{source_extension}"]
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def oldest_rotated_file
|
|
43
|
-
rotated_files.min_by { |file| [::File.mtime(file)] }
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
private
|
|
47
|
-
|
|
48
|
-
def check_space_limit
|
|
49
|
-
return unless space_limit
|
|
50
|
-
|
|
51
|
-
while space_used > space_limit
|
|
52
|
-
file = oldest_rotated_file
|
|
53
|
-
unless file
|
|
54
|
-
raise 'oldest_rotated_file returned nil ' \
|
|
55
|
-
"(Limit: #{space_limit}, used: #{space_used})"
|
|
56
|
-
end
|
|
57
|
-
::File.delete(file)
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
def validate
|
|
62
|
-
return "Source file \"#{source_path}\" does not exist" unless ::File.exist?(source_path)
|
|
63
|
-
return "File \"#{source_path}\" is already rotated" if source_rotated?
|
|
64
|
-
|
|
65
|
-
nil
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def source_rotated?
|
|
69
|
-
source_basename_without_extension.match(/[PN]\d{4}\z/)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def source_extension_uncached
|
|
73
|
-
file_extension(::File.basename(source_path))
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def source_basename_without_extension
|
|
77
|
-
::File.basename(source_path, source_extension)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def target_path_uncached
|
|
81
|
-
::File.join(dirname, target_basename)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def dirname
|
|
85
|
-
::File.dirname(source_path)
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def target_basename
|
|
89
|
-
source_basename_without_extension + target_suffix + source_extension
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def target_suffix
|
|
93
|
-
return '_UNKNOWN_MTIME' unless ::File.exist?(source_path)
|
|
94
|
-
|
|
95
|
-
t = ::File.mtime(source_path)
|
|
96
|
-
t.strftime('_%Y-%m-%d_%H-%M-%S_') + t.strftime('%z').gsub(/\A\+/, 'P').gsub(/\A\-/, 'N')
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
def file_extension(basename)
|
|
100
|
-
extension = ::File.extname(basename)
|
|
101
|
-
return '' if extension.blank?
|
|
102
|
-
|
|
103
|
-
file_extension(::File.basename(basename, extension)) + extension
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
data/lib/avm/files.rb
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
|
4
|
-
|
|
5
|
-
module Avm
|
|
6
|
-
module Git
|
|
7
|
-
module AutoCommit
|
|
8
|
-
class CommitInfo
|
|
9
|
-
enable_immutable
|
|
10
|
-
|
|
11
|
-
immutable_accessor :fixup, :message
|
|
12
|
-
|
|
13
|
-
def git_commit_args
|
|
14
|
-
r = fixup.if_present([]) { |v| ['--fixup', v.sha1] }
|
|
15
|
-
r += message.if_present([]) { |v| ['--message', v] }
|
|
16
|
-
return r if r.any?
|
|
17
|
-
|
|
18
|
-
raise 'Argument list is empty'
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
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
|
|
@@ -1,19 +0,0 @@
|
|
|
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
|
|
@@ -1,45 +0,0 @@
|
|
|
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_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
|
-
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
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'avm/git/auto_commit/rules/base'
|
|
4
|
-
require 'avm/git/auto_commit_path'
|
|
5
|
-
|
|
6
|
-
module Avm
|
|
7
|
-
module Git
|
|
8
|
-
module AutoCommit
|
|
9
|
-
module Rules
|
|
10
|
-
class New < ::Avm::Git::AutoCommit::Rules::Base
|
|
11
|
-
class WithFile < ::Avm::Git::AutoCommit::Rules::Base::WithFile
|
|
12
|
-
def auto_commit_path
|
|
13
|
-
::Avm::Git::AutoCommitPath.new(file.git, file.path)
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def commit_info
|
|
17
|
-
new_commit_info.message(auto_commit_path.commit_message)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
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
|
-
SHORT_KEY = 't'
|
|
11
|
-
|
|
12
|
-
class << self
|
|
13
|
-
def short_key
|
|
14
|
-
SHORT_KEY
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
common_constructor :number do
|
|
19
|
-
self.number = number.to_i
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
class WithFile < ::Avm::Git::AutoCommit::Rules::Base::WithFile
|
|
23
|
-
def commit_info
|
|
24
|
-
file.commits(number - 1).if_present { |v| new_commit_info.fixup(v) }
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
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,31 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
|
4
|
-
|
|
5
|
-
::EacRubyUtils.require_sub __FILE__
|
|
6
|
-
|
|
7
|
-
module Avm
|
|
8
|
-
module Git
|
|
9
|
-
module AutoCommit
|
|
10
|
-
module Rules
|
|
11
|
-
RULES_CLASSES = %w[last manual new nth unique]
|
|
12
|
-
.map { |key| ::Avm::Git::AutoCommit::Rules.const_get(key.camelcase) }
|
|
13
|
-
|
|
14
|
-
class << self
|
|
15
|
-
def parse(string)
|
|
16
|
-
parts = string.split(':')
|
|
17
|
-
|
|
18
|
-
klass = rule_class_by_key(parts.shift)
|
|
19
|
-
klass.new(*parts)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def rule_class_by_key(key)
|
|
23
|
-
RULES_CLASSES.find { |klass| klass.keys.include?(key) } ||
|
|
24
|
-
raise("Rule not find with key \"#{key}\" (Available: " +
|
|
25
|
-
RULES_CLASSES.flat_map(&:keys).join(', ') + ')')
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
|
4
|
-
|
|
5
|
-
module Avm
|
|
6
|
-
module Git
|
|
7
|
-
class AutoCommitPath
|
|
8
|
-
module Ruby
|
|
9
|
-
RUBY_CLASS_NAME_PATTERNS = [%r{lib/((?!.*/lib/).+)\.rb\z}, %r{app/[^/]+/(.+)\.rb\z}].freeze
|
|
10
|
-
|
|
11
|
-
def ruby_class_name
|
|
12
|
-
RUBY_CLASS_NAME_PATTERNS.each do |pattern|
|
|
13
|
-
pattern.if_match(relative_path.to_path, false) { |m| return m[1].camelize }
|
|
14
|
-
end
|
|
15
|
-
nil
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
|
4
|
-
|
|
5
|
-
module Avm
|
|
6
|
-
module Git
|
|
7
|
-
class AutoCommitPath
|
|
8
|
-
require_sub __FILE__, include_modules: true
|
|
9
|
-
common_constructor :git, :path do
|
|
10
|
-
self.path = path.to_pathname
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def class_name
|
|
14
|
-
ruby_class_name || relative_path.to_path
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def commit_message
|
|
18
|
-
r = class_name
|
|
19
|
-
r += ': remove' unless path.file?
|
|
20
|
-
r + '.'
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def relative_path
|
|
24
|
-
path.expand_path.relative_path_from(git.root_path.expand_path)
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
|
4
|
-
|
|
5
|
-
module Avm
|
|
6
|
-
module Git
|
|
7
|
-
class Commit
|
|
8
|
-
module ClassMethods
|
|
9
|
-
common_concern
|
|
10
|
-
|
|
11
|
-
module ClassMethods
|
|
12
|
-
def target_url_to_env_path(target_url)
|
|
13
|
-
uri = ::Addressable::URI.parse(target_url)
|
|
14
|
-
uri.scheme = 'file' if uri.scheme.blank?
|
|
15
|
-
[uri_to_env(uri), uri.path]
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
private
|
|
19
|
-
|
|
20
|
-
def uri_to_env(uri)
|
|
21
|
-
case uri.scheme
|
|
22
|
-
when 'file' then ::EacRubyUtils::Envs.local
|
|
23
|
-
when 'ssh' then ::EacRubyUtils::Envs.ssh(uri)
|
|
24
|
-
else "Invalid schema \"#{uri.schema}\" (URI: #{uri})"
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'addressable'
|
|
4
|
-
require 'eac_ruby_utils/core_ext'
|
|
5
|
-
require 'avm/files/appendable'
|
|
6
|
-
require 'avm/files/deploy'
|
|
7
|
-
|
|
8
|
-
module Avm
|
|
9
|
-
module Git
|
|
10
|
-
class Commit
|
|
11
|
-
class Deploy
|
|
12
|
-
include ::Avm::Files::Appendable
|
|
13
|
-
enable_simple_cache
|
|
14
|
-
|
|
15
|
-
attr_reader :build_dir, :commit, :target_env, :target_path
|
|
16
|
-
|
|
17
|
-
def initialize(commit, target_env, target_path)
|
|
18
|
-
@commit = commit
|
|
19
|
-
@target_env = target_env
|
|
20
|
-
@target_path = target_path
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def run
|
|
24
|
-
fd = ::Avm::Files::Deploy.new(target_env, target_path)
|
|
25
|
-
fd.append_tar_output_command(git_archive_command)
|
|
26
|
-
fd.appended.push(*appended)
|
|
27
|
-
fd.run
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
|
|
32
|
-
def git_archive_command
|
|
33
|
-
commit.git.command('archive', '--format=tar', commit.sha1)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
|
4
|
-
|
|
5
|
-
module Avm
|
|
6
|
-
module Git
|
|
7
|
-
class Commit
|
|
8
|
-
module DeployMethods
|
|
9
|
-
def deploy_to_env_path(target_env, target_path)
|
|
10
|
-
Deploy.new(self, target_env, target_path)
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def deploy_to_url(target_url)
|
|
14
|
-
Deploy.new(self, *self.class.target_url_to_env_path(target_url))
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Avm
|
|
4
|
-
module Git
|
|
5
|
-
class Commit
|
|
6
|
-
class DiffTreeLine
|
|
7
|
-
DIFF_TREE_PATTERN = /\A:(\d{6}) (\d{6}) (\S+) (\S+) (\S+)\t(\S.*)\z/.freeze
|
|
8
|
-
FIELDS = %w[src_mode dst_mode src_sha1 dst_sha1 status path].freeze
|
|
9
|
-
GIT_COMMAND_ARGS = %w[-c core.quotepath=off diff-tree --no-commit-id -r --full-index].freeze
|
|
10
|
-
|
|
11
|
-
attr_reader(*FIELDS)
|
|
12
|
-
|
|
13
|
-
# line: a line of command "git [GIT_COMMAND_ARGS]"'s output.
|
|
14
|
-
# Reference: https://git-scm.com/docs/git-diff-tree
|
|
15
|
-
def initialize(line)
|
|
16
|
-
m = DIFF_TREE_PATTERN.match(line.strip)
|
|
17
|
-
raise "\"#{line}\" did not match pattern" unless m
|
|
18
|
-
|
|
19
|
-
FIELDS.count.times { |i| send("#{FIELDS[i]}=", m[i + 1]) }
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def fields
|
|
23
|
-
FIELDS.map { |field| [field, send(field)] }.to_h
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
attr_writer(*FIELDS)
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
data/lib/avm/git/commit/file.rb
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'active_support/core_ext/module/delegation'
|
|
4
|
-
require 'eac_ruby_utils/simple_cache'
|
|
5
|
-
require 'avm/git/commit/diff_tree_line'
|
|
6
|
-
|
|
7
|
-
module Avm
|
|
8
|
-
module Git
|
|
9
|
-
class Commit
|
|
10
|
-
class File
|
|
11
|
-
include ::EacRubyUtils::SimpleCache
|
|
12
|
-
|
|
13
|
-
attr_reader :git, :diff_tree
|
|
14
|
-
|
|
15
|
-
# git: [EacGit::Local]
|
|
16
|
-
# diff_tree_tree: a line of command "git diff-tree --no-commit-id -r --full-index"'s output
|
|
17
|
-
def initialize(git, diff_tree_line)
|
|
18
|
-
@git = git
|
|
19
|
-
@diff_tree = ::Avm::Git::Commit::DiffTreeLine.new(diff_tree_line)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
delegate(*::Avm::Git::Commit::DiffTreeLine::FIELDS, to: :diff_tree)
|
|
23
|
-
|
|
24
|
-
def to_s
|
|
25
|
-
"#{path}|#{status}"
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def src_size_uncached
|
|
29
|
-
size(src_sha1)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def dst_size_uncached
|
|
33
|
-
size(dst_sha1)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
private
|
|
37
|
-
|
|
38
|
-
def size(sha1)
|
|
39
|
-
return 0 if /\A0+\z/.match(sha1)
|
|
40
|
-
|
|
41
|
-
git.command('cat-file', '-s', sha1).execute!.strip.to_i
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
data/lib/avm/git/commit.rb
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
|
4
|
-
|
|
5
|
-
module Avm
|
|
6
|
-
module Git
|
|
7
|
-
class Commit
|
|
8
|
-
require_sub __FILE__, include_modules: true
|
|
9
|
-
enable_simple_cache
|
|
10
|
-
|
|
11
|
-
FIELDS = {
|
|
12
|
-
author_name: '%an', author_email: '%ae', author_date: '%ai',
|
|
13
|
-
subject: '%s',
|
|
14
|
-
author_all: '%an <%ae>, %ai',
|
|
15
|
-
commiter_name: '%cn', commiter_email: '%ce', commiter_date: '%ci',
|
|
16
|
-
commiter_all: '%cn <%ce>, %ci'
|
|
17
|
-
}.freeze
|
|
18
|
-
|
|
19
|
-
attr_reader :git, :sha1
|
|
20
|
-
|
|
21
|
-
# @param git [EacGit::Local]
|
|
22
|
-
def initialize(git, sha1)
|
|
23
|
-
@git = git
|
|
24
|
-
@sha1 = sha1
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def format(format)
|
|
28
|
-
git.command('--no-pager', 'log', '-1', "--pretty=format:#{format}", sha1).execute!.strip
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
FIELDS.each do |field, format|
|
|
32
|
-
define_method field do
|
|
33
|
-
format(format)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def files_uncached
|
|
38
|
-
diff_tree_execute.each_line.map { |line| ::Avm::Git::Commit::File.new(git, line) }
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def files_size_uncached
|
|
42
|
-
files.inject(0) { |a, e| a + e.dst_size }
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def root_child?
|
|
46
|
-
format('%P').blank?
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
private
|
|
50
|
-
|
|
51
|
-
def diff_tree_execute
|
|
52
|
-
args = []
|
|
53
|
-
args << '--root' if root_child?
|
|
54
|
-
args << sha1
|
|
55
|
-
git.command(*::Avm::Git::Commit::DiffTreeLine::GIT_COMMAND_ARGS, *args).execute!
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|