avm-tools 0.99.1 → 0.102.2
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/app_src.rb +8 -7
- data/lib/avm/docker/image.rb +7 -23
- data/lib/avm/docker/registry.rb +2 -11
- data/lib/avm/docker/runner.rb +32 -6
- data/lib/avm/eac_rails_base1/runner/bundle.rb +1 -2
- data/lib/avm/eac_redmine_base0/docker_image.rb +52 -0
- data/lib/avm/eac_redmine_base0/instance.rb +2 -2
- data/lib/avm/git/auto_commit/rules/manual.rb +1 -1
- data/lib/avm/git/issue/complete.rb +4 -8
- data/lib/avm/git/issue/complete/commits.rb +42 -0
- data/lib/avm/git/issue/complete/git_subrepos.rb +23 -0
- data/lib/avm/git/issue/complete/local_branch.rb +54 -0
- data/lib/avm/git/issue/complete/local_tag.rb +39 -0
- data/lib/avm/git/issue/complete/push.rb +54 -0
- data/lib/avm/git/issue/complete/remote.rb +33 -0
- data/lib/avm/git/issue/complete/test.rb +45 -0
- data/lib/avm/git/issue/complete/tracker.rb +28 -0
- data/lib/avm/git/issue/complete/validations.rb +53 -0
- data/lib/avm/git/issue/complete/working_tree.rb +19 -0
- data/lib/avm/git/revision_test.rb +9 -6
- data/lib/avm/instances/base/dockerizable.rb +1 -0
- data/lib/avm/instances/base/entry_keys.rb +6 -1
- data/lib/avm/instances/docker_image.rb +15 -0
- data/lib/avm/instances/entries.rb +0 -1
- data/lib/avm/instances/entry.rb +3 -2
- data/lib/avm/instances/entry_keys.rb +3 -0
- data/lib/avm/launcher/context.rb +1 -1
- data/lib/avm/launcher/git/publish_base.rb +3 -1
- data/lib/avm/launcher/git/warp_base.rb +11 -0
- data/lib/avm/launcher/instances/base.rb +2 -1
- data/lib/avm/launcher/instances/error.rb +1 -3
- data/lib/avm/launcher/ruby/gem/build.rb +1 -1
- data/lib/avm/projects/stereotype/job_comparator.rb +32 -0
- data/lib/avm/projects/stereotypes/git/update.rb +1 -2
- data/lib/avm/projects/stereotypes/ruby_gem/publish.rb +1 -1
- data/lib/avm/projects/stereotypes/ruby_gem/update.rb +4 -0
- data/lib/avm/self.rb +9 -0
- data/lib/avm/tools/runner.rb +4 -0
- data/lib/avm/tools/runner/app_src/version_bump.rb +1 -1
- data/lib/avm/tools/runner/config.rb +17 -0
- data/lib/avm/tools/runner/config/load_path.rb +48 -0
- data/lib/avm/tools/runner/eac_redmine_base0/dev_docker.rb +17 -0
- data/lib/avm/tools/runner/eac_redmine_base0/docker.rb +3 -0
- data/lib/avm/tools/runner/git/deploy.rb +2 -1
- data/lib/avm/tools/runner/git/issue.rb +4 -75
- data/lib/avm/tools/runner/git/issue/complete.rb +79 -0
- data/lib/avm/tools/runner/git/issue/deliver.rb +35 -0
- data/lib/avm/tools/runner/git/organize.rb +1 -1
- data/lib/avm/tools/version.rb +1 -1
- data/template/avm/eac_redmine_base0/docker_image/Dockerfile.template +47 -0
- data/template/avm/eac_redmine_base0/docker_image/apache_http_virtualhost.conf.template +10 -0
- data/template/avm/eac_redmine_base0/docker_image/apache_https_virtualhost.conf.template +16 -0
- data/template/avm/eac_redmine_base0/docker_image/install_settings.sh.template +29 -0
- data/template/avm/eac_redmine_base0/docker_image/start.sh.template +25 -0
- data/template/avm/eac_ubuntu_base0/docker_image/Dockerfile +1 -1
- data/vendor/avm-apps/avm-apps.gemspec +1 -1
- data/vendor/avm-apps/lib/avm/apps/config.rb +15 -0
- data/vendor/avm-apps/lib/avm/apps/jobs/base.rb +1 -1
- data/vendor/avm-apps/lib/avm/apps/version.rb +1 -1
- data/vendor/eac_cli/eac_cli.gemspec +1 -1
- data/vendor/eac_cli/lib/eac_cli/config.rb +19 -0
- data/vendor/eac_cli/lib/eac_cli/config/entry.rb +48 -0
- data/vendor/eac_cli/lib/eac_cli/config/entry/options.rb +57 -0
- data/vendor/eac_cli/lib/eac_cli/config/entry/undefined.rb +26 -0
- data/vendor/eac_cli/lib/eac_cli/definition/positional_argument.rb +6 -1
- data/vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb +3 -1
- data/vendor/eac_cli/lib/eac_cli/docopt_runner.rb +4 -8
- data/vendor/eac_cli/lib/eac_cli/docopt_runner/{_class_methods.rb → class_methods.rb} +5 -3
- data/vendor/eac_cli/lib/eac_cli/docopt_runner/context.rb +18 -0
- data/vendor/eac_cli/lib/eac_cli/old_configs.rb +0 -1
- data/vendor/eac_cli/lib/eac_cli/old_configs/entry_reader.rb +2 -2
- data/vendor/eac_cli/lib/eac_cli/old_configs_bridge.rb +37 -0
- data/vendor/eac_cli/lib/eac_cli/runner/after_class_methods.rb +20 -3
- data/vendor/eac_cli/lib/eac_cli/runner_with/help.rb +6 -2
- data/vendor/eac_cli/lib/eac_cli/runner_with/subcommands.rb +5 -1
- data/vendor/eac_cli/lib/eac_cli/speaker.rb +15 -19
- data/vendor/eac_cli/lib/eac_cli/speaker/_constants.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/speaker/list.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/speaker/options.rb +38 -0
- data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
- data/vendor/eac_cli/spec/lib/eac_cli/speaker_spec.rb +5 -9
- data/vendor/eac_config/lib/eac_config/entry.rb +7 -1
- data/vendor/eac_config/lib/eac_config/envvars_node.rb +25 -0
- data/vendor/eac_config/lib/eac_config/envvars_node/entry.rb +54 -0
- data/vendor/eac_config/lib/eac_config/load_path.rb +5 -13
- data/vendor/eac_config/lib/eac_config/node.rb +9 -2
- data/vendor/eac_config/lib/eac_config/node_entry.rb +2 -23
- data/vendor/eac_config/lib/eac_config/node_uri.rb +38 -0
- data/vendor/eac_config/lib/eac_config/old_configs.rb +1 -0
- data/vendor/eac_config/lib/eac_config/version.rb +1 -1
- data/vendor/eac_config/lib/eac_config/yaml_file_node.rb +9 -2
- data/vendor/eac_config/lib/eac_config/yaml_file_node/entry.rb +37 -0
- data/vendor/eac_config/spec/lib/eac_config/envvars_node/entry_spec.rb +14 -0
- data/vendor/eac_config/spec/lib/eac_config/envvars_node_spec.rb +40 -0
- data/vendor/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1.yaml +3 -1
- data/vendor/eac_config/spec/lib/eac_config/yaml_file_node_spec_files/storage1_2.yaml +2 -1
- data/vendor/eac_git/lib/eac_git/executables.rb +4 -0
- data/vendor/eac_git/lib/eac_git/local.rb +5 -1
- data/vendor/eac_git/lib/eac_git/local/commit/archive.rb +19 -0
- data/vendor/eac_git/lib/eac_git/local/subrepo.rb +2 -1
- data/vendor/eac_git/lib/eac_git/version.rb +1 -1
- data/vendor/eac_ruby_base0/eac_ruby_base0.gemspec +2 -2
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/application.rb +8 -11
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb +32 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/jobs_runner.rb +2 -2
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +13 -6
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/confirmation.rb +8 -1
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
- data/vendor/eac_ruby_gems_utils/eac_ruby_gems_utils.gemspec +1 -1
- data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple/decorated_gem.rb +2 -0
- data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/version.rb +1 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/context.rb +31 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/contextualizable.rb +12 -7
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/context.rb +11 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/speaker.rb +9 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/simple_cache.rb +10 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/speaker.rb +16 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/speaker/receiver.rb +57 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/speaker/sender.rb +32 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- data/vendor/{eac_cli/spec/lib → eac_ruby_utils/spec/lib/eac_ruby_utils/patches}/module/speaker_spec.rb +2 -2
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/simple_cache_spec.rb +18 -0
- metadata +49 -19
- data/lib/avm/configs.rb +0 -22
- data/lib/avm/git/issue/complete/_commits.rb +0 -40
- data/lib/avm/git/issue/complete/_git_subrepos.rb +0 -21
- data/lib/avm/git/issue/complete/_local_branch.rb +0 -52
- data/lib/avm/git/issue/complete/_local_tag.rb +0 -37
- data/lib/avm/git/issue/complete/_push.rb +0 -52
- data/lib/avm/git/issue/complete/_remote.rb +0 -31
- data/lib/avm/git/issue/complete/_test.rb +0 -43
- data/lib/avm/git/issue/complete/_tracker.rb +0 -26
- data/lib/avm/git/issue/complete/_validations.rb +0 -51
- data/lib/avm/git/issue/complete/_working_tree.rb +0 -17
- data/vendor/eac_cli/lib/eac_cli/patches/module.rb +0 -4
- data/vendor/eac_cli/lib/eac_cli/patches/module/speaker.rb +0 -10
- data/vendor/eac_cli/lib/eac_cli/speaker/_class_methods.rb +0 -37
- data/vendor/eac_cli/lib/eac_cli/speaker/node.rb +0 -24
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c1dc265a8c8828a917414ea4baac9765139517521d1d137df7893cf71c1c3b89
|
|
4
|
+
data.tar.gz: 46ec3d56d9ad2420929c24aba726b1a2e476bae418e90a793b106f95740ce5e1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b2bde9ec40565deaf93c371d8c1df4443ff2ba084d4ab295493a585c4ed82d1f070625747a0ab7ac5fbed0424d1c4d7f2345beae7a03a6ef0efef13a4363e95a
|
|
7
|
+
data.tar.gz: ebf68de65906d8c17c31f4d49cbc3011afc0e793e25b70f01a25291d0c897526f4ef54beef345ffb9f7e08a49ba0b98e44b825e5feab19803c747d09917eae4c
|
data/lib/avm/app_src.rb
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require 'avm/apps/sources/configuration'
|
|
4
4
|
require 'avm/launcher/paths/real'
|
|
5
|
+
require 'avm/projects/stereotype/job_comparator'
|
|
5
6
|
require 'eac_ruby_utils/core_ext'
|
|
6
7
|
require 'avm/projects/stereotypes'
|
|
7
8
|
require 'i18n'
|
|
@@ -27,7 +28,7 @@ module Avm
|
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
def run_job(job, job_args = [])
|
|
30
|
-
|
|
31
|
+
stereotypes_jobs(job, job_args).each(&:run)
|
|
31
32
|
end
|
|
32
33
|
|
|
33
34
|
private
|
|
@@ -37,14 +38,14 @@ module Avm
|
|
|
37
38
|
::Avm::Apps::Sources::Configuration.find_in_path(path)
|
|
38
39
|
end
|
|
39
40
|
|
|
40
|
-
def
|
|
41
|
+
def stereotypes_jobs(job, job_args)
|
|
41
42
|
job_class_method = "#{job}_class"
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
stereotype.send(job_class_method).new(self, *job_args)
|
|
45
|
-
|
|
46
|
-
puts stereotype.label + ": #{job} class not found"
|
|
43
|
+
r = []
|
|
44
|
+
stereotypes.each do |stereotype|
|
|
45
|
+
r << stereotype.send(job_class_method).new(self, *job_args) if
|
|
46
|
+
stereotype.send(job_class_method).present?
|
|
47
47
|
end
|
|
48
|
+
r.sort { |a, b| ::Avm::Projects::Stereotype::JobComparator.new(a, b).result }
|
|
48
49
|
end
|
|
49
50
|
|
|
50
51
|
def stereotypes_uncached
|
data/lib/avm/docker/image.rb
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
require 'eac_ruby_utils/core_ext'
|
|
4
4
|
require 'avm/executables'
|
|
5
5
|
require 'avm/patches/object/template'
|
|
6
|
+
require 'eac_docker/images/templatized'
|
|
6
7
|
|
|
7
8
|
module Avm
|
|
8
9
|
module Docker
|
|
9
|
-
class Image
|
|
10
|
+
class Image < ::EacDocker::Images::Templatized
|
|
10
11
|
attr_reader :registry
|
|
11
12
|
attr_accessor :snapshot
|
|
12
13
|
attr_accessor :version
|
|
@@ -18,10 +19,9 @@ module Avm
|
|
|
18
19
|
end
|
|
19
20
|
|
|
20
21
|
def build(extra_args = [])
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
end
|
|
22
|
+
nyi "Extra args: #{extra_args}" if extra_args.any?
|
|
23
|
+
|
|
24
|
+
provide
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def generator_version
|
|
@@ -32,9 +32,10 @@ module Avm
|
|
|
32
32
|
::Avm::Executables.docker.command.append(['push', tag]).system!
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
def read_entry(path,
|
|
35
|
+
def read_entry(path, options = {})
|
|
36
36
|
method = path.gsub('.', '_')
|
|
37
37
|
return send(method) if respond_to?(path, true)
|
|
38
|
+
return instance.read_entry(path, options) if respond_to?(:instance)
|
|
38
39
|
|
|
39
40
|
raise "Method \"#{method}\" not found for entry \"#{path}\""
|
|
40
41
|
end
|
|
@@ -66,23 +67,6 @@ module Avm
|
|
|
66
67
|
r += '-snapshot' if snapshot
|
|
67
68
|
r
|
|
68
69
|
end
|
|
69
|
-
|
|
70
|
-
private
|
|
71
|
-
|
|
72
|
-
attr_reader :build_dir
|
|
73
|
-
|
|
74
|
-
def run_docker_build(extra_args)
|
|
75
|
-
::Avm::Executables.docker.command.append(
|
|
76
|
-
['build', '-t', tag] + extra_args + [build_dir]
|
|
77
|
-
).system!
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def on_build_dir
|
|
81
|
-
@build_dir = ::Dir.mktmpdir
|
|
82
|
-
yield
|
|
83
|
-
ensure
|
|
84
|
-
::FileUtils.rm_rf(@build_dir)
|
|
85
|
-
end
|
|
86
70
|
end
|
|
87
71
|
end
|
|
88
72
|
end
|
data/lib/avm/docker/registry.rb
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'avm/self/instance'
|
|
4
|
+
require 'eac_docker/registry'
|
|
4
5
|
require 'eac_ruby_utils/core_ext'
|
|
5
6
|
|
|
6
7
|
module Avm
|
|
7
8
|
module Docker
|
|
8
|
-
class Registry
|
|
9
|
+
class Registry < ::EacDocker::Registry
|
|
9
10
|
class << self
|
|
10
11
|
def default
|
|
11
12
|
@default ||= new(::Avm::Self.instance.read_entry(
|
|
@@ -13,16 +14,6 @@ module Avm
|
|
|
13
14
|
))
|
|
14
15
|
end
|
|
15
16
|
end
|
|
16
|
-
|
|
17
|
-
common_constructor :name
|
|
18
|
-
|
|
19
|
-
def to_s
|
|
20
|
-
name
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def sub(suffix)
|
|
24
|
-
self.class.new("#{name}#{suffix}")
|
|
25
|
-
end
|
|
26
17
|
end
|
|
27
18
|
end
|
|
28
19
|
end
|
data/lib/avm/docker/runner.rb
CHANGED
|
@@ -43,42 +43,68 @@ module Avm
|
|
|
43
43
|
infov 'Registry name', registry
|
|
44
44
|
infov 'Version?', version?
|
|
45
45
|
infov 'Snapshot?', snapshot?
|
|
46
|
-
infov 'Image name',
|
|
46
|
+
infov 'Image name', docker_image.tag
|
|
47
47
|
infov 'Build arguments', build_args
|
|
48
48
|
infov 'Entrypoint arguments', entrypoint_args
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
def build
|
|
52
|
-
|
|
52
|
+
docker_image.build(build_args)
|
|
53
|
+
success 'Docker image builded'
|
|
53
54
|
end
|
|
54
55
|
|
|
55
56
|
def build_args
|
|
56
57
|
parsed.build_arg
|
|
57
58
|
end
|
|
58
59
|
|
|
60
|
+
def docker_container
|
|
61
|
+
instance.docker_container
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def docker_image
|
|
65
|
+
instance.docker_image
|
|
66
|
+
end
|
|
67
|
+
|
|
59
68
|
def entrypoint_args
|
|
60
69
|
parsed.entrypoint_arg
|
|
61
70
|
end
|
|
62
71
|
|
|
63
72
|
def push
|
|
64
|
-
|
|
73
|
+
docker_image.push if parsed.push?
|
|
65
74
|
end
|
|
66
75
|
|
|
67
76
|
def container_run
|
|
68
77
|
return unless parsed.run?
|
|
69
78
|
|
|
70
|
-
|
|
79
|
+
docker_container.run(
|
|
71
80
|
entrypoint_args: entrypoint_args,
|
|
72
81
|
clear: parsed.clear?
|
|
73
82
|
)
|
|
74
83
|
end
|
|
75
84
|
|
|
76
85
|
def registry_uncached
|
|
77
|
-
|
|
78
|
-
|
|
86
|
+
registry_from_option || registry_from_instance || registry_from_default ||
|
|
87
|
+
fatal_error('No registry defined')
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def registry_from_option
|
|
91
|
+
parsed.registry_name.if_present { |v| ::Avm::Docker::Registry.new(v) }
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def registry_from_instance
|
|
95
|
+
if if_respond(:use_default_registry?, true)
|
|
96
|
+
instance.docker_registry_optional.if_present { |v| ::Avm::Docker::Registry.new(v) }
|
|
97
|
+
else
|
|
98
|
+
::Avm::Docker::Registry.new(instance.docker_registry)
|
|
79
99
|
end
|
|
80
100
|
end
|
|
81
101
|
|
|
102
|
+
def registry_from_default
|
|
103
|
+
return nil unless if_respond(:use_default_registry?, true)
|
|
104
|
+
|
|
105
|
+
::Avm::Docker::Registry.default
|
|
106
|
+
end
|
|
107
|
+
|
|
82
108
|
def snapshot?
|
|
83
109
|
!parsed.no_snapshot?
|
|
84
110
|
end
|
|
@@ -8,8 +8,7 @@ module Avm
|
|
|
8
8
|
module EacRailsBase1
|
|
9
9
|
class Runner < ::Avm::EacWebappBase0::Runner
|
|
10
10
|
class Bundle
|
|
11
|
-
runner_with ::Avm::EacRailsBase1::RunnerWith::Bundle
|
|
12
|
-
runner_definition do
|
|
11
|
+
runner_with ::Avm::EacRailsBase1::RunnerWith::Bundle, :help do
|
|
13
12
|
desc 'Runs "bundle ...".'
|
|
14
13
|
pos_arg :'bundle-args', repeat: true, optional: true
|
|
15
14
|
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'avm/core_ext'
|
|
4
|
+
require 'avm/instances/docker_image'
|
|
5
|
+
|
|
6
|
+
module Avm
|
|
7
|
+
module EacRedmineBase0
|
|
8
|
+
class DockerImage < ::Avm::Instances::DockerImage
|
|
9
|
+
enable_simple_cache
|
|
10
|
+
|
|
11
|
+
REDMINE_SOURCE_HOST_SUBPATH = 'redmine_source'
|
|
12
|
+
|
|
13
|
+
def avm_fs_cache_object_id
|
|
14
|
+
instance.id
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def redmine_user
|
|
18
|
+
'redmine'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def redmine_user_home
|
|
22
|
+
"/home/#{redmine_user}"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def redmine_path
|
|
26
|
+
"#{redmine_user_home}/redmine_app"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def start_path
|
|
30
|
+
'/start.sh'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def git_repo_uncached
|
|
36
|
+
::EacGit::Local.new(instance.source_instance.fs_path)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def redmine_source_git_id
|
|
40
|
+
git_repo.rev_parse('HEAD')
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def redmine_source_path_uncached
|
|
44
|
+
r = provide_dir.join(REDMINE_SOURCE_HOST_SUBPATH)
|
|
45
|
+
::FileUtils.rm_rf(r.to_path)
|
|
46
|
+
r.mkpath
|
|
47
|
+
git_repo.commit(redmine_source_git_id).archive_to_dir(r).system!
|
|
48
|
+
REDMINE_SOURCE_HOST_SUBPATH
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'avm/eac_redmine_base0/data_unit'
|
|
4
|
-
require 'avm/
|
|
4
|
+
require 'avm/eac_redmine_base0/docker_image'
|
|
5
5
|
require 'avm/eac_webapp_base0/instance'
|
|
6
6
|
require 'avm/eac_rails_base1/instance'
|
|
7
7
|
|
|
@@ -11,7 +11,7 @@ module Avm
|
|
|
11
11
|
FILES_UNITS = { files: 'files' }.freeze
|
|
12
12
|
|
|
13
13
|
def docker_image_class
|
|
14
|
-
::Avm::
|
|
14
|
+
::Avm::EacRedmineBase0::DockerImage
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def docker_run_arguments
|
|
@@ -17,7 +17,7 @@ module Avm
|
|
|
17
17
|
return nil unless file.commits.any?
|
|
18
18
|
|
|
19
19
|
commits_banner
|
|
20
|
-
|
|
20
|
+
input('Which commit?', list: commits_by_position).if_present do |v|
|
|
21
21
|
new_commit_info.fixup(v)
|
|
22
22
|
end
|
|
23
23
|
end
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'avm/
|
|
4
|
-
require 'eac_cli/speaker'
|
|
5
|
-
require 'eac_ruby_utils/options_consumer'
|
|
6
|
-
require 'eac_ruby_utils/require_sub'
|
|
7
|
-
require 'eac_ruby_utils/simple_cache'
|
|
8
|
-
::EacRubyUtils.require_sub(__FILE__)
|
|
3
|
+
require 'avm/core_ext'
|
|
9
4
|
|
|
10
5
|
module Avm
|
|
11
6
|
module Git
|
|
12
7
|
module Issue
|
|
13
8
|
class Complete
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
require_sub __FILE__, include_modules: true
|
|
10
|
+
enable_simple_cache
|
|
11
|
+
enable_speaker
|
|
16
12
|
|
|
17
13
|
attr_reader :skip_validations
|
|
18
14
|
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|