dapp 0.6.17 → 0.7.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/config/en/common.yml +2 -2
- data/config/en/net_status.yml +25 -23
- data/lib/dapp.rb +24 -16
- data/lib/dapp/artifact.rb +1 -1
- data/lib/dapp/build/stage/after_install_artifact.rb +2 -2
- data/lib/dapp/build/stage/after_setup_artifact.rb +4 -4
- data/lib/dapp/build/stage/artifact_base.rb +25 -25
- data/lib/dapp/build/stage/artifact_default.rb +16 -16
- data/lib/dapp/build/stage/base.rb +36 -31
- data/lib/dapp/build/stage/before_install.rb +8 -8
- data/lib/dapp/build/stage/before_install_artifact.rb +2 -2
- data/lib/dapp/build/stage/before_setup.rb +8 -8
- data/lib/dapp/build/stage/before_setup_artifact.rb +2 -2
- data/lib/dapp/build/stage/build_artifact.rb +10 -10
- data/lib/dapp/build/stage/docker_instructions.rb +3 -3
- data/lib/dapp/build/stage/from.rb +7 -3
- data/lib/dapp/build/stage/ga_archive.rb +2 -2
- data/lib/dapp/build/stage/ga_archive_dependencies.rb +3 -3
- data/lib/dapp/build/stage/ga_artifact_patch.rb +2 -2
- data/lib/dapp/build/stage/ga_base.rb +2 -2
- data/lib/dapp/build/stage/ga_dependencies_base.rb +2 -2
- data/lib/dapp/build/stage/ga_latest_patch.rb +3 -3
- data/lib/dapp/build/stage/import_artifact.rb +19 -19
- data/lib/dapp/build/stage/install/ga_post_install_patch.rb +2 -2
- data/lib/dapp/build/stage/install/ga_post_install_patch_dependencies.rb +2 -2
- data/lib/dapp/build/stage/install/ga_pre_install_patch.rb +2 -2
- data/lib/dapp/build/stage/install/ga_pre_install_patch_dependencies.rb +2 -2
- data/lib/dapp/build/stage/install/install.rb +9 -9
- data/lib/dapp/build/stage/mod/group.rb +2 -2
- data/lib/dapp/build/stage/mod/logging.rb +19 -19
- data/lib/dapp/build/stage/setup/chef_cookbooks.rb +4 -4
- data/lib/dapp/build/stage/setup/ga_post_setup_patch.rb +2 -2
- data/lib/dapp/build/stage/setup/ga_post_setup_patch_dependencies.rb +3 -3
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch.rb +2 -2
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch_dependencies.rb +2 -2
- data/lib/dapp/build/stage/setup/setup.rb +9 -9
- data/lib/dapp/builder/base.rb +4 -4
- data/lib/dapp/builder/chef.rb +65 -64
- data/lib/dapp/builder/none.rb +45 -0
- data/lib/dapp/builder/shell.rb +3 -3
- data/lib/dapp/cli.rb +9 -10
- data/lib/dapp/cli/base.rb +6 -1
- data/lib/dapp/cli/bp.rb +2 -2
- data/lib/dapp/cli/build.rb +2 -2
- data/lib/dapp/cli/cleanup.rb +2 -2
- data/lib/dapp/cli/list.rb +2 -2
- data/lib/dapp/cli/mrproper.rb +0 -4
- data/lib/dapp/cli/push.rb +3 -3
- data/lib/dapp/cli/run.rb +3 -3
- data/lib/dapp/cli/spush.rb +2 -2
- data/lib/dapp/cli/stage_image.rb +2 -2
- data/lib/dapp/cli/stages/cleanup_local.rb +3 -3
- data/lib/dapp/cli/stages/cleanup_repo.rb +3 -3
- data/lib/dapp/cli/stages/flush_local.rb +3 -3
- data/lib/dapp/cli/stages/flush_repo.rb +3 -3
- data/lib/dapp/cli/stages/pull.rb +3 -3
- data/lib/dapp/cli/stages/push.rb +3 -3
- data/lib/dapp/config/artifact_dimg.rb +18 -0
- data/lib/dapp/config/artifact_group.rb +54 -0
- data/lib/dapp/config/base.rb +19 -0
- data/lib/dapp/config/dimg.rb +23 -0
- data/lib/dapp/config/dimg/instance_methods.rb +179 -0
- data/lib/dapp/config/dimg/validation.rb +124 -0
- data/lib/dapp/config/dimg_group.rb +56 -0
- data/lib/dapp/config/dimg_group_base.rb +36 -0
- data/lib/dapp/config/dimg_group_main.rb +21 -0
- data/lib/dapp/config/directive/artifact.rb +29 -54
- data/lib/dapp/config/directive/artifact_base.rb +92 -0
- data/lib/dapp/config/directive/base.rb +22 -0
- data/lib/dapp/config/directive/chef.rb +23 -61
- data/lib/dapp/config/directive/docker/artifact.rb +3 -14
- data/lib/dapp/config/directive/docker/base.rb +3 -78
- data/lib/dapp/config/directive/docker/dimg.rb +81 -0
- data/lib/dapp/config/directive/git_artifact_local.rb +13 -0
- data/lib/dapp/config/directive/git_artifact_remote.rb +55 -0
- data/lib/dapp/config/directive/mount.rb +25 -0
- data/lib/dapp/config/directive/shell/artifact.rb +3 -24
- data/lib/dapp/config/directive/shell/dimg.rb +68 -0
- data/lib/dapp/{application.rb → dimg.rb} +12 -33
- data/lib/dapp/{application → dimg}/git_artifact.rb +3 -3
- data/lib/dapp/{application → dimg}/path.rb +9 -5
- data/lib/dapp/{application → dimg}/stages.rb +8 -8
- data/lib/dapp/{application → dimg}/tags.rb +6 -6
- data/lib/dapp/docker_registry.rb +11 -15
- data/lib/dapp/error/dimg.rb +6 -0
- data/lib/dapp/git_artifact.rb +19 -20
- data/lib/dapp/git_repo/base.rb +6 -6
- data/lib/dapp/git_repo/own.rb +4 -4
- data/lib/dapp/git_repo/remote.rb +5 -5
- data/lib/dapp/image/docker.rb +0 -15
- data/lib/dapp/image/stage.rb +12 -22
- data/lib/dapp/project.rb +14 -18
- data/lib/dapp/project/command/build.rb +2 -2
- data/lib/dapp/project/command/cleanup.rb +9 -11
- data/lib/dapp/project/command/common.rb +8 -20
- data/lib/dapp/project/command/list.rb +7 -1
- data/lib/dapp/project/command/mrproper.rb +12 -22
- data/lib/dapp/project/command/push.rb +3 -4
- data/lib/dapp/project/command/run.rb +2 -2
- data/lib/dapp/project/command/spush.rb +3 -4
- data/lib/dapp/project/command/stage_image.rb +2 -2
- data/lib/dapp/project/command/stages/cleanup_local.rb +20 -24
- data/lib/dapp/project/command/stages/cleanup_repo.rb +3 -3
- data/lib/dapp/project/command/stages/common.rb +2 -3
- data/lib/dapp/project/command/stages/flush_local.rb +5 -7
- data/lib/dapp/project/command/stages/flush_repo.rb +2 -2
- data/lib/dapp/project/command/stages/pull.rb +3 -4
- data/lib/dapp/project/command/stages/push.rb +3 -4
- data/lib/dapp/project/dappfile.rb +9 -26
- data/lib/dapp/project/logging/base.rb +14 -0
- data/lib/dapp/project/logging/process.rb +1 -1
- data/lib/dapp/project/shellout/system.rb +2 -4
- data/lib/dapp/version.rb +1 -1
- metadata +25 -17
- data/lib/dapp/cli/tag.rb +0 -24
- data/lib/dapp/config/application.rb +0 -288
- data/lib/dapp/config/artifact.rb +0 -20
- data/lib/dapp/config/directive/build_dir.rb +0 -9
- data/lib/dapp/config/directive/git_artifact.rb +0 -59
- data/lib/dapp/config/directive/shell/base.rb +0 -85
- data/lib/dapp/config/directive/tmp_dir.rb +0 -36
- data/lib/dapp/config/main.rb +0 -20
- data/lib/dapp/error/application.rb +0 -6
- data/lib/dapp/project/command/tag.rb +0 -18
@@ -0,0 +1,81 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Config
|
3
|
+
module Directive
|
4
|
+
module Docker
|
5
|
+
# Dimg
|
6
|
+
class Dimg < Base
|
7
|
+
attr_reader :_volume, :_expose, :_env, :_label, :_cmd, :_onbuild, :_workdir, :_user, :_entrypoint
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@_volume = []
|
11
|
+
@_expose = []
|
12
|
+
@_env = {}
|
13
|
+
@_label = {}
|
14
|
+
@_cmd = []
|
15
|
+
@_onbuild = []
|
16
|
+
|
17
|
+
super
|
18
|
+
end
|
19
|
+
|
20
|
+
def volume(*args)
|
21
|
+
@_volume.concat(args)
|
22
|
+
end
|
23
|
+
|
24
|
+
def expose(*args)
|
25
|
+
@_expose.concat(args)
|
26
|
+
end
|
27
|
+
|
28
|
+
def env(**options)
|
29
|
+
@_env.merge!(options)
|
30
|
+
end
|
31
|
+
|
32
|
+
def label(**options)
|
33
|
+
@_label.merge!(options)
|
34
|
+
end
|
35
|
+
|
36
|
+
def cmd(*args)
|
37
|
+
@_cmd.concat(args)
|
38
|
+
end
|
39
|
+
|
40
|
+
def onbuild(*args)
|
41
|
+
@_onbuild.concat(args)
|
42
|
+
end
|
43
|
+
|
44
|
+
def workdir(val)
|
45
|
+
@_workdir = val
|
46
|
+
end
|
47
|
+
|
48
|
+
def user(val)
|
49
|
+
@_user = val
|
50
|
+
end
|
51
|
+
|
52
|
+
def entrypoint(*cmd_with_args)
|
53
|
+
@_entrypoint = cmd_with_args.flatten
|
54
|
+
end
|
55
|
+
|
56
|
+
def _change_options
|
57
|
+
{
|
58
|
+
volume: _volume,
|
59
|
+
expose: _expose,
|
60
|
+
env: _env,
|
61
|
+
label: _label,
|
62
|
+
cmd: _cmd,
|
63
|
+
onbuild: _onbuild,
|
64
|
+
workdir: _workdir,
|
65
|
+
user: _user,
|
66
|
+
entrypoint: _entrypoint
|
67
|
+
}
|
68
|
+
end
|
69
|
+
|
70
|
+
protected
|
71
|
+
|
72
|
+
def clone_to_artifact
|
73
|
+
Artifact.new.tap do |docker|
|
74
|
+
docker.instance_variable_set('@_from', @_from)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Config
|
3
|
+
module Directive
|
4
|
+
# GitArtifactRemote
|
5
|
+
class GitArtifactRemote < GitArtifactLocal
|
6
|
+
attr_reader :_url, :_name, :_branch, :_commit
|
7
|
+
|
8
|
+
def initialize(url)
|
9
|
+
@_url = url
|
10
|
+
@_name = url.gsub(%r{.*?([^\/ ]+)\.git}, '\\1')
|
11
|
+
|
12
|
+
super()
|
13
|
+
end
|
14
|
+
|
15
|
+
def _export
|
16
|
+
super do |export|
|
17
|
+
export._url = @_url
|
18
|
+
export._name = @_name
|
19
|
+
export._branch ||= @_branch
|
20
|
+
export._commit ||= @_commit
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Export
|
25
|
+
class Export < GitArtifactLocal::Export
|
26
|
+
attr_accessor :_url, :_name, :_branch, :_commit
|
27
|
+
|
28
|
+
def _artifact_options
|
29
|
+
super.merge(name: _name, branch: _branch)
|
30
|
+
end
|
31
|
+
|
32
|
+
protected
|
33
|
+
|
34
|
+
def branch(value)
|
35
|
+
@_branch = value
|
36
|
+
end
|
37
|
+
|
38
|
+
def commit(value)
|
39
|
+
@_commit = value
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
protected
|
44
|
+
|
45
|
+
def branch(value)
|
46
|
+
@_branch = value
|
47
|
+
end
|
48
|
+
|
49
|
+
def commit(value)
|
50
|
+
@_commit = value
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Config
|
3
|
+
module Directive
|
4
|
+
# Mount
|
5
|
+
class Mount < Base
|
6
|
+
attr_reader :_from, :_to
|
7
|
+
attr_reader :_type
|
8
|
+
|
9
|
+
def initialize(to)
|
10
|
+
raise Error::Config, code: :mount_to_absolute_path_required unless Pathname((to = to.to_s)).absolute?
|
11
|
+
@_to = to
|
12
|
+
super()
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
def from(path_or_type)
|
18
|
+
path_or_type = path_or_type.to_sym
|
19
|
+
raise Error::Config, code: :mount_from_type_required unless [:tmp_dir, :build_dir].include? path_or_type
|
20
|
+
@_type = path_or_type
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -3,33 +3,12 @@ module Dapp
|
|
3
3
|
module Directive
|
4
4
|
module Shell
|
5
5
|
# Artifact
|
6
|
-
class Artifact <
|
6
|
+
class Artifact < Dimg
|
7
7
|
attr_reader :_build_artifact
|
8
|
-
|
9
|
-
|
10
|
-
def initialize
|
11
|
-
super
|
12
|
-
@_build_artifact = []
|
13
|
-
end
|
14
|
-
|
15
|
-
def build_artifact(*args, cache_version: nil)
|
16
|
-
@_build_artifact.concat(args)
|
17
|
-
@_build_artifact_cache_version = cache_version
|
18
|
-
end
|
19
|
-
|
20
|
-
def reset_build_artifact
|
21
|
-
@_build_artifact = []
|
22
|
-
end
|
23
|
-
|
24
|
-
def reset_all
|
25
|
-
super
|
26
|
-
reset_build_artifact
|
27
|
-
end
|
28
|
-
|
29
|
-
protected
|
8
|
+
stage_command_generator(:build_artifact)
|
30
9
|
|
31
10
|
def empty?
|
32
|
-
super &&
|
11
|
+
super && _build_artifact_command.empty?
|
33
12
|
end
|
34
13
|
end
|
35
14
|
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Config
|
3
|
+
module Directive
|
4
|
+
module Shell
|
5
|
+
# Dimg
|
6
|
+
class Dimg < Directive::Base
|
7
|
+
attr_reader :_version
|
8
|
+
attr_reader :_before_install, :_before_setup, :_install, :_setup
|
9
|
+
|
10
|
+
def version(value)
|
11
|
+
@_version = value
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.stage_command_generator(stage)
|
15
|
+
define_method stage do |&blk|
|
16
|
+
(variable = instance_variable_get("@_#{stage}") || StageCommand.new).instance_eval(&blk)
|
17
|
+
instance_variable_set("@_#{stage}", variable)
|
18
|
+
end
|
19
|
+
|
20
|
+
define_method "_#{stage}_command" do
|
21
|
+
return [] if (variable = instance_variable_get("@_#{stage}")).nil?
|
22
|
+
variable._run
|
23
|
+
end
|
24
|
+
|
25
|
+
define_method "_#{stage}_version" do
|
26
|
+
return [] if (variable = instance_variable_get("@_#{stage}")).nil?
|
27
|
+
variable._version || _version
|
28
|
+
end
|
29
|
+
end
|
30
|
+
[:before_install, :before_setup, :install, :setup].each(&method(:stage_command_generator))
|
31
|
+
|
32
|
+
# StageCommand
|
33
|
+
class StageCommand < Directive::Base
|
34
|
+
attr_reader :_version
|
35
|
+
attr_reader :_run
|
36
|
+
|
37
|
+
def initialize
|
38
|
+
@_run = []
|
39
|
+
super
|
40
|
+
end
|
41
|
+
|
42
|
+
def run(*args)
|
43
|
+
@_run.concat(args)
|
44
|
+
end
|
45
|
+
|
46
|
+
def version(value)
|
47
|
+
@_version = value
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
protected
|
52
|
+
|
53
|
+
def empty?
|
54
|
+
(_before_install_command + _before_setup_command + _install_command + _setup_command).empty?
|
55
|
+
end
|
56
|
+
|
57
|
+
def clone_to_artifact
|
58
|
+
Artifact.new.tap do |shell|
|
59
|
+
instance_variables.each do |variable|
|
60
|
+
shell.instance_variable_set(variable, instance_variable_get(marshal_dup(variable)))
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Dapp
|
2
|
-
#
|
3
|
-
class
|
2
|
+
# Dimg
|
3
|
+
class Dimg
|
4
4
|
include GitArtifact
|
5
5
|
include Path
|
6
6
|
include Tags
|
@@ -20,17 +20,17 @@ module Dapp
|
|
20
20
|
@ignore_git_fetch = ignore_git_fetch
|
21
21
|
@should_be_built = should_be_built
|
22
22
|
|
23
|
-
raise Error::
|
23
|
+
raise Error::Dimg, code: :dimg_not_built if should_be_built?
|
24
24
|
end
|
25
25
|
|
26
26
|
def build!
|
27
27
|
with_introspection do
|
28
|
-
project.lock("#{
|
28
|
+
project.lock("#{project.name}.images", readonly: true) do
|
29
29
|
last_stage.build_lock! do
|
30
30
|
begin
|
31
31
|
last_stage.build!
|
32
32
|
ensure
|
33
|
-
last_stage.save_in_cache! if last_stage.image.built? || dev_mode?
|
33
|
+
last_stage.save_in_cache! if last_stage.image.built? || project.dev_mode?
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -39,30 +39,17 @@ module Dapp
|
|
39
39
|
FileUtils.rm_rf(tmp_path)
|
40
40
|
end
|
41
41
|
|
42
|
-
def tag!(tag)
|
43
|
-
project.lock("#{config._basename}.images", readonly: true) do
|
44
|
-
applicaion_name = config._name
|
45
|
-
if project.dry_run?
|
46
|
-
project.log_state(applicaion_name, state: project.t(code: 'state.tag'), styles: { status: :success })
|
47
|
-
else
|
48
|
-
project.log_process(applicaion_name, process: project.t(code: 'status.process.tagging')) do
|
49
|
-
last_stage.image.tag!(tag)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
42
|
def export!(repo, format:)
|
56
|
-
project.lock("#{
|
43
|
+
project.lock("#{project.name}.images", readonly: true) do
|
57
44
|
tags.each do |tag|
|
58
|
-
image_name = format % { repo: repo,
|
45
|
+
image_name = format % { repo: repo, dimg_name: config._name, tag: tag }
|
59
46
|
export_base!(last_stage.image, image_name)
|
60
47
|
end
|
61
48
|
end
|
62
49
|
end
|
63
50
|
|
64
51
|
def export_stages!(repo, format:)
|
65
|
-
project.lock("#{
|
52
|
+
project.lock("#{project.name}.images", readonly: true) do
|
66
53
|
export_images.each do |image|
|
67
54
|
image_name = format % { repo: repo, signature: image.name.split(':').last }
|
68
55
|
export_base!(image, image_name)
|
@@ -86,7 +73,7 @@ module Dapp
|
|
86
73
|
end
|
87
74
|
|
88
75
|
def import_stages!(repo, format:)
|
89
|
-
project.lock("#{
|
76
|
+
project.lock("#{project.name}.images", readonly: true) do
|
90
77
|
import_images.each do |image|
|
91
78
|
begin
|
92
79
|
image_name = format % { repo: repo, signature: image.name.split(':').last }
|
@@ -119,7 +106,7 @@ module Dapp
|
|
119
106
|
if project.dry_run?
|
120
107
|
project.log(cmd)
|
121
108
|
else
|
122
|
-
system(cmd) || raise(Error::
|
109
|
+
system(cmd) || raise(Error::Dimg, code: :dimg_not_run)
|
123
110
|
end
|
124
111
|
end
|
125
112
|
|
@@ -139,19 +126,11 @@ module Dapp
|
|
139
126
|
config._docker._from.nil?
|
140
127
|
end
|
141
128
|
|
142
|
-
def dev_mode?
|
143
|
-
config._dev_mode || project.dev_mode?
|
144
|
-
end
|
145
|
-
|
146
|
-
def build_cache_version
|
147
|
-
[Dapp::BUILD_CACHE_VERSION, dev_mode? ? 1 : 0]
|
148
|
-
end
|
149
|
-
|
150
129
|
protected
|
151
130
|
|
152
131
|
def should_be_built?
|
153
132
|
should_be_built && begin
|
154
|
-
builder.
|
133
|
+
builder.before_dimg_should_be_built_check
|
155
134
|
!last_stage.image.tagged?
|
156
135
|
end
|
157
136
|
end
|
@@ -165,5 +144,5 @@ module Dapp
|
|
165
144
|
project.shellout!("docker rmi #{data[:built_id]}") if data[:rmi]
|
166
145
|
raise data[:error]
|
167
146
|
end
|
168
|
-
end #
|
147
|
+
end # Dimg
|
169
148
|
end # Dapp
|
@@ -1,10 +1,14 @@
|
|
1
1
|
module Dapp
|
2
|
-
#
|
3
|
-
class
|
2
|
+
# Dimg
|
3
|
+
class Dimg
|
4
4
|
# Path
|
5
5
|
module Path
|
6
6
|
def home_path(*path)
|
7
|
-
make_path(
|
7
|
+
make_path(project.path, *path).expand_path
|
8
|
+
end
|
9
|
+
|
10
|
+
def chef_path(*path)
|
11
|
+
home_path('.dapp_chef', *path)
|
8
12
|
end
|
9
13
|
|
10
14
|
def tmp_path(*path)
|
@@ -13,7 +17,7 @@ module Dapp
|
|
13
17
|
end
|
14
18
|
|
15
19
|
def build_path(*path)
|
16
|
-
make_path(project.build_path
|
20
|
+
make_path(project.build_path, *path).expand_path.tap { |p| p.parent.mkpath }
|
17
21
|
end
|
18
22
|
|
19
23
|
def container_dapp_path(*path)
|
@@ -30,5 +34,5 @@ module Dapp
|
|
30
34
|
path.compact.map(&:to_s).inject(Pathname.new(base), &:+)
|
31
35
|
end
|
32
36
|
end # Path
|
33
|
-
end #
|
37
|
+
end # Dimg
|
34
38
|
end # Dapp
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Dapp
|
2
|
-
#
|
3
|
-
class
|
2
|
+
# Dimg
|
3
|
+
class Dimg
|
4
4
|
# Stages
|
5
5
|
module Stages
|
6
6
|
def signature
|
@@ -8,23 +8,23 @@ module Dapp
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def stage_cache_format
|
11
|
-
"#{project.
|
11
|
+
"#{project.stage_cache}:%{signature}"
|
12
12
|
end
|
13
13
|
|
14
14
|
def stage_dapp_label
|
15
|
-
project.
|
15
|
+
project.stage_dapp_label
|
16
16
|
end
|
17
17
|
|
18
18
|
def images
|
19
19
|
(@images ||= []).tap do |images|
|
20
|
-
stages.
|
20
|
+
stages.map do |stage|
|
21
21
|
if stage.respond_to?(:images)
|
22
22
|
images.concat(stage.images)
|
23
23
|
else
|
24
24
|
images << stage.image
|
25
25
|
end
|
26
|
-
end
|
27
|
-
end
|
26
|
+
end.uniq(&:name)
|
27
|
+
end
|
28
28
|
end
|
29
29
|
|
30
30
|
protected
|
@@ -55,5 +55,5 @@ module Dapp
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end # Stages
|
58
|
-
end #
|
58
|
+
end # Dimg
|
59
59
|
end # Dapp
|