dapp 0.8.0 → 0.9.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 +5 -5
- data/config/en/common.yml +6 -4
- data/config/en/net_status.yml +8 -7
- data/lib/dapp.rb +157 -139
- data/lib/dapp/cli.rb +6 -16
- data/lib/dapp/cli/base.rb +3 -5
- data/lib/dapp/config/base.rb +19 -7
- data/lib/dapp/config/directive/base.rb +0 -1
- data/lib/dapp/config/error/config.rb +7 -0
- data/lib/dapp/core_ext/hash.rb +0 -2
- data/lib/dapp/core_ext/pathname.rb +1 -3
- data/lib/dapp/{project.rb → dapp.rb} +2 -21
- data/lib/dapp/{project → dapp}/chef.rb +2 -4
- data/lib/dapp/{project → dapp}/dappfile.rb +5 -7
- data/lib/dapp/{project → dapp}/deps/base.rb +3 -6
- data/lib/dapp/{project → dapp}/deps/gitartifact.rb +2 -5
- data/lib/dapp/{project → dapp}/git_artifact.rb +2 -4
- data/lib/dapp/{project → dapp}/lock.rb +3 -5
- data/lib/dapp/{project → dapp}/logging/base.rb +2 -5
- data/lib/dapp/{project → dapp}/logging/i18n.rb +2 -3
- data/lib/dapp/{project → dapp}/logging/paint.rb +2 -4
- data/lib/dapp/{project → dapp}/logging/process.rb +2 -5
- data/lib/dapp/{project → dapp}/shellout/base.rb +2 -4
- data/lib/dapp/{project → dapp}/shellout/streaming.rb +3 -8
- data/lib/dapp/{project → dapp}/ssh_agent.rb +6 -9
- data/lib/dapp/dimg.rb +1 -192
- data/lib/dapp/dimg/artifact.rb +24 -0
- data/lib/dapp/dimg/build/stage/after_install_artifact.rb +14 -0
- data/lib/dapp/dimg/build/stage/after_setup_artifact.rb +18 -0
- data/lib/dapp/dimg/build/stage/artifact_base.rb +80 -0
- data/lib/dapp/dimg/build/stage/artifact_default.rb +63 -0
- data/lib/dapp/dimg/build/stage/base.rb +210 -0
- data/lib/dapp/dimg/build/stage/before_install.rb +33 -0
- data/lib/dapp/dimg/build/stage/before_install_artifact.rb +14 -0
- data/lib/dapp/dimg/build/stage/before_setup.rb +31 -0
- data/lib/dapp/dimg/build/stage/before_setup_artifact.rb +14 -0
- data/lib/dapp/dimg/build/stage/build_artifact.rb +31 -0
- data/lib/dapp/dimg/build/stage/docker_instructions.rb +25 -0
- data/lib/dapp/dimg/build/stage/from.rb +50 -0
- data/lib/dapp/dimg/build/stage/ga_archive.rb +28 -0
- data/lib/dapp/dimg/build/stage/ga_archive_dependencies.rb +27 -0
- data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/ga_base.rb +80 -0
- data/lib/dapp/dimg/build/stage/ga_dependencies_base.rb +20 -0
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +54 -0
- data/lib/dapp/dimg/build/stage/import_artifact.rb +64 -0
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +22 -0
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +22 -0
- data/lib/dapp/dimg/build/stage/install/install.rb +35 -0
- data/lib/dapp/dimg/build/stage/mod/group.rb +42 -0
- data/lib/dapp/dimg/build/stage/mod/logging.rb +101 -0
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +32 -0
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +22 -0
- data/lib/dapp/dimg/build/stage/setup/setup.rb +35 -0
- data/lib/dapp/dimg/builder.rb +6 -0
- data/lib/dapp/{builder → dimg/builder}/base.rb +4 -5
- data/lib/dapp/{builder → dimg/builder}/chef.rb +41 -33
- data/lib/dapp/dimg/builder/chef/berksfile.rb +121 -0
- data/lib/dapp/dimg/builder/chef/cookbook.rb +285 -0
- data/lib/dapp/dimg/builder/chef/cookbook_metadata.rb +106 -0
- data/lib/dapp/{builder → dimg/builder}/none.rb +4 -5
- data/lib/dapp/{builder → dimg/builder}/shell.rb +5 -6
- data/lib/dapp/dimg/cli/base.rb +16 -0
- data/lib/dapp/dimg/cli/bp.rb +37 -0
- data/lib/dapp/dimg/cli/build.rb +64 -0
- data/lib/dapp/dimg/cli/build_context.rb +18 -0
- data/lib/dapp/dimg/cli/build_context/export.rb +26 -0
- data/lib/dapp/dimg/cli/build_context/import.rb +17 -0
- data/lib/dapp/dimg/cli/cleanup.rb +22 -0
- data/lib/dapp/dimg/cli/cli.rb +1 -0
- data/lib/dapp/dimg/cli/dimg.rb +30 -0
- data/lib/dapp/dimg/cli/list.rb +17 -0
- data/lib/dapp/dimg/cli/mrproper.rb +26 -0
- data/lib/dapp/dimg/cli/push.rb +61 -0
- data/lib/dapp/dimg/cli/run.rb +59 -0
- data/lib/dapp/{cli → dimg/cli}/spush.rb +7 -7
- data/lib/dapp/dimg/cli/stage_image.rb +24 -0
- data/lib/dapp/dimg/cli/stages.rb +22 -0
- data/lib/dapp/dimg/cli/stages/cleanup_local.rb +44 -0
- data/lib/dapp/dimg/cli/stages/cleanup_repo.rb +26 -0
- data/lib/dapp/dimg/cli/stages/flush_local.rb +23 -0
- data/lib/dapp/dimg/cli/stages/flush_repo.rb +24 -0
- data/lib/dapp/dimg/cli/stages/pull.rb +28 -0
- data/lib/dapp/dimg/cli/stages/push.rb +24 -0
- data/lib/dapp/dimg/cli/tag.rb +24 -0
- data/lib/dapp/dimg/config/artifact_dimg.rb +17 -0
- data/lib/dapp/dimg/config/artifact_group.rb +47 -0
- data/lib/dapp/dimg/config/base.rb +7 -0
- data/lib/dapp/dimg/config/dimg.rb +24 -0
- data/lib/dapp/dimg/config/dimg/instance_methods.rb +177 -0
- data/lib/dapp/dimg/config/dimg/validation.rb +126 -0
- data/lib/dapp/dimg/config/dimg_group.rb +61 -0
- data/lib/dapp/dimg/config/dimg_group_base.rb +54 -0
- data/lib/dapp/dimg/config/dimg_group_main.rb +22 -0
- data/lib/dapp/dimg/config/directive/artifact.rb +70 -0
- data/lib/dapp/dimg/config/directive/artifact_base.rb +97 -0
- data/lib/dapp/dimg/config/directive/base.rb +9 -0
- data/lib/dapp/dimg/config/directive/chef.rb +68 -0
- data/lib/dapp/dimg/config/directive/docker/artifact.rb +15 -0
- data/lib/dapp/dimg/config/directive/docker/base.rb +22 -0
- data/lib/dapp/dimg/config/directive/docker/dimg.rb +82 -0
- data/lib/dapp/dimg/config/directive/git_artifact_local.rb +47 -0
- data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +58 -0
- data/lib/dapp/dimg/config/directive/mount.rb +27 -0
- data/lib/dapp/dimg/config/directive/shell/artifact.rb +18 -0
- data/lib/dapp/dimg/config/directive/shell/dimg.rb +65 -0
- data/lib/dapp/dimg/dapp/command.rb +21 -0
- data/lib/dapp/dimg/dapp/command/bp.rb +20 -0
- data/lib/dapp/dimg/dapp/command/build.rb +22 -0
- data/lib/dapp/dimg/dapp/command/build_context/common.rb +27 -0
- data/lib/dapp/dimg/dapp/command/build_context/export.rb +55 -0
- data/lib/dapp/dimg/dapp/command/build_context/import.rb +71 -0
- data/lib/dapp/dimg/dapp/command/cleanup.rb +23 -0
- data/lib/dapp/dimg/dapp/command/common.rb +96 -0
- data/lib/dapp/dimg/dapp/command/list.rb +19 -0
- data/lib/dapp/dimg/dapp/command/mrproper.rb +75 -0
- data/lib/dapp/dimg/dapp/command/push.rb +27 -0
- data/lib/dapp/dimg/dapp/command/run.rb +15 -0
- data/lib/dapp/dimg/dapp/command/spush.rb +17 -0
- data/lib/dapp/dimg/dapp/command/stage_image.rb +14 -0
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +137 -0
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +124 -0
- data/lib/dapp/dimg/dapp/command/stages/common.rb +85 -0
- data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +21 -0
- data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +21 -0
- data/lib/dapp/dimg/dapp/command/stages/pull.rb +26 -0
- data/lib/dapp/dimg/dapp/command/stages/push.rb +22 -0
- data/lib/dapp/dimg/dapp/command/tag.rb +17 -0
- data/lib/dapp/dimg/dimg.rb +192 -0
- data/lib/dapp/dimg/dimg/git_artifact.rb +26 -0
- data/lib/dapp/dimg/dimg/path.rb +37 -0
- data/lib/dapp/dimg/dimg/stages.rb +60 -0
- data/lib/dapp/dimg/dimg/tags.rb +65 -0
- data/lib/dapp/dimg/docker_registry.rb +37 -0
- data/lib/dapp/dimg/docker_registry/base.rb +109 -0
- data/lib/dapp/dimg/docker_registry/base/authorization.rb +63 -0
- data/lib/dapp/dimg/docker_registry/base/request.rb +34 -0
- data/lib/dapp/dimg/docker_registry/default.rb +18 -0
- data/lib/dapp/dimg/error/base.rb +7 -0
- data/lib/dapp/dimg/error/build.rb +7 -0
- data/lib/dapp/dimg/error/chef.rb +11 -0
- data/lib/dapp/dimg/error/command.rb +7 -0
- data/lib/dapp/dimg/error/config.rb +7 -0
- data/lib/dapp/dimg/error/dimg.rb +7 -0
- data/lib/dapp/dimg/error/lock.rb +7 -0
- data/lib/dapp/dimg/error/registry.rb +7 -0
- data/lib/dapp/dimg/error/rugged.rb +7 -0
- data/lib/dapp/dimg/error/shellout.rb +7 -0
- data/lib/dapp/dimg/error/tar_writer.rb +7 -0
- data/lib/dapp/dimg/exception/base.rb +7 -0
- data/lib/dapp/dimg/exception/introspect_image.rb +7 -0
- data/lib/dapp/dimg/exception/registry.rb +7 -0
- data/lib/dapp/dimg/filelock.rb +43 -0
- data/lib/dapp/dimg/git_artifact.rb +241 -18
- data/lib/dapp/dimg/git_repo/base.rb +90 -0
- data/lib/dapp/dimg/git_repo/own.rb +39 -0
- data/lib/dapp/dimg/git_repo/remote.rb +50 -0
- data/lib/dapp/dimg/image/argument.rb +143 -0
- data/lib/dapp/dimg/image/docker.rb +127 -0
- data/lib/dapp/dimg/image/scratch.rb +32 -0
- data/lib/dapp/dimg/image/stage.rb +95 -0
- data/lib/dapp/dimg/lock/base.rb +51 -0
- data/lib/dapp/dimg/lock/file.rb +48 -0
- data/lib/dapp/error/base.rb +0 -1
- data/lib/dapp/error/dapp.rb +5 -0
- data/lib/dapp/error/dappfile.rb +0 -1
- data/lib/dapp/error/shellout.rb +0 -1
- data/lib/dapp/exception/base.rb +0 -1
- data/lib/dapp/helper/cli.rb +5 -6
- data/lib/dapp/helper/net_status.rb +0 -1
- data/lib/dapp/helper/sha256.rb +0 -1
- data/lib/dapp/helper/trivia.rb +0 -1
- data/lib/dapp/prctl.rb +0 -1
- data/lib/dapp/version.rb +1 -2
- metadata +172 -140
- data/lib/dapp/artifact.rb +0 -23
- data/lib/dapp/build/stage/after_install_artifact.rb +0 -13
- data/lib/dapp/build/stage/after_setup_artifact.rb +0 -17
- data/lib/dapp/build/stage/artifact_base.rb +0 -80
- data/lib/dapp/build/stage/artifact_default.rb +0 -63
- data/lib/dapp/build/stage/base.rb +0 -203
- data/lib/dapp/build/stage/before_install.rb +0 -32
- data/lib/dapp/build/stage/before_install_artifact.rb +0 -13
- data/lib/dapp/build/stage/before_setup.rb +0 -30
- data/lib/dapp/build/stage/before_setup_artifact.rb +0 -13
- data/lib/dapp/build/stage/build_artifact.rb +0 -36
- data/lib/dapp/build/stage/docker_instructions.rb +0 -24
- data/lib/dapp/build/stage/from.rb +0 -34
- data/lib/dapp/build/stage/ga_archive.rb +0 -27
- data/lib/dapp/build/stage/ga_archive_dependencies.rb +0 -26
- data/lib/dapp/build/stage/ga_artifact_patch.rb +0 -21
- data/lib/dapp/build/stage/ga_base.rb +0 -79
- data/lib/dapp/build/stage/ga_dependencies_base.rb +0 -19
- data/lib/dapp/build/stage/ga_latest_patch.rb +0 -53
- data/lib/dapp/build/stage/import_artifact.rb +0 -65
- data/lib/dapp/build/stage/install/ga_post_install_patch.rb +0 -21
- data/lib/dapp/build/stage/install/ga_post_install_patch_dependencies.rb +0 -21
- data/lib/dapp/build/stage/install/ga_pre_install_patch.rb +0 -21
- data/lib/dapp/build/stage/install/ga_pre_install_patch_dependencies.rb +0 -21
- data/lib/dapp/build/stage/install/install.rb +0 -40
- data/lib/dapp/build/stage/mod/group.rb +0 -42
- data/lib/dapp/build/stage/mod/logging.rb +0 -104
- data/lib/dapp/build/stage/setup/ga_post_setup_patch.rb +0 -21
- data/lib/dapp/build/stage/setup/ga_post_setup_patch_dependencies.rb +0 -31
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch.rb +0 -21
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch_dependencies.rb +0 -21
- data/lib/dapp/build/stage/setup/setup.rb +0 -40
- data/lib/dapp/builder/chef/berksfile.rb +0 -78
- data/lib/dapp/builder/chef/cookbook.rb +0 -257
- data/lib/dapp/builder/chef/cookbook_metadata.rb +0 -54
- data/lib/dapp/builder/chef/error.rb +0 -12
- data/lib/dapp/cli/bp.rb +0 -37
- data/lib/dapp/cli/build.rb +0 -60
- data/lib/dapp/cli/cleanup.rb +0 -22
- data/lib/dapp/cli/list.rb +0 -17
- data/lib/dapp/cli/mrproper.rb +0 -26
- data/lib/dapp/cli/push.rb +0 -61
- data/lib/dapp/cli/run.rb +0 -53
- data/lib/dapp/cli/stage_image.rb +0 -24
- data/lib/dapp/cli/stages.rb +0 -23
- data/lib/dapp/cli/stages/cleanup_local.rb +0 -44
- data/lib/dapp/cli/stages/cleanup_repo.rb +0 -26
- data/lib/dapp/cli/stages/flush_local.rb +0 -23
- data/lib/dapp/cli/stages/flush_repo.rb +0 -24
- data/lib/dapp/cli/stages/pull.rb +0 -28
- data/lib/dapp/cli/stages/push.rb +0 -24
- data/lib/dapp/cli/tag.rb +0 -24
- data/lib/dapp/config/artifact_dimg.rb +0 -20
- data/lib/dapp/config/artifact_group.rb +0 -56
- data/lib/dapp/config/dimg.rb +0 -23
- data/lib/dapp/config/dimg/instance_methods.rb +0 -194
- data/lib/dapp/config/dimg/validation.rb +0 -125
- data/lib/dapp/config/dimg_group.rb +0 -60
- data/lib/dapp/config/dimg_group_base.rb +0 -53
- data/lib/dapp/config/dimg_group_main.rb +0 -21
- data/lib/dapp/config/directive/artifact.rb +0 -69
- data/lib/dapp/config/directive/artifact_base.rb +0 -93
- data/lib/dapp/config/directive/chef.rb +0 -57
- data/lib/dapp/config/directive/docker/artifact.rb +0 -15
- data/lib/dapp/config/directive/docker/base.rb +0 -20
- data/lib/dapp/config/directive/docker/dimg.rb +0 -81
- data/lib/dapp/config/directive/git_artifact_local.rb +0 -13
- data/lib/dapp/config/directive/git_artifact_remote.rb +0 -57
- data/lib/dapp/config/directive/mount.rb +0 -26
- data/lib/dapp/config/directive/shell/artifact.rb +0 -17
- data/lib/dapp/config/directive/shell/dimg.rb +0 -65
- data/lib/dapp/dimg/path.rb +0 -37
- data/lib/dapp/dimg/stages.rb +0 -59
- data/lib/dapp/dimg/tags.rb +0 -65
- data/lib/dapp/docker_registry.rb +0 -36
- data/lib/dapp/docker_registry/base.rb +0 -109
- data/lib/dapp/docker_registry/default.rb +0 -18
- data/lib/dapp/docker_registry/mod/authorization.rb +0 -63
- data/lib/dapp/docker_registry/mod/request.rb +0 -32
- data/lib/dapp/error/build.rb +0 -6
- data/lib/dapp/error/config.rb +0 -6
- data/lib/dapp/error/dimg.rb +0 -6
- data/lib/dapp/error/image.rb +0 -6
- data/lib/dapp/error/project.rb +0 -6
- data/lib/dapp/error/registry.rb +0 -6
- data/lib/dapp/error/rugged.rb +0 -6
- data/lib/dapp/error/tar_writer.rb +0 -6
- data/lib/dapp/exception/introspect_image.rb +0 -6
- data/lib/dapp/exception/registry.rb +0 -6
- data/lib/dapp/filelock.rb +0 -43
- data/lib/dapp/git_artifact.rb +0 -241
- data/lib/dapp/git_repo/base.rb +0 -88
- data/lib/dapp/git_repo/own.rb +0 -38
- data/lib/dapp/git_repo/remote.rb +0 -49
- data/lib/dapp/image/argument.rb +0 -134
- data/lib/dapp/image/docker.rb +0 -115
- data/lib/dapp/image/scratch.rb +0 -32
- data/lib/dapp/image/stage.rb +0 -94
- data/lib/dapp/lock/base.rb +0 -51
- data/lib/dapp/lock/error.rb +0 -14
- data/lib/dapp/lock/file.rb +0 -45
- data/lib/dapp/project/command/bp.rb +0 -21
- data/lib/dapp/project/command/build.rb +0 -20
- data/lib/dapp/project/command/cleanup.rb +0 -24
- data/lib/dapp/project/command/common.rb +0 -96
- data/lib/dapp/project/command/list.rb +0 -20
- data/lib/dapp/project/command/mrproper.rb +0 -69
- data/lib/dapp/project/command/push.rb +0 -28
- data/lib/dapp/project/command/run.rb +0 -15
- data/lib/dapp/project/command/spush.rb +0 -18
- data/lib/dapp/project/command/stage_image.rb +0 -15
- data/lib/dapp/project/command/stages/cleanup_local.rb +0 -138
- data/lib/dapp/project/command/stages/cleanup_repo.rb +0 -125
- data/lib/dapp/project/command/stages/common.rb +0 -86
- data/lib/dapp/project/command/stages/flush_local.rb +0 -22
- data/lib/dapp/project/command/stages/flush_repo.rb +0 -22
- data/lib/dapp/project/command/stages/pull.rb +0 -27
- data/lib/dapp/project/command/stages/push.rb +0 -23
- data/lib/dapp/project/command/tag.rb +0 -18
@@ -1,7 +1,6 @@
|
|
1
1
|
module Dapp
|
2
|
-
module
|
3
|
-
|
4
|
-
class Base
|
2
|
+
module Dimg
|
3
|
+
class Builder::Base
|
5
4
|
attr_reader :dimg
|
6
5
|
|
7
6
|
def initialize(dimg)
|
@@ -73,6 +72,6 @@ module Dapp
|
|
73
72
|
def build_artifact_checksum
|
74
73
|
raise
|
75
74
|
end
|
76
|
-
end # Base
|
77
|
-
end #
|
75
|
+
end # Builder::Base
|
76
|
+
end # Dimg
|
78
77
|
end # Dapp
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Dapp
|
2
|
-
module
|
3
|
-
class Chef < Base
|
2
|
+
module Dimg
|
3
|
+
class Builder::Chef < Builder::Base
|
4
4
|
DEFAULT_CHEFDK_IMAGE = 'dappdeps/chefdk:0.17.3-1'.freeze # TODO: config, DSL, DEFAULT_CHEFDK_IMAGE
|
5
5
|
|
6
6
|
%i(before_install install before_setup setup build_artifact).each do |stage|
|
@@ -30,16 +30,16 @@ 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
|
34
|
-
data: {stage: stage}
|
33
|
+
raise Error::Chef, code: :chef_stage_checksum_not_calculated, data: {stage: stage}
|
35
34
|
end
|
36
35
|
end
|
37
36
|
end
|
38
37
|
|
39
38
|
def before_build_check
|
40
39
|
%i(before_install install before_setup setup build_artifact).tap do |stages|
|
41
|
-
(builder_cookbook.enabled_recipes -
|
42
|
-
|
40
|
+
(builder_cookbook.enabled_recipes -
|
41
|
+
stages.map {|stage| builder_cookbook.stage_enabled_recipes(stage)}.flatten.uniq).each do |recipe|
|
42
|
+
dimg.dapp.log_warning(desc: {code: :recipe_does_not_used, data: {recipe: recipe}})
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -54,9 +54,9 @@ module Dapp
|
|
54
54
|
|
55
55
|
def chefdk_container
|
56
56
|
@chefdk_container ||= begin
|
57
|
-
if dimg.
|
58
|
-
dimg.
|
59
|
-
dimg.
|
57
|
+
if dimg.dapp.shellout("docker inspect #{chefdk_container_name}").exitstatus.nonzero?
|
58
|
+
dimg.dapp.log_secondary_process(dimg.dapp.t(code: 'process.chefdk_container_creating'), short: true) do
|
59
|
+
dimg.dapp.shellout!(
|
60
60
|
['docker create',
|
61
61
|
"--name #{chefdk_container_name}",
|
62
62
|
"--volume /.dapp/deps/chefdk #{chefdk_image}"].join(' ')
|
@@ -70,31 +70,39 @@ module Dapp
|
|
70
70
|
|
71
71
|
def builder_cookbook
|
72
72
|
@builder_cookbook ||= begin
|
73
|
-
unless dimg.
|
74
|
-
raise Error,
|
75
|
-
|
73
|
+
unless dimg.dapp.builder_cookbook_path.exist?
|
74
|
+
raise Error,
|
75
|
+
code: :builder_cookbook_not_found,
|
76
|
+
data: {path: dimg.dapp.builder_cookbook_path.to_s}
|
76
77
|
end
|
77
78
|
|
78
|
-
|
79
|
-
raise Error, code: :builder_cookbook_berksfile_not_found,
|
80
|
-
data: {path: dimg.project.builder_cookbook_path.join('Berksfile').to_s}
|
81
|
-
end
|
79
|
+
cookbooks = Marshal.load Marshal.dump(dimg.config._chef._cookbook)
|
82
80
|
|
83
|
-
|
84
|
-
|
85
|
-
|
81
|
+
cookbooks.each do |_name, desc|
|
82
|
+
# Получение относительного пути из директории .dapp_chef до указанной зависимости.
|
83
|
+
# В Dappfile указываются пути относительно самого Dappfile либо абсолютные пути.
|
84
|
+
# В объекте конфига должны лежать абсолютные пути по ключу :path.
|
85
|
+
if desc[:path]
|
86
|
+
relative_from_cookbook_path = Pathname.new(desc[:path]).relative_path_from(dimg.dapp.builder_cookbook_path).to_s
|
87
|
+
desc[:path] = relative_from_cookbook_path
|
88
|
+
end
|
86
89
|
end
|
87
90
|
|
88
|
-
|
89
|
-
|
91
|
+
# Добавление самого cookbook'а builder'а.
|
92
|
+
cookbooks[dimg.dapp.name] = {
|
93
|
+
name: dimg.dapp.name,
|
94
|
+
path: '.'
|
95
|
+
}
|
96
|
+
|
97
|
+
berksfile = Berksfile.from_conf(cookbook_path: dimg.dapp.builder_cookbook_path.to_s, cookbooks: cookbooks)
|
98
|
+
metadata = CookbookMetadata.from_conf(name: dimg.dapp.name, version: '1.0.0', cookbooks: cookbooks)
|
90
99
|
|
91
100
|
Cookbook.new(self,
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
)
|
101
|
+
path: dimg.dapp.builder_cookbook_path,
|
102
|
+
berksfile: berksfile,
|
103
|
+
metadata: metadata,
|
104
|
+
enabled_recipes: dimg.config._chef._recipe,
|
105
|
+
enabled_modules: dimg.config._chef._dimod)
|
98
106
|
end
|
99
107
|
end
|
100
108
|
|
@@ -125,7 +133,7 @@ module Dapp
|
|
125
133
|
end
|
126
134
|
end
|
127
135
|
|
128
|
-
# rubocop:disable Metrics/
|
136
|
+
# rubocop:disable Metrics/PerceivedComplexity
|
129
137
|
def stage_cookbooks_runlist(stage)
|
130
138
|
@stage_cookbooks_runlist ||= {}
|
131
139
|
@stage_cookbooks_runlist[stage] ||= begin
|
@@ -145,8 +153,8 @@ module Dapp
|
|
145
153
|
end.tap {|entries| res.concat entries}
|
146
154
|
|
147
155
|
builder_cookbook.stage_enabled_recipes(stage)
|
148
|
-
|
149
|
-
|
156
|
+
.map {|recipe| [builder_cookbook.name, recipe]}
|
157
|
+
.tap do |entries|
|
150
158
|
if entries.any?
|
151
159
|
res.concat entries
|
152
160
|
else
|
@@ -161,7 +169,7 @@ module Dapp
|
|
161
169
|
end
|
162
170
|
end
|
163
171
|
end
|
164
|
-
# rubocop:enable Metrics/
|
172
|
+
# rubocop:enable Metrics/PerceivedComplexity
|
165
173
|
|
166
174
|
def stage_empty?(stage)
|
167
175
|
stage_cookbooks_runlist(stage).empty?
|
@@ -201,6 +209,6 @@ module Dapp
|
|
201
209
|
def container_stage_build_path(_stage)
|
202
210
|
Pathname.new('/.dapp/chef/build')
|
203
211
|
end
|
204
|
-
end # Chef
|
205
|
-
end #
|
212
|
+
end # Builder::Chef
|
213
|
+
end # Dimg
|
206
214
|
end # Dapp
|
@@ -0,0 +1,121 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
class Builder::Chef::Berksfile
|
4
|
+
attr_accessor :builder
|
5
|
+
attr_reader :cookbook_path
|
6
|
+
attr_reader :local_cookbooks
|
7
|
+
|
8
|
+
def initialize(cookbook_path)
|
9
|
+
@cookbook_path = Pathname.new(cookbook_path)
|
10
|
+
@local_cookbooks = {}
|
11
|
+
end
|
12
|
+
|
13
|
+
def dump
|
14
|
+
builder.send(:dump) # "friend class"
|
15
|
+
end
|
16
|
+
|
17
|
+
def add_local_cookbook_path(name, path)
|
18
|
+
raise(Error::Chef, code: :berksfile_absolute_path_forbidden, data: {cookbook: name, path: path}) if path.start_with? '/'
|
19
|
+
|
20
|
+
desc = {
|
21
|
+
name: name,
|
22
|
+
path: cookbook_path.join(path),
|
23
|
+
chefignore: []
|
24
|
+
}
|
25
|
+
|
26
|
+
if desc[:path].join('chefignore').exist?
|
27
|
+
chefignore_patterns = desc[:path].join('chefignore').read.split("\n").map(&:strip)
|
28
|
+
desc[:chefignore] = Dir[*chefignore_patterns.map {|pattern| desc[:path].join(pattern)}]
|
29
|
+
.map(&Pathname.method(:new))
|
30
|
+
end
|
31
|
+
|
32
|
+
@local_cookbooks[name] = desc
|
33
|
+
end
|
34
|
+
|
35
|
+
def local_cookbook?(name)
|
36
|
+
local_cookbooks.key? name
|
37
|
+
end
|
38
|
+
|
39
|
+
def local_cookbook(name)
|
40
|
+
local_cookbooks[name]
|
41
|
+
end
|
42
|
+
|
43
|
+
class << self
|
44
|
+
def from_file(cookbook_path:, berksfile_file_path:)
|
45
|
+
new(cookbook_path).tap do |berksfile|
|
46
|
+
berksfile.builder = FromFileBuilder.new(berksfile, berksfile_file_path)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def from_conf(cookbook_path:, cookbooks:)
|
51
|
+
new(cookbook_path).tap do |berksfile|
|
52
|
+
berksfile.builder = FromConfBuilder.new(berksfile, cookbooks)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
protected
|
57
|
+
|
58
|
+
def new(*args, &blk)
|
59
|
+
super(*args, &blk)
|
60
|
+
end
|
61
|
+
end # << self
|
62
|
+
|
63
|
+
class Builder
|
64
|
+
def initialize(berksfile)
|
65
|
+
@berksfile = berksfile
|
66
|
+
end
|
67
|
+
|
68
|
+
def cookbook(name, *_args, path: nil, **_kwargs)
|
69
|
+
@berksfile.add_local_cookbook_path(name, path) if path
|
70
|
+
end
|
71
|
+
|
72
|
+
# rubocop:disable Style/MethodMissing
|
73
|
+
def method_missing(*_a, &_blk)
|
74
|
+
end
|
75
|
+
# rubocop:enable Style/MethodMissing
|
76
|
+
|
77
|
+
protected
|
78
|
+
|
79
|
+
def dump
|
80
|
+
raise
|
81
|
+
end
|
82
|
+
end # Builder
|
83
|
+
|
84
|
+
class FromConfBuilder < Builder
|
85
|
+
def initialize(berksfile, cookbooks)
|
86
|
+
super(berksfile)
|
87
|
+
|
88
|
+
@cookbooks = cookbooks
|
89
|
+
|
90
|
+
@cookbooks.each do |name, desc|
|
91
|
+
cookbook(name, desc[:version_constraint], **desc)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def dump
|
96
|
+
[].tap do |lines|
|
97
|
+
lines << "source 'https://supermarket.chef.io'\n\n "
|
98
|
+
@cookbooks.each do |name, desc|
|
99
|
+
params = desc.reject {|key, _value| [:name, :version_constraint].include? key}
|
100
|
+
lines << "cookbook #{name.inspect}, #{desc[:version_constraint].inspect}, #{params.inspect}\n"
|
101
|
+
end
|
102
|
+
end.join
|
103
|
+
end
|
104
|
+
end # FromConfBuilder
|
105
|
+
|
106
|
+
class FromFileBuilder < Builder
|
107
|
+
def initialize(berksfile, berksfile_file_path)
|
108
|
+
super(berksfile)
|
109
|
+
|
110
|
+
@berksfile_file_path = berksfile_file_path
|
111
|
+
|
112
|
+
instance_eval(@berksfile_file_path.read, @berksfile_file_path.to_s)
|
113
|
+
end
|
114
|
+
|
115
|
+
def dump
|
116
|
+
@berksfile_file_path.read
|
117
|
+
end
|
118
|
+
end # FileParser
|
119
|
+
end # Builder::Chef::Berksfile
|
120
|
+
end # Dimg
|
121
|
+
end # Dapp
|
@@ -0,0 +1,285 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
# Локальный cookbook сборщик с правилами
|
4
|
+
# сборки dimg образов для chef сборщика.
|
5
|
+
class Builder::Chef::Cookbook
|
6
|
+
CACHE_VERSION = 1
|
7
|
+
|
8
|
+
CHECKSUM_PATTERNS = %w(
|
9
|
+
attributes/**/*
|
10
|
+
recipes/**/*
|
11
|
+
files/**/*
|
12
|
+
templates/**/*
|
13
|
+
).freeze
|
14
|
+
|
15
|
+
attr_reader :builder
|
16
|
+
|
17
|
+
attr_reader :path
|
18
|
+
attr_reader :vendor_path
|
19
|
+
attr_reader :berksfile
|
20
|
+
attr_reader :metadata
|
21
|
+
attr_reader :enabled_recipes
|
22
|
+
attr_reader :enabled_modules
|
23
|
+
|
24
|
+
# rubocop:disable Metrics/ParameterLists
|
25
|
+
def initialize(builder, path:, berksfile:, metadata:, enabled_recipes:, enabled_modules:)
|
26
|
+
@builder = builder
|
27
|
+
@path = Pathname.new(path)
|
28
|
+
@berksfile = berksfile
|
29
|
+
@metadata = metadata
|
30
|
+
@enabled_recipes = enabled_recipes
|
31
|
+
@enabled_modules = enabled_modules
|
32
|
+
end
|
33
|
+
# rubocop:enable Metrics/ParameterLists
|
34
|
+
|
35
|
+
def name
|
36
|
+
metadata.name
|
37
|
+
end
|
38
|
+
|
39
|
+
def local_paths
|
40
|
+
@local_paths ||= [].tap do |paths|
|
41
|
+
paths << path
|
42
|
+
paths.push(*berksfile.local_cookbooks.values.map {|cookbook| cookbook[:path]})
|
43
|
+
paths.uniq!
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# TODO: Сookbook'и зависимости на локальной файловой системе
|
48
|
+
# TODO: должны обрабатываться рекурсивно. Чтобы контрольная сумма
|
49
|
+
# TODO: учитывала все зависимости всех зависимых локальных cookbook'ов.
|
50
|
+
def checksum
|
51
|
+
@checksum ||= begin
|
52
|
+
all_local_paths = local_paths
|
53
|
+
.product(CHECKSUM_PATTERNS)
|
54
|
+
.map {|cb, dir| Dir[cb.join(dir)]}
|
55
|
+
.flatten
|
56
|
+
.map(&Pathname.method(:new))
|
57
|
+
|
58
|
+
builder.dimg.hashsum [
|
59
|
+
CACHE_VERSION,
|
60
|
+
builder.dimg.paths_content_hashsum(all_local_paths),
|
61
|
+
*all_local_paths.map {|p| p.relative_path_from(path).to_s}.sort,
|
62
|
+
berksfile.dump,
|
63
|
+
metadata.dump
|
64
|
+
].compact
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def vendor_path
|
69
|
+
builder.dimg.dapp.lock(_vendor_lock_name, default_timeout: 120) do
|
70
|
+
vendor! unless _vendor_path.join('.created_at').exist?
|
71
|
+
end
|
72
|
+
_vendor_path
|
73
|
+
end
|
74
|
+
|
75
|
+
# rubocop:disable Metrics/AbcSize
|
76
|
+
def vendor!
|
77
|
+
volumes_from = [builder.dimg.dapp.base_container, builder.chefdk_container]
|
78
|
+
|
79
|
+
builder.dimg.dapp.log_secondary_process(builder.dimg.dapp.t(code: _vendor_process_name)) do
|
80
|
+
volumes_from = [builder.dimg.dapp.base_container, builder.chefdk_container]
|
81
|
+
|
82
|
+
tmp_berksfile_path = builder.dimg.tmp_path.join("Berksfile.#{SecureRandom.uuid}")
|
83
|
+
File.open(tmp_berksfile_path, 'w') {|file| file.write berksfile.dump}
|
84
|
+
|
85
|
+
tmp_metadata_path = builder.dimg.tmp_path.join("metadata.rb.#{SecureRandom.uuid}")
|
86
|
+
File.open(tmp_metadata_path, 'w') {|file| file.write metadata.dump}
|
87
|
+
|
88
|
+
vendor_commands = [
|
89
|
+
"#{builder.dimg.dapp.mkdir_bin} -p ~/.ssh",
|
90
|
+
'echo "Host *" >> ~/.ssh/config',
|
91
|
+
'echo " StrictHostKeyChecking no" >> ~/.ssh/config',
|
92
|
+
*local_paths.map {|path| "#{builder.dimg.dapp.rsync_bin} --archive --relative #{path} /tmp/local_cookbooks"},
|
93
|
+
"cd /tmp/local_cookbooks/#{path}",
|
94
|
+
"cp #{tmp_berksfile_path} Berksfile",
|
95
|
+
"cp #{tmp_metadata_path} metadata.rb",
|
96
|
+
'/.dapp/deps/chefdk/bin/berks vendor /tmp/cookbooks',
|
97
|
+
["#{builder.dimg.dapp.find_bin} /tmp/cookbooks -type d -exec #{builder.dimg.dapp.bash_bin} -ec '",
|
98
|
+
"#{builder.dimg.dapp.install_bin} -o #{Process.uid} -g #{Process.gid} ",
|
99
|
+
"--mode $(#{builder.dimg.dapp.stat_bin} -c %a {}) -d ",
|
100
|
+
"#{_vendor_path}/$(echo {} | #{builder.dimg.dapp.sed_bin} -e \"s/^\\/tmp\\/cookbooks//\")' \\;"].join,
|
101
|
+
["#{builder.dimg.dapp.find_bin} /tmp/cookbooks -type f -exec #{builder.dimg.dapp.bash_bin} -ec '",
|
102
|
+
"#{builder.dimg.dapp.install_bin} -o #{Process.uid} -g #{Process.gid} ",
|
103
|
+
"--mode $(#{builder.dimg.dapp.stat_bin} -c %a {}) {} ",
|
104
|
+
"#{_vendor_path}/$(echo {} | #{builder.dimg.dapp.sed_bin} -e \"s/\\/tmp\\/cookbooks//\")' \\;"].join,
|
105
|
+
["#{builder.dimg.dapp.install_bin} -o #{Process.uid} -g #{Process.gid} ",
|
106
|
+
"--mode 0644 <(#{builder.dimg.dapp.date_bin} +%s.%N) #{_vendor_path.join('.created_at')}"].join
|
107
|
+
]
|
108
|
+
|
109
|
+
builder.dimg.dapp.shellout!(
|
110
|
+
[ 'docker run --rm',
|
111
|
+
volumes_from.map {|container| "--volumes-from #{container}"}.join(' '),
|
112
|
+
*local_paths.map {|path| "--volume #{path}:#{path}"},
|
113
|
+
"--volume #{builder.dimg.tmp_path}:#{builder.dimg.tmp_path}",
|
114
|
+
("--volume #{builder.dimg.dapp.ssh_auth_sock}:/tmp/dapp-ssh-agent" if builder.dimg.dapp.ssh_auth_sock),
|
115
|
+
"--volume #{_vendor_path.tap(&:mkpath)}:#{_vendor_path}",
|
116
|
+
('--env SSH_AUTH_SOCK=/tmp/dapp-ssh-agent' if builder.dimg.dapp.ssh_auth_sock),
|
117
|
+
''.tap do |cmd|
|
118
|
+
cmd << "dappdeps/berksdeps:0.1.0 #{builder.dimg.dapp.bash_bin}"
|
119
|
+
cmd << " -ec '#{builder.dimg.dapp.shellout_pack(vendor_commands.join(' && '))}'"
|
120
|
+
end ].compact.join(' '),
|
121
|
+
log_verbose: builder.dimg.dapp.log_verbose?
|
122
|
+
)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
# rubocop:enable Metrics/AbcSize
|
126
|
+
|
127
|
+
def stage_cookbooks_path(stage)
|
128
|
+
_stage_cookbooks_path(stage).tap do |_cookbooks_path|
|
129
|
+
@stage_cookbooks_installed ||= {}
|
130
|
+
@stage_cookbooks_installed[stage] ||= true.tap {install_stage_cookbooks(stage)}
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def stage_enabled_modules(stage)
|
135
|
+
@stage_enabled_modules ||= {}
|
136
|
+
@stage_enabled_modules[stage] ||= enabled_modules.select {|cookbook| stage_entry_exist?(stage, cookbook, stage)}
|
137
|
+
end
|
138
|
+
|
139
|
+
def stage_enabled_recipes(stage)
|
140
|
+
@stage_enabled_recipes ||= {}
|
141
|
+
@stage_enabled_recipes[stage] ||= enabled_recipes.select {|recipe| stage_entry_exist?(stage, name, recipe)}
|
142
|
+
end
|
143
|
+
|
144
|
+
def stage_checksum(stage)
|
145
|
+
paths = Dir[stage_cookbooks_path(stage).join('**/*')].map(&Pathname.method(:new))
|
146
|
+
|
147
|
+
builder.dimg.hashsum [
|
148
|
+
builder.dimg.paths_content_hashsum(paths),
|
149
|
+
*paths.map {|p| p.relative_path_from(stage_cookbooks_path(stage)).to_s}.sort,
|
150
|
+
stage == :before_install ? builder.chefdk_image : nil
|
151
|
+
].compact
|
152
|
+
end
|
153
|
+
|
154
|
+
protected
|
155
|
+
|
156
|
+
def _vendor_path
|
157
|
+
builder.dimg.build_path.join('cookbooks', checksum)
|
158
|
+
end
|
159
|
+
|
160
|
+
def _vendor_process_name
|
161
|
+
'process.vendoring_builder_cookbooks'
|
162
|
+
end
|
163
|
+
|
164
|
+
def _vendor_lock_name
|
165
|
+
"#{builder.dimg.dapp.name}.cookbooks.#{checksum}"
|
166
|
+
end
|
167
|
+
|
168
|
+
def stage_entry_exist?(stage, cookbook, entrypoint)
|
169
|
+
stage_cookbooks_path(stage).join(cookbook, 'recipes', "#{entrypoint}.rb").exist?
|
170
|
+
end
|
171
|
+
|
172
|
+
def install_stage_cookbooks(stage)
|
173
|
+
_stage_cookbooks_path(stage).mkpath
|
174
|
+
|
175
|
+
stage_install_paths(stage).each do |cookbook_path, paths|
|
176
|
+
cookbook = cookbook_path.basename.to_s
|
177
|
+
|
178
|
+
paths.each do |from, to|
|
179
|
+
if from.nil?
|
180
|
+
to_path = _stage_cookbooks_path(stage).join(cookbook, 'recipes/void.rb')
|
181
|
+
to_path.parent.mkpath
|
182
|
+
FileUtils.touch to_path
|
183
|
+
else
|
184
|
+
from_path = cookbook_path.join(from)
|
185
|
+
to_path = _stage_cookbooks_path(stage).join(cookbook, to)
|
186
|
+
if from_path.directory? && to_path.exist?
|
187
|
+
Dir[from_path.join('**/*')]
|
188
|
+
.map(&Pathname.method(:new))
|
189
|
+
.each do |from_subpath|
|
190
|
+
to_subpath = to_path.join(from_subpath.relative_path_from(from_path))
|
191
|
+
if to_subpath.exist?
|
192
|
+
raise(Error::Chef,
|
193
|
+
code: :stage_path_overlap,
|
194
|
+
data: { stage: stage,
|
195
|
+
cookbook: cookbook,
|
196
|
+
from: from_subpath.relative_path_from(cookbook_path),
|
197
|
+
to: to_subpath.relative_path_from(_stage_cookbooks_path(stage).join(cookbook)) })
|
198
|
+
end
|
199
|
+
|
200
|
+
to_subpath.parent.mkpath
|
201
|
+
FileUtils.cp_r from_subpath, to_subpath
|
202
|
+
end
|
203
|
+
else
|
204
|
+
to_path.parent.mkpath
|
205
|
+
FileUtils.cp_r from_path, to_path
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
# rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/MethodLength
|
213
|
+
def stage_install_paths(stage)
|
214
|
+
select_existing_paths = proc do |cookbook_path, paths|
|
215
|
+
paths.select {|from, _| cookbook_path.join(from).exist?}
|
216
|
+
end
|
217
|
+
|
218
|
+
common_paths = [['metadata.json', 'metadata.json']]
|
219
|
+
|
220
|
+
Dir[vendor_path.join('*')]
|
221
|
+
.map(&Pathname.method(:new))
|
222
|
+
.map do |cookbook_path|
|
223
|
+
cookbook_name = File.basename cookbook_path
|
224
|
+
is_builder = (cookbook_name == name)
|
225
|
+
is_dimod = cookbook_name.start_with? 'dimod-'
|
226
|
+
dimod_enabled = is_dimod && enabled_modules.include?(cookbook_name)
|
227
|
+
|
228
|
+
paths = if is_builder
|
229
|
+
common_dapp_paths = select_existing_paths.call(
|
230
|
+
cookbook_path,
|
231
|
+
[
|
232
|
+
*common_paths,
|
233
|
+
["files/#{stage}/common", 'files/default'],
|
234
|
+
["templates/#{stage}/common", 'templates/default'],
|
235
|
+
*enabled_recipes.flat_map do |recipe|
|
236
|
+
[["files/#{stage}/#{recipe}", 'files/default'],
|
237
|
+
["templates/#{stage}/#{recipe}", 'templates/default']]
|
238
|
+
end
|
239
|
+
]
|
240
|
+
)
|
241
|
+
|
242
|
+
recipe_paths = enabled_recipes
|
243
|
+
.map {|recipe| ["recipes/#{stage}/#{recipe}.rb", "recipes/#{recipe}.rb"]}
|
244
|
+
.select {|from, _| cookbook_path.join(from).exist?}
|
245
|
+
|
246
|
+
if recipe_paths.any?
|
247
|
+
[*recipe_paths, *common_dapp_paths]
|
248
|
+
else
|
249
|
+
[nil, *common_dapp_paths]
|
250
|
+
end
|
251
|
+
elsif is_dimod && dimod_enabled
|
252
|
+
common_dimod_paths = select_existing_paths.call(
|
253
|
+
cookbook_path,
|
254
|
+
[
|
255
|
+
*common_paths,
|
256
|
+
["files/#{stage}", 'files/default'],
|
257
|
+
['files/common', 'files/default'],
|
258
|
+
["templates/#{stage}", 'templates/default'],
|
259
|
+
['templates/common', 'templates/default'],
|
260
|
+
["attributes/#{stage}.rb", "attributes/#{stage}.rb"],
|
261
|
+
['attributes/common.rb', 'attributes/common.rb']
|
262
|
+
]
|
263
|
+
)
|
264
|
+
|
265
|
+
recipe_path = "recipes/#{stage}.rb"
|
266
|
+
if cookbook_path.join(recipe_path).exist?
|
267
|
+
[[recipe_path, recipe_path], *common_dimod_paths]
|
268
|
+
else
|
269
|
+
[nil, *common_dimod_paths]
|
270
|
+
end
|
271
|
+
elsif !is_dimod
|
272
|
+
[['.', '.']]
|
273
|
+
end
|
274
|
+
|
275
|
+
[cookbook_path, paths] if paths && paths.any?
|
276
|
+
end.compact
|
277
|
+
end
|
278
|
+
# rubocop:enable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/MethodLength
|
279
|
+
|
280
|
+
def _stage_cookbooks_path(stage)
|
281
|
+
builder.stage_build_path(stage).join('cookbooks')
|
282
|
+
end
|
283
|
+
end # Builder::Chef::Cookbook
|
284
|
+
end # Dimg
|
285
|
+
end # Dapp
|