dapp 0.11.0 → 0.12.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/config/en/net_status.yml +36 -4
- data/lib/dapp.rb +84 -36
- data/lib/dapp/cli.rb +3 -2
- data/lib/dapp/cli/command/base.rb +69 -0
- data/lib/dapp/config/config.rb +17 -0
- data/lib/dapp/config/directive/base.rb +90 -3
- data/lib/dapp/dapp.rb +6 -14
- data/lib/dapp/dapp/dappfile.rb +20 -27
- data/lib/dapp/dapp/deps/base.rb +2 -2
- data/lib/dapp/dapp/lock.rb +1 -1
- data/lib/dapp/dapp/logging/base.rb +11 -7
- data/lib/dapp/dapp/logging/process.rb +4 -2
- data/lib/dapp/dapp/shellout/base.rb +2 -2
- data/lib/dapp/dapp/ssh_agent.rb +2 -2
- data/lib/dapp/deployment.rb +1 -0
- data/lib/dapp/deployment/app.rb +120 -0
- data/lib/dapp/deployment/cli/cli.rb +1 -0
- data/lib/dapp/deployment/cli/command/base.rb +14 -0
- data/lib/dapp/deployment/cli/command/deployment.rb +21 -0
- data/lib/dapp/deployment/cli/command/deployment/apply.rb +26 -0
- data/lib/dapp/deployment/cli/command/deployment/minikube_setup.rb +13 -0
- data/lib/dapp/deployment/cli/command/deployment/mrproper.rb +13 -0
- data/lib/dapp/deployment/cli/command/deployment/secret_generate.rb +13 -0
- data/lib/dapp/deployment/cli/command/deployment/secret_key_generate.rb +13 -0
- data/lib/dapp/deployment/config/config.rb +46 -0
- data/lib/dapp/deployment/config/directive/app.rb +28 -0
- data/lib/dapp/deployment/config/directive/app/instance_methods.rb +51 -0
- data/lib/dapp/deployment/config/directive/base.rb +13 -0
- data/lib/dapp/deployment/config/directive/deployment.rb +11 -0
- data/lib/dapp/deployment/config/directive/expose.rb +68 -0
- data/lib/dapp/deployment/config/directive/group.rb +27 -0
- data/lib/dapp/deployment/config/directive/job.rb +28 -0
- data/lib/dapp/deployment/config/directive/mod/group.rb +22 -0
- data/lib/dapp/deployment/config/directive/mod/jobs.rb +26 -0
- data/lib/dapp/deployment/config/directive/namespace.rb +26 -0
- data/lib/dapp/deployment/config/directive/namespace/instance_methods.rb +37 -0
- data/lib/dapp/deployment/core_ext/hash.rb +19 -0
- data/lib/dapp/deployment/dapp/command/apply.rb +83 -0
- data/lib/dapp/deployment/dapp/command/common.rb +17 -0
- data/lib/dapp/deployment/dapp/command/minikube_setup.rb +393 -0
- data/lib/dapp/deployment/dapp/command/mrproper.rb +12 -0
- data/lib/dapp/deployment/dapp/command/secret_generate.rb +17 -0
- data/lib/dapp/deployment/dapp/command/secret_key_generate.rb +13 -0
- data/lib/dapp/deployment/dapp/dapp.rb +18 -0
- data/lib/dapp/deployment/dapp/dappfile.rb +23 -0
- data/lib/dapp/deployment/deployment.rb +46 -0
- data/lib/dapp/deployment/error/app.rb +7 -0
- data/lib/dapp/deployment/error/base.rb +7 -0
- data/lib/dapp/deployment/error/command.rb +7 -0
- data/lib/dapp/deployment/error/config.rb +7 -0
- data/lib/dapp/deployment/error/deployment.rb +7 -0
- data/lib/dapp/deployment/error/kubernetes.rb +7 -0
- data/lib/dapp/deployment/kube_app.rb +277 -0
- data/lib/dapp/deployment/kube_base.rb +97 -0
- data/lib/dapp/deployment/kube_deployment.rb +51 -0
- data/lib/dapp/deployment/kubernetes.rb +174 -0
- data/lib/dapp/deployment/kubernetes/error.rb +20 -0
- data/lib/dapp/deployment/mod/jobs.rb +37 -0
- data/lib/dapp/deployment/mod/namespace.rb +58 -0
- data/lib/dapp/deployment/mod/system_environments.rb +30 -0
- data/lib/dapp/deployment/secret.rb +93 -0
- data/lib/dapp/dimg/artifact.rb +1 -1
- data/lib/dapp/dimg/build/stage/artifact_default.rb +35 -23
- data/lib/dapp/dimg/build/stage/base.rb +1 -1
- data/lib/dapp/dimg/build/stage/before_setup.rb +0 -2
- data/lib/dapp/dimg/build/stage/build_artifact.rb +0 -2
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +2 -2
- data/lib/dapp/dimg/build/stage/install/install.rb +0 -1
- data/lib/dapp/dimg/build/stage/setup/setup.rb +0 -1
- data/lib/dapp/dimg/cli/cli.rb +1 -1
- data/lib/dapp/dimg/cli/command/base.rb +14 -0
- data/lib/dapp/dimg/cli/{dimg.rb → command/dimg.rb} +5 -7
- data/lib/dapp/dimg/cli/{bp.rb → command/dimg/bp.rb} +3 -3
- data/lib/dapp/dimg/cli/{build.rb → command/dimg/build.rb} +3 -3
- data/lib/dapp/dimg/cli/{build_context.rb → command/dimg/build_context.rb} +3 -3
- data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/export.rb +4 -4
- data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/import.rb +4 -4
- data/lib/dapp/dimg/cli/{cleanup.rb → command/dimg/cleanup.rb} +3 -3
- data/lib/dapp/dimg/cli/{list.rb → command/dimg/list.rb} +3 -3
- data/lib/dapp/dimg/cli/{mrproper.rb → command/dimg/mrproper.rb} +4 -4
- data/lib/dapp/dimg/cli/{push.rb → command/dimg/push.rb} +5 -5
- data/lib/dapp/dimg/cli/{run.rb → command/dimg/run.rb} +8 -8
- data/lib/dapp/dimg/cli/{spush.rb → command/dimg/spush.rb} +4 -4
- data/lib/dapp/dimg/cli/{stage_image.rb → command/dimg/stage_image.rb} +3 -3
- data/lib/dapp/dimg/cli/{stages.rb → command/dimg/stages.rb} +3 -3
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_local.rb +6 -6
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_repo.rb +5 -5
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/flush_local.rb +5 -5
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/flush_repo.rb +6 -6
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/pull.rb +6 -6
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/push.rb +6 -6
- data/lib/dapp/dimg/cli/{tag.rb → command/dimg/tag.rb} +6 -6
- data/lib/dapp/dimg/config/config.rb +20 -0
- data/lib/dapp/dimg/config/directive/artifact_dimg.rb +19 -0
- data/lib/dapp/dimg/config/directive/artifact_group.rb +45 -0
- data/lib/dapp/dimg/config/directive/dimg.rb +36 -0
- data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +149 -0
- data/lib/dapp/dimg/config/directive/dimg/validation.rb +128 -0
- data/lib/dapp/dimg/config/directive/dimg_group.rb +64 -0
- data/lib/dapp/dimg/config/directive/dimg_group_base.rb +46 -0
- data/lib/dapp/dimg/config/directive/docker/dimg.rb +4 -4
- data/lib/dapp/dimg/config/directive/shell/dimg.rb +1 -1
- data/lib/dapp/dimg/dapp/command/bp.rb +4 -4
- data/lib/dapp/dimg/dapp/command/build.rb +2 -2
- data/lib/dapp/dimg/dapp/command/build_context/common.rb +2 -2
- data/lib/dapp/dimg/dapp/command/build_context/export.rb +1 -1
- data/lib/dapp/dimg/dapp/command/build_context/import.rb +1 -1
- data/lib/dapp/dimg/dapp/command/cleanup.rb +1 -1
- data/lib/dapp/dimg/dapp/command/common.rb +19 -4
- data/lib/dapp/dimg/dapp/command/list.rb +1 -1
- data/lib/dapp/dimg/dapp/command/mrproper.rb +3 -3
- data/lib/dapp/dimg/dapp/command/push.rb +6 -5
- data/lib/dapp/dimg/dapp/command/run.rb +1 -1
- data/lib/dapp/dimg/dapp/command/spush.rb +4 -3
- data/lib/dapp/dimg/dapp/command/stage_image.rb +2 -2
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +1 -1
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +3 -3
- data/lib/dapp/dimg/dapp/command/stages/common.rb +4 -4
- data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +1 -1
- data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +1 -1
- data/lib/dapp/dimg/dapp/command/stages/pull.rb +5 -4
- data/lib/dapp/dimg/dapp/command/stages/push.rb +4 -3
- data/lib/dapp/dimg/dapp/command/tag.rb +3 -2
- data/lib/dapp/dimg/dapp/dapp.rb +33 -0
- data/lib/dapp/dimg/dapp/dappfile.rb +25 -0
- data/lib/dapp/dimg/dimg.rb +3 -3
- data/lib/dapp/dimg/dimg/path.rb +1 -1
- data/lib/dapp/dimg/dimg/stages.rb +1 -1
- data/lib/dapp/dimg/dimg/tags.rb +5 -5
- data/lib/dapp/dimg/docker_registry.rb +3 -7
- data/lib/dapp/dimg/git_artifact.rb +30 -14
- data/lib/dapp/dimg/git_repo/base.rb +13 -1
- data/lib/dapp/dimg/git_repo/own.rb +9 -1
- data/lib/dapp/dimg/image/docker.rb +9 -3
- data/lib/dapp/helper/cli.rb +3 -1
- data/lib/dapp/helper/net_status.rb +5 -1
- data/lib/dapp/helper/trivia.rb +1 -1
- data/lib/dapp/version.rb +2 -2
- metadata +84 -38
- data/lib/dapp/cli/base.rb +0 -63
- data/lib/dapp/config/base.rb +0 -54
- data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +0 -23
- data/lib/dapp/dimg/cli/base.rb +0 -16
- data/lib/dapp/dimg/config/artifact_dimg.rb +0 -17
- data/lib/dapp/dimg/config/artifact_group.rb +0 -43
- data/lib/dapp/dimg/config/base.rb +0 -7
- data/lib/dapp/dimg/config/dimg.rb +0 -24
- data/lib/dapp/dimg/config/dimg/instance_methods.rb +0 -179
- data/lib/dapp/dimg/config/dimg/validation.rb +0 -126
- data/lib/dapp/dimg/config/dimg_group.rb +0 -61
- data/lib/dapp/dimg/config/dimg_group_base.rb +0 -54
- data/lib/dapp/dimg/config/dimg_group_main.rb +0 -22
- data/lib/dapp/dimg/dapp/command.rb +0 -21
@@ -1,10 +1,11 @@
|
|
1
1
|
module Dapp
|
2
2
|
module Dimg
|
3
|
-
|
3
|
+
module Dapp
|
4
4
|
module Command
|
5
5
|
module Spush
|
6
|
-
def spush
|
7
|
-
|
6
|
+
def spush
|
7
|
+
repo = option_repo
|
8
|
+
validate_repo_name!(repo)
|
8
9
|
one_dimg!
|
9
10
|
Dimg.new(config: build_configs.first, dapp: self, ignore_git_fetch: true, should_be_built: true).tap do |dimg|
|
10
11
|
dimg.export!(repo, format: spush_format)
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module Dapp
|
2
2
|
module Dimg
|
3
|
-
|
3
|
+
module Dapp
|
4
4
|
module Command
|
5
5
|
module StageImage
|
6
6
|
def stage_image
|
7
7
|
one_dimg!
|
8
|
-
puts Dimg.new(config: build_configs.first, dapp: self, ignore_git_fetch: true).stage_image_name(
|
8
|
+
puts Dimg.new(config: build_configs.first, dapp: self, ignore_git_fetch: true).stage_image_name(options[:stage])
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module Dapp
|
2
2
|
module Dimg
|
3
|
-
|
3
|
+
module Dapp
|
4
4
|
module Command
|
5
5
|
module Stages
|
6
6
|
module CleanupRepo
|
7
|
-
def stages_cleanup_repo
|
8
|
-
lock_repo(repo) do
|
7
|
+
def stages_cleanup_repo
|
8
|
+
lock_repo(repo = option_repo) do
|
9
9
|
raise Error::Command, code: :stages_cleanup_required_option unless stages_cleanup_option?
|
10
10
|
|
11
11
|
registry = registry(repo)
|
@@ -1,13 +1,13 @@
|
|
1
1
|
module Dapp
|
2
2
|
module Dimg
|
3
|
-
|
3
|
+
module Dapp
|
4
4
|
module Command
|
5
5
|
module Stages
|
6
6
|
module Common
|
7
7
|
protected
|
8
8
|
|
9
9
|
def registry(repo)
|
10
|
-
validate_repo_name(repo)
|
10
|
+
validate_repo_name!(repo)
|
11
11
|
::Dapp::Dimg::DockerRegistry.new(repo)
|
12
12
|
end
|
13
13
|
|
@@ -59,11 +59,11 @@ module Dapp
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def proper_repo_cache?
|
62
|
-
!!
|
62
|
+
!!options[:proper_repo_cache]
|
63
63
|
end
|
64
64
|
|
65
65
|
def proper_git_commit?
|
66
|
-
!!
|
66
|
+
!!options[:proper_git_commit]
|
67
67
|
end
|
68
68
|
|
69
69
|
def stages_cleanup_option?
|
@@ -1,11 +1,12 @@
|
|
1
1
|
module Dapp
|
2
2
|
module Dimg
|
3
|
-
|
3
|
+
module Dapp
|
4
4
|
module Command
|
5
5
|
module Stages
|
6
6
|
module Pull
|
7
|
-
def stages_pull
|
8
|
-
|
7
|
+
def stages_pull
|
8
|
+
repo = option_repo
|
9
|
+
validate_repo_name!(repo)
|
9
10
|
build_configs.each do |config|
|
10
11
|
log_dimg_name_with_indent(config) do
|
11
12
|
Dimg.new(config: config, dapp: self, ignore_git_fetch: true).tap do |dimg|
|
@@ -16,7 +17,7 @@ module Dapp
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def pull_all_stages?
|
19
|
-
!!
|
20
|
+
!!options[:pull_all_stages]
|
20
21
|
end
|
21
22
|
end
|
22
23
|
end
|
@@ -1,11 +1,12 @@
|
|
1
1
|
module Dapp
|
2
2
|
module Dimg
|
3
|
-
|
3
|
+
module Dapp
|
4
4
|
module Command
|
5
5
|
module Stages
|
6
6
|
module Push
|
7
|
-
def stages_push
|
8
|
-
|
7
|
+
def stages_push
|
8
|
+
repo = option_repo
|
9
|
+
validate_repo_name!(repo)
|
9
10
|
build_configs.each do |config|
|
10
11
|
log_dimg_name_with_indent(config) do
|
11
12
|
Dimg.new(config: config, dapp: self, ignore_git_fetch: true, should_be_built: true).tap do |dimg|
|
@@ -1,11 +1,12 @@
|
|
1
1
|
module Dapp
|
2
2
|
module Dimg
|
3
|
-
|
3
|
+
module Dapp
|
4
4
|
module Command
|
5
5
|
module Tag
|
6
6
|
def tag(tag)
|
7
7
|
one_dimg!
|
8
|
-
|
8
|
+
validate_image_name!(tag)
|
9
|
+
|
9
10
|
Dimg.new(config: build_configs.first, dapp: self, ignore_git_fetch: true, should_be_built: true).tap do |app|
|
10
11
|
app.tag!(tag)
|
11
12
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Dapp
|
4
|
+
module Dapp
|
5
|
+
include Dappfile
|
6
|
+
|
7
|
+
include Command::Common
|
8
|
+
include Command::Run
|
9
|
+
include Command::Build
|
10
|
+
include Command::Bp
|
11
|
+
include Command::Push
|
12
|
+
include Command::Spush
|
13
|
+
include Command::Tag
|
14
|
+
include Command::List
|
15
|
+
include Command::Stages::CleanupLocal
|
16
|
+
include Command::Stages::CleanupRepo
|
17
|
+
include Command::Stages::FlushLocal
|
18
|
+
include Command::Stages::FlushRepo
|
19
|
+
include Command::Stages::Push
|
20
|
+
include Command::Stages::Pull
|
21
|
+
include Command::Stages::Common
|
22
|
+
include Command::Cleanup
|
23
|
+
include Command::Mrproper
|
24
|
+
include Command::StageImage
|
25
|
+
include Command::BuildContext::Import
|
26
|
+
include Command::BuildContext::Export
|
27
|
+
include Command::BuildContext::Common
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
::Dapp::Dapp.send(:include, ::Dapp::Dimg::Dapp::Dapp)
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Dapp
|
4
|
+
module Dappfile
|
5
|
+
def build_configs
|
6
|
+
@build_configs ||= begin
|
7
|
+
config._dimg.select do |dimg|
|
8
|
+
dimgs_patterns.any? { |pattern| dimg._name.nil? || File.fnmatch(pattern, dimg._name) }
|
9
|
+
end.tap do |dimgs|
|
10
|
+
raise ::Dapp::Error::Dapp, code: :no_such_dimg, data: { dimgs_patterns: dimgs_patterns.join(', ') } if dimgs.empty?
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def dimgs_patterns
|
16
|
+
@dimgs_patterns ||= begin
|
17
|
+
(options[:dimgs_patterns] || []).tap do |dimgs_patterns|
|
18
|
+
dimgs_patterns << '*' unless dimgs_patterns.any?
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end # Dappfile
|
23
|
+
end # Dapp
|
24
|
+
end # Dimg
|
25
|
+
end # Dapp
|
data/lib/dapp/dimg/dimg.rb
CHANGED
@@ -130,7 +130,7 @@ module Dapp
|
|
130
130
|
end
|
131
131
|
|
132
132
|
def stage_image_name(stage_name)
|
133
|
-
stages.find { |stage| stage.
|
133
|
+
stages.find { |stage| stage.name == stage_name }.image.name
|
134
134
|
end
|
135
135
|
|
136
136
|
def builder
|
@@ -150,7 +150,7 @@ module Dapp
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def dev_mode?
|
153
|
-
|
153
|
+
dapp.dev_mode?
|
154
154
|
end
|
155
155
|
|
156
156
|
def build_cache_version
|
@@ -168,7 +168,7 @@ module Dapp
|
|
168
168
|
end
|
169
169
|
|
170
170
|
def stage_should_be_introspected?(name)
|
171
|
-
dapp.
|
171
|
+
dapp.options[:introspect_stage] == name
|
172
172
|
end
|
173
173
|
|
174
174
|
protected
|
data/lib/dapp/dimg/dimg/path.rb
CHANGED
@@ -7,7 +7,7 @@ module Dapp
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def tmp_path(*path)
|
10
|
-
@tmp_path ||= Dir.mktmpdir('dapp-', dapp.
|
10
|
+
@tmp_path ||= Dir.mktmpdir('dapp-', dapp.options[:tmp_dir_prefix] || '/tmp')
|
11
11
|
make_path(@tmp_path, *path).expand_path.tap { |p| p.parent.mkpath }
|
12
12
|
end
|
13
13
|
|
data/lib/dapp/dimg/dimg/tags.rb
CHANGED
@@ -15,23 +15,23 @@ module Dapp
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def simple_tags
|
18
|
-
dapp.
|
18
|
+
dapp.options[:tag]
|
19
19
|
end
|
20
20
|
|
21
21
|
def branch_tags
|
22
|
-
return [] unless dapp.
|
22
|
+
return [] unless dapp.options[:tag_branch]
|
23
23
|
raise Error::Dimg, code: :git_branch_without_name if (branch = git_repo.branch) == 'HEAD'
|
24
24
|
[branch]
|
25
25
|
end
|
26
26
|
|
27
27
|
def commit_tags
|
28
|
-
return [] unless dapp.
|
28
|
+
return [] unless dapp.options[:tag_commit]
|
29
29
|
commit = git_repo.latest_commit
|
30
30
|
[commit]
|
31
31
|
end
|
32
32
|
|
33
33
|
def build_tags
|
34
|
-
return [] unless dapp.
|
34
|
+
return [] unless dapp.options[:tag_build_id]
|
35
35
|
|
36
36
|
if ENV['GITLAB_CI']
|
37
37
|
build_id = ENV['CI_BUILD_ID']
|
@@ -45,7 +45,7 @@ module Dapp
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def ci_tags
|
48
|
-
return [] unless dapp.
|
48
|
+
return [] unless dapp.options[:tag_ci]
|
49
49
|
|
50
50
|
if ENV['GITLAB_CI']
|
51
51
|
branch = ENV['CI_BUILD_REF_NAME']
|
@@ -15,13 +15,9 @@ module Dapp
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.repo_name_format
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
port_number = '[[:digit:]]+'
|
22
|
-
hostcomponent = '[[:alnum:]_-]*[[:alnum:]]'
|
23
|
-
hostname = "#{hostcomponent}[\\.#{hostcomponent}]*(?<port>:#{port_number})?"
|
24
|
-
"(?<hostname>#{hostname}/)?(?<repo_suffix>#{component}[/#{component}]*)"
|
18
|
+
rpart = '[a-z0-9]+(([_.]|__|-+)[a-z0-9]+)*'
|
19
|
+
hpart = '(?!-)[a-z0-9-]+(?<!-)'
|
20
|
+
"(?<hostname>#{hpart}(\\.#{hpart})*(?<port>:[0-9]+)?\/)?(?<repo_suffix>#{rpart}(\/#{rpart})*)"
|
25
21
|
end
|
26
22
|
|
27
23
|
def self.repo_name?(name)
|
@@ -12,7 +12,7 @@ module Dapp
|
|
12
12
|
@repo = repo
|
13
13
|
@name = name
|
14
14
|
|
15
|
-
@branch = branch || repo.dimg.dapp.
|
15
|
+
@branch = branch || repo.dimg.dapp.options[:git_artifact_branch] || repo.branch
|
16
16
|
@commit = commit
|
17
17
|
|
18
18
|
@to = to
|
@@ -52,15 +52,27 @@ module Dapp
|
|
52
52
|
patch_command(stage.prev_g_a_stage.layer_commit(self), nil)
|
53
53
|
end
|
54
54
|
|
55
|
-
def
|
55
|
+
def stage_dependencies_checksum(stage)
|
56
56
|
return [] if (stage_dependencies = stages_dependencies[stage.name]).empty?
|
57
57
|
|
58
|
-
paths = include_paths(true) + base_paths(stage_dependencies, true)
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
58
|
+
paths = (include_paths(true) + base_paths(stage_dependencies, true)).uniq
|
59
|
+
|
60
|
+
to_commit = if repo.is_a? GitRepo::Own and repo.dimg.dev_mode?
|
61
|
+
nil
|
62
|
+
else
|
63
|
+
latest_commit
|
63
64
|
end
|
65
|
+
|
66
|
+
diff_patches(nil, to_commit, paths: paths)
|
67
|
+
.sort_by {|patch| patch.delta.new_file[:path]}
|
68
|
+
.reduce(nil) {|prev_hash, patch|
|
69
|
+
Digest::SHA256.hexdigest [
|
70
|
+
prev_hash,
|
71
|
+
patch.delta.new_file[:path],
|
72
|
+
patch.delta.new_file[:mode].to_s,
|
73
|
+
patch.to_s
|
74
|
+
].compact.join(':::')
|
75
|
+
}
|
64
76
|
end
|
65
77
|
|
66
78
|
def patch_size(from, to)
|
@@ -85,7 +97,7 @@ module Dapp
|
|
85
97
|
end
|
86
98
|
|
87
99
|
def latest_commit
|
88
|
-
@latest_commit ||= commit || repo.latest_commit(branch)
|
100
|
+
@latest_commit ||= (commit || repo.latest_commit(branch))
|
89
101
|
end
|
90
102
|
|
91
103
|
def paramshash
|
@@ -128,8 +140,12 @@ module Dapp
|
|
128
140
|
Gem::Package::TarWriter.new(f) do |tar|
|
129
141
|
diff_patches(nil, to_commit).each do |patch|
|
130
142
|
entry = patch.delta.new_file
|
131
|
-
|
132
|
-
|
143
|
+
if entry[:mode] == 40960 # symlink
|
144
|
+
tar.add_symlink slice_cwd(entry[:path]), repo.lookup_object(entry[:oid]).content, entry[:mode]
|
145
|
+
else
|
146
|
+
tar.add_file slice_cwd(entry[:path]), entry[:mode] do |tf|
|
147
|
+
tf.write repo.lookup_object(entry[:oid]).content
|
148
|
+
end
|
133
149
|
end
|
134
150
|
end
|
135
151
|
end
|
@@ -213,10 +229,10 @@ module Dapp
|
|
213
229
|
end
|
214
230
|
|
215
231
|
def diff_patches(from, to, paths: include_paths_or_cwd)
|
216
|
-
(@diff_patches ||= {})[[from, to, paths]]
|
217
|
-
|
218
|
-
|
219
|
-
|
232
|
+
(@diff_patches ||= {})[[from, to, paths]] ||= repo.patches(from, to,
|
233
|
+
paths: paths,
|
234
|
+
exclude_paths: exclude_paths(true),
|
235
|
+
force_text: true)
|
220
236
|
end
|
221
237
|
|
222
238
|
def include_paths_or_cwd
|
@@ -15,6 +15,16 @@ module Dapp
|
|
15
15
|
[]
|
16
16
|
end
|
17
17
|
|
18
|
+
# FIXME: Убрать логику исключения путей exclude_paths из данного класса,
|
19
|
+
# FIXME: т.к. большинство методов не поддерживают инвариант
|
20
|
+
# FIXME "всегда выдавать данные с исключенными путями".
|
21
|
+
# FIXME: Например, метод diff выдает данные без учета exclude_paths.
|
22
|
+
# FIXME: Лучше перенести фильтрацию в GitArtifact::diff_patches.
|
23
|
+
# FIXME: ИЛИ обеспечить этот инвариант, но это ограничит в возможностях
|
24
|
+
# FIXME: использование Rugged извне этого класса и это более сложный путь.
|
25
|
+
# FIXME: Лучше сейчас убрать фильтрацию, а добавить ее когда наберется достаточно
|
26
|
+
# FIXME: примеров использования.
|
27
|
+
|
18
28
|
def patches(from, to, exclude_paths: [], **kwargs)
|
19
29
|
diff(from, to, **kwargs).patches.select do |patch|
|
20
30
|
!exclude_paths.any? { |p| check_path?(patch.delta.new_file[:path], p) }
|
@@ -22,7 +32,9 @@ module Dapp
|
|
22
32
|
end
|
23
33
|
|
24
34
|
def diff(from, to, **kwargs)
|
25
|
-
if
|
35
|
+
if to.nil?
|
36
|
+
raise "Workdir diff not supported for #{self.class}"
|
37
|
+
elsif from.nil?
|
26
38
|
Rugged::Tree.diff(git, nil, to, **kwargs)
|
27
39
|
else
|
28
40
|
lookup_commit(from).diff(lookup_commit(to), **kwargs)
|
@@ -16,8 +16,16 @@ module Dapp
|
|
16
16
|
raise Error::Rugged, code: :local_git_repository_does_not_exist
|
17
17
|
end
|
18
18
|
|
19
|
+
# NOTICE: Параметры {from: nil, to: nil} можно указать только для Own repo.
|
20
|
+
# NOTICE: Для Remote repo такой вызов не имеет смысла и это ошибка пользователя класса Remote.
|
21
|
+
|
19
22
|
def diff(from, to, **kwargs)
|
20
|
-
if to.nil?
|
23
|
+
if from.nil? and to.nil?
|
24
|
+
mid_commit = latest_commit
|
25
|
+
diff_obj = super(nil, mid_commit, **kwargs)
|
26
|
+
diff_obj.merge! git.lookup(mid_commit).diff_workdir(**kwargs)
|
27
|
+
diff_obj
|
28
|
+
elsif to.nil?
|
21
29
|
git.lookup(from).diff_workdir(**kwargs)
|
22
30
|
else
|
23
31
|
super
|