dapp 0.9.4 → 0.10.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/bin/dapp +9 -1
- data/config/en/net_status.yml +5 -2
- data/lib/dapp.rb +2 -1
- data/lib/dapp/config/base.rb +5 -0
- data/lib/dapp/config/directive/base.rb +5 -4
- data/lib/dapp/dapp.rb +1 -1
- data/lib/dapp/dapp/deps/base.rb +2 -2
- data/lib/dapp/dapp/logging/paint.rb +1 -1
- data/lib/dapp/dapp/logging/process.rb +18 -5
- data/lib/dapp/dimg/build/stage/base.rb +39 -5
- data/lib/dapp/dimg/build/stage/before_setup.rb +2 -0
- data/lib/dapp/dimg/build/stage/build_artifact.rb +2 -0
- data/lib/dapp/dimg/build/stage/from.rb +2 -2
- data/lib/dapp/dimg/build/stage/ga_archive.rb +0 -8
- data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +1 -5
- data/lib/dapp/dimg/build/stage/ga_base.rb +4 -10
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +0 -8
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +0 -4
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +1 -1
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +0 -4
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +1 -1
- data/lib/dapp/dimg/build/stage/install/install.rb +1 -0
- data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +23 -0
- data/lib/dapp/dimg/build/stage/mod/group.rb +1 -1
- data/lib/dapp/dimg/build/stage/mod/logging.rb +4 -2
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +0 -4
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +1 -1
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +0 -4
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +1 -1
- data/lib/dapp/dimg/build/stage/setup/setup.rb +1 -0
- data/lib/dapp/dimg/builder/chef.rb +3 -3
- data/lib/dapp/dimg/config/artifact_group.rb +12 -16
- data/lib/dapp/dimg/config/dimg/instance_methods.rb +22 -20
- data/lib/dapp/dimg/config/dimg/validation.rb +5 -5
- data/lib/dapp/dimg/config/directive/artifact.rb +18 -15
- data/lib/dapp/dimg/config/directive/artifact_base.rb +30 -27
- data/lib/dapp/dimg/config/directive/base.rb +5 -1
- data/lib/dapp/dimg/config/directive/chef.rb +14 -12
- data/lib/dapp/dimg/config/directive/docker/base.rb +7 -6
- data/lib/dapp/dimg/config/directive/docker/dimg.rb +9 -11
- data/lib/dapp/dimg/config/directive/git_artifact_local.rb +11 -5
- data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +10 -14
- data/lib/dapp/dimg/config/directive/mount.rb +10 -6
- data/lib/dapp/dimg/config/directive/shell/dimg.rb +14 -16
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +1 -1
- data/lib/dapp/dimg/dimg.rb +1 -1
- data/lib/dapp/dimg/dimg/stages.rb +5 -1
- data/lib/dapp/dimg/git_artifact.rb +10 -12
- data/lib/dapp/dimg/git_repo/base.rb +2 -0
- data/lib/dapp/dimg/git_repo/own.rb +1 -1
- data/lib/dapp/dimg/image/docker.rb +1 -0
- data/lib/dapp/dimg/image/stage.rb +1 -1
- data/lib/dapp/dimg/lock/file.rb +1 -1
- data/lib/dapp/helper/cli.rb +2 -1
- data/lib/dapp/helper/net_status.rb +13 -3
- data/lib/dapp/version.rb +1 -1
- metadata +17 -3
- data/lib/dapp/dimg/error/shellout.rb +0 -7
@@ -0,0 +1,23 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Build
|
4
|
+
module Stage
|
5
|
+
module Mod
|
6
|
+
module GitArtifactsDependencies
|
7
|
+
def local_git_artifacts_dependencies
|
8
|
+
dimg.local_git_artifacts.map do |git_artifact|
|
9
|
+
args = []
|
10
|
+
args << self
|
11
|
+
if dimg.dev_mode?
|
12
|
+
args << git_artifact.latest_commit
|
13
|
+
args << nil
|
14
|
+
end
|
15
|
+
git_artifact.stage_dependencies_checksums(*args)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end # Mod
|
20
|
+
end # Stage
|
21
|
+
end # Build
|
22
|
+
end # Dimg
|
23
|
+
end # Dapp
|
@@ -74,8 +74,10 @@ module Dapp
|
|
74
74
|
end
|
75
75
|
|
76
76
|
def log_image_build_process
|
77
|
-
|
78
|
-
|
77
|
+
dimg.dapp.log_process(log_name,
|
78
|
+
process: dimg.dapp.t(code: 'status.process.building'),
|
79
|
+
short: should_not_be_detailed?,
|
80
|
+
quiet: should_be_quiet?) { yield }
|
79
81
|
end
|
80
82
|
|
81
83
|
def ignore_log_commands?
|
@@ -21,7 +21,7 @@ module Dapp
|
|
21
21
|
|
22
22
|
def changes_size_since_g_a_pre_setup_patch
|
23
23
|
dimg.git_artifacts.map do |git_artifact|
|
24
|
-
git_artifact.patch_size(
|
24
|
+
git_artifact.patch_size(prev_g_a_stage.layer_commit(git_artifact), git_artifact.latest_commit)
|
25
25
|
end.reduce(0, :+)
|
26
26
|
end
|
27
27
|
end # GAPostSetupPatchDependencies
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Dapp
|
2
2
|
module Dimg
|
3
3
|
class Builder::Chef < Builder::Base
|
4
|
-
DEFAULT_CHEFDK_IMAGE = 'dappdeps/chefdk:
|
4
|
+
DEFAULT_CHEFDK_IMAGE = 'dappdeps/chefdk:1.2.22-1'.freeze # TODO: config, DSL, DEFAULT_CHEFDK_IMAGE
|
5
5
|
|
6
6
|
%i(before_install install before_setup setup build_artifact).each do |stage|
|
7
7
|
define_method("#{stage}?") {!stage_empty?(stage)}
|
@@ -30,7 +30,7 @@ module Dapp
|
|
30
30
|
|
31
31
|
%i(before_install install before_setup setup).each do |stage|
|
32
32
|
unless stage_empty?(stage) || stage_cookbooks_checksum_path(stage).exist?
|
33
|
-
raise Error::Chef, code: :
|
33
|
+
raise Error::Chef, code: :stage_checksum_not_calculated, data: {stage: stage}
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -71,7 +71,7 @@ module Dapp
|
|
71
71
|
def builder_cookbook
|
72
72
|
@builder_cookbook ||= begin
|
73
73
|
unless dimg.dapp.builder_cookbook_path.exist?
|
74
|
-
raise Error,
|
74
|
+
raise Error::Chef,
|
75
75
|
code: :builder_cookbook_not_found,
|
76
76
|
data: {path: dimg.dapp.builder_cookbook_path.to_s}
|
77
77
|
end
|
@@ -2,6 +2,14 @@ module Dapp
|
|
2
2
|
module Dimg
|
3
3
|
module Config
|
4
4
|
class ArtifactGroup < DimgGroup
|
5
|
+
def export(*args, &blk)
|
6
|
+
artifact_config = pass_to_default(ArtifactDimg.new("artifact-#{SecureRandom.hex(2)}", dapp: dapp))
|
7
|
+
artifact = Directive::Artifact.new(dapp: dapp, config: artifact_config)
|
8
|
+
artifact.export(*args, &blk).tap do
|
9
|
+
_export.concat artifact._export
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
5
13
|
def _shell(&blk)
|
6
14
|
@_shell ||= Directive::Shell::Artifact.new(dapp: dapp, &blk)
|
7
15
|
end
|
@@ -14,28 +22,16 @@ module Dapp
|
|
14
22
|
@_export ||= []
|
15
23
|
end
|
16
24
|
|
25
|
+
def validate!
|
26
|
+
_export.each(&:validate!)
|
27
|
+
end
|
28
|
+
|
17
29
|
undef :artifact
|
18
30
|
undef :dimg
|
19
31
|
undef :dimg_group
|
20
32
|
|
21
33
|
protected
|
22
34
|
|
23
|
-
def export(*args, &blk)
|
24
|
-
_export.concat begin
|
25
|
-
artifact_config = pass_to_default(
|
26
|
-
ArtifactDimg.new(
|
27
|
-
"artifact-#{SecureRandom.hex(2)}",
|
28
|
-
dapp: dapp
|
29
|
-
)
|
30
|
-
)
|
31
|
-
|
32
|
-
artifact = Directive::Artifact.new(dapp: dapp, config: artifact_config)
|
33
|
-
artifact.send(:export, *args, &blk)
|
34
|
-
|
35
|
-
artifact._export
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
35
|
def check_dimg_directive_order(_directive)
|
40
36
|
end
|
41
37
|
|
@@ -5,6 +5,7 @@ module Dapp
|
|
5
5
|
module InstanceMethods
|
6
6
|
attr_reader :_builder
|
7
7
|
attr_reader :_chef, :_shell, :_docker, :_git_artifact, :_mount, :_artifact
|
8
|
+
attr_reader :_artifact_groups
|
8
9
|
|
9
10
|
def dev_mode
|
10
11
|
@_dev_mode = true
|
@@ -25,20 +26,20 @@ module Dapp
|
|
25
26
|
end
|
26
27
|
|
27
28
|
def artifact(&blk)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end._export
|
32
|
-
end
|
29
|
+
pass_to_custom(ArtifactGroup.new(dapp: dapp), :clone_to_artifact).tap do |artifact_group|
|
30
|
+
_artifact_groups << directive_eval(artifact_group, &blk)
|
31
|
+
end
|
33
32
|
end
|
34
33
|
|
35
34
|
def git(url = nil, &blk)
|
36
35
|
type = url.nil? ? :local : :remote
|
37
|
-
_git_artifact.
|
36
|
+
_git_artifact.public_send(type, url.to_s, &blk)
|
38
37
|
end
|
39
38
|
|
40
39
|
def mount(to, &blk)
|
41
|
-
|
40
|
+
Directive::Mount.new(to, dapp: dapp, &blk).tap do |mount|
|
41
|
+
_mount << mount
|
42
|
+
end
|
42
43
|
end
|
43
44
|
|
44
45
|
def _dev_mode
|
@@ -75,8 +76,12 @@ module Dapp
|
|
75
76
|
end
|
76
77
|
end
|
77
78
|
|
79
|
+
def _artifact_groups
|
80
|
+
@_artifact_groups ||= []
|
81
|
+
end
|
82
|
+
|
78
83
|
def _artifact
|
79
|
-
|
84
|
+
_artifact_groups.map(&:_export).flatten
|
80
85
|
end
|
81
86
|
|
82
87
|
[:before, :after].each do |order|
|
@@ -104,11 +109,15 @@ module Dapp
|
|
104
109
|
end
|
105
110
|
|
106
111
|
def local(_, &blk)
|
107
|
-
|
112
|
+
Directive::GitArtifactLocal.new(dapp: dapp, &blk).tap do |git|
|
113
|
+
@_local << git
|
114
|
+
end
|
108
115
|
end
|
109
116
|
|
110
117
|
def remote(repo_url, &blk)
|
111
|
-
|
118
|
+
Directive::GitArtifactRemote.new(repo_url, dapp: dapp, &blk).tap do |git|
|
119
|
+
@_remote << git
|
120
|
+
end
|
112
121
|
end
|
113
122
|
|
114
123
|
def _local
|
@@ -119,14 +128,12 @@ module Dapp
|
|
119
128
|
@_remote.map(&:_export).flatten
|
120
129
|
end
|
121
130
|
|
122
|
-
protected
|
123
|
-
|
124
131
|
def empty?
|
125
132
|
(_local + _remote).empty?
|
126
133
|
end
|
127
134
|
|
128
135
|
def validate!
|
129
|
-
(_local + _remote).each
|
136
|
+
(_local + _remote).each(&:validate!)
|
130
137
|
end
|
131
138
|
end
|
132
139
|
|
@@ -137,11 +144,6 @@ module Dapp
|
|
137
144
|
raise Error::Config, code: :builder_type_conflict unless @_builder == type
|
138
145
|
end
|
139
146
|
|
140
|
-
def directive_eval(directive, &blk)
|
141
|
-
directive.instance_eval(&blk) if block_given?
|
142
|
-
directive
|
143
|
-
end
|
144
|
-
|
145
147
|
def pass_to_default(dimg)
|
146
148
|
pass_to_custom(dimg, :clone)
|
147
149
|
end
|
@@ -152,7 +154,7 @@ module Dapp
|
|
152
154
|
|
153
155
|
obj.instance_variable_set(directive, begin
|
154
156
|
case variable
|
155
|
-
when Directive::Base, GitArtifact then variable.
|
157
|
+
when Directive::Base, GitArtifact then variable.public_send(clone_method)
|
156
158
|
when Symbol then variable
|
157
159
|
when Array then variable.dup
|
158
160
|
when TrueClass, FalseClass then variable
|
@@ -167,7 +169,7 @@ module Dapp
|
|
167
169
|
def passed_directives
|
168
170
|
[:@_chef, :@_shell, :@_docker,
|
169
171
|
:@_git_artifact, :@_mount,
|
170
|
-
:@
|
172
|
+
:@_artifact_groups, :@_builder, :@_dev_mode]
|
171
173
|
end
|
172
174
|
end # InstanceMethods
|
173
175
|
# rubocop:enable Metrics/ModuleLength
|
@@ -3,8 +3,6 @@ module Dapp
|
|
3
3
|
module Config
|
4
4
|
class Dimg < Base
|
5
5
|
module Validation
|
6
|
-
protected
|
7
|
-
|
8
6
|
def validate!
|
9
7
|
directives_validate!
|
10
8
|
validate_scratch!
|
@@ -12,6 +10,8 @@ module Dapp
|
|
12
10
|
validate_artifacts_artifacts!
|
13
11
|
end
|
14
12
|
|
13
|
+
protected
|
14
|
+
|
15
15
|
def validate_scratch!
|
16
16
|
if _docker._from.nil?
|
17
17
|
validate_scratch_directives!
|
@@ -25,7 +25,7 @@ module Dapp
|
|
25
25
|
passed_directives.each do |v|
|
26
26
|
next if (value = instance_variable_get(v)).nil?
|
27
27
|
Array(value).each do |elm|
|
28
|
-
elm.
|
28
|
+
elm.validate! if elm.respond_to?(:validate!)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -36,7 +36,7 @@ module Dapp
|
|
36
36
|
directives.each do |name, user_name|
|
37
37
|
raise Error::Config,
|
38
38
|
code: :scratch_unsupported_directive,
|
39
|
-
data: { directive: user_name } unless public_send(name).
|
39
|
+
data: { directive: user_name } unless public_send(name).empty?
|
40
40
|
end
|
41
41
|
|
42
42
|
docker_directives = [:_expose, :_env, :_cmd, :_onbuild, :_workdir, :_user, :_entrypoint]
|
@@ -44,7 +44,7 @@ module Dapp
|
|
44
44
|
value = _docker.public_send(directive)
|
45
45
|
raise Error::Config,
|
46
46
|
code: :scratch_unsupported_directive,
|
47
|
-
data: { directive: "docker.#{directive}" } unless value.nil? || value.
|
47
|
+
data: { directive: "docker.#{directive}" } unless value.nil? || value.empty?
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -7,7 +7,6 @@ module Dapp
|
|
7
7
|
|
8
8
|
def initialize(config:, **kwargs, &blk)
|
9
9
|
@_config = config
|
10
|
-
|
11
10
|
super(**kwargs, &blk)
|
12
11
|
end
|
13
12
|
|
@@ -23,27 +22,31 @@ module Dapp
|
|
23
22
|
attr_accessor :_config
|
24
23
|
attr_accessor :_before, :_after
|
25
24
|
|
26
|
-
def not_associated?
|
27
|
-
(_before || _after).nil?
|
28
|
-
end
|
29
|
-
|
30
|
-
protected
|
31
|
-
|
32
25
|
def before(stage)
|
33
|
-
|
34
|
-
|
35
|
-
|
26
|
+
sub_directive_eval do
|
27
|
+
stage = stage.to_sym
|
28
|
+
associate_validation!(:before, stage, @_before)
|
29
|
+
@_before = stage
|
30
|
+
end
|
36
31
|
end
|
37
32
|
|
38
33
|
def after(stage)
|
39
|
-
|
40
|
-
|
41
|
-
|
34
|
+
sub_directive_eval do
|
35
|
+
stage = stage.to_sym
|
36
|
+
associate_validation!(:after, stage, @_after)
|
37
|
+
@_after = stage
|
38
|
+
end
|
42
39
|
end
|
43
40
|
|
41
|
+
def not_associated?
|
42
|
+
(_before || _after).nil?
|
43
|
+
end
|
44
|
+
|
45
|
+
protected
|
46
|
+
|
44
47
|
def associate_validation!(type, stage, _old_stage)
|
45
48
|
conflict_type = [:before, :after].find { |t| t != type }
|
46
|
-
conflict_stage =
|
49
|
+
conflict_stage = public_send("_#{conflict_type}")
|
47
50
|
|
48
51
|
raise Error::Config, code: :stage_artifact_not_supported_associated_stage,
|
49
52
|
data: { stage: "#{type} #{stage.inspect}" } unless [:install, :setup].include? stage
|
@@ -52,7 +55,7 @@ module Dapp
|
|
52
55
|
data: { stage: "#{type} #{stage.inspect}",
|
53
56
|
conflict_stage: "#{conflict_type} #{conflict_stage.inspect}" } if conflict_stage
|
54
57
|
|
55
|
-
defined_stage =
|
58
|
+
defined_stage = public_send("_#{type}")
|
56
59
|
dapp.log_config_warning(
|
57
60
|
desc: {
|
58
61
|
code: :stage_artifact_rewritten,
|
@@ -7,10 +7,23 @@ module Dapp
|
|
7
7
|
|
8
8
|
def initialize(**kwargs, &blk)
|
9
9
|
@_export = []
|
10
|
-
|
11
10
|
super(**kwargs, &blk)
|
12
11
|
end
|
13
12
|
|
13
|
+
def owner(owner)
|
14
|
+
sub_directive_eval { @_owner = owner }
|
15
|
+
end
|
16
|
+
|
17
|
+
def group(group)
|
18
|
+
sub_directive_eval { @_group = group }
|
19
|
+
end
|
20
|
+
|
21
|
+
def export(absolute_dir_path = '/', &blk)
|
22
|
+
self.class.const_get('Export').new(absolute_dir_path, dapp: dapp, &blk).tap do |export|
|
23
|
+
@_export << export
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
14
27
|
def _export
|
15
28
|
@_export.each do |export|
|
16
29
|
export._owner ||= @_owner
|
@@ -43,53 +56,43 @@ module Dapp
|
|
43
56
|
}
|
44
57
|
end
|
45
58
|
|
46
|
-
protected
|
47
|
-
|
48
59
|
def to(absolute_path)
|
49
|
-
|
50
|
-
|
60
|
+
sub_directive_eval do
|
61
|
+
raise Error::Config, code: :export_to_absolute_path_required unless Pathname(absolute_path).absolute?
|
62
|
+
@_to = path_format(absolute_path)
|
63
|
+
end
|
51
64
|
end
|
52
65
|
|
53
66
|
def include_paths(*relative_paths)
|
54
|
-
|
55
|
-
|
67
|
+
sub_directive_eval do
|
68
|
+
unless relative_paths.all? { |path| Pathname(path).relative? }
|
69
|
+
raise Error::Config, code: :export_include_paths_relative_path_required
|
70
|
+
end
|
71
|
+
_include_paths.concat(relative_paths.map(&method(:path_format)))
|
56
72
|
end
|
57
|
-
_include_paths.concat(relative_paths.map(&method(:path_format)))
|
58
73
|
end
|
59
74
|
|
60
75
|
def exclude_paths(*relative_paths)
|
61
|
-
|
62
|
-
|
76
|
+
sub_directive_eval do
|
77
|
+
unless relative_paths.all? { |path| Pathname(path).relative? }
|
78
|
+
raise Error::Config, code: :export_exclude_paths_relative_path_required
|
79
|
+
end
|
80
|
+
_exclude_paths.concat(relative_paths.map(&method(:path_format)))
|
63
81
|
end
|
64
|
-
_exclude_paths.concat(relative_paths.map(&method(:path_format)))
|
65
82
|
end
|
66
83
|
|
67
84
|
def owner(owner)
|
68
|
-
@_owner = owner
|
85
|
+
sub_directive_eval { @_owner = owner }
|
69
86
|
end
|
70
87
|
|
71
88
|
def group(group)
|
72
|
-
@_group = group
|
89
|
+
sub_directive_eval { @_group = group }
|
73
90
|
end
|
74
91
|
|
75
92
|
def validate!
|
76
93
|
raise Error::Config, code: :export_to_required if _to.nil?
|
77
94
|
end
|
78
95
|
end
|
79
|
-
|
80
|
-
protected
|
81
|
-
|
82
|
-
def owner(owner)
|
83
|
-
@_owner = owner
|
84
|
-
end
|
85
|
-
|
86
|
-
def group(group)
|
87
|
-
@_group = group
|
88
|
-
end
|
89
|
-
|
90
|
-
def export(absolute_dir_path = '/', &blk)
|
91
|
-
@_export << self.class.const_get('Export').new(absolute_dir_path, dapp: dapp, &blk)
|
92
|
-
end
|
93
96
|
end
|
94
97
|
end
|
95
98
|
end
|