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
@@ -0,0 +1,126 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
class Dimg < Base
|
5
|
+
module Validation
|
6
|
+
protected
|
7
|
+
|
8
|
+
def validate!
|
9
|
+
directives_validate!
|
10
|
+
validate_scratch!
|
11
|
+
validate_artifacts!
|
12
|
+
validate_artifacts_artifacts!
|
13
|
+
end
|
14
|
+
|
15
|
+
def validate_scratch!
|
16
|
+
if _docker._from.nil?
|
17
|
+
validate_scratch_directives!
|
18
|
+
validate_scratch_artifacts!
|
19
|
+
else
|
20
|
+
raise Error::Config, code: :stage_artifact_not_associated unless _import_artifact.empty?
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def directives_validate!
|
25
|
+
passed_directives.each do |v|
|
26
|
+
next if (value = instance_variable_get(v)).nil?
|
27
|
+
Array(value).each do |elm|
|
28
|
+
elm.send(:validate!) if elm.methods.include?(:validate!)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def validate_scratch_directives!
|
34
|
+
directives = [[:_shell, :shell], [:_chef, :chef], [:_git_artifact, :git],
|
35
|
+
[:_tmp_dir_mount, :mount], [:_build_dir_mount, :mount]]
|
36
|
+
directives.each do |name, user_name|
|
37
|
+
raise Error::Config,
|
38
|
+
code: :scratch_unsupported_directive,
|
39
|
+
data: { directive: user_name } unless public_send(name).send(:empty?)
|
40
|
+
end
|
41
|
+
|
42
|
+
docker_directives = [:_expose, :_env, :_cmd, :_onbuild, :_workdir, :_user, :_entrypoint]
|
43
|
+
docker_directives.each do |directive|
|
44
|
+
value = _docker.public_send(directive)
|
45
|
+
raise Error::Config,
|
46
|
+
code: :scratch_unsupported_directive,
|
47
|
+
data: { directive: "docker.#{directive}" } unless value.nil? || value.send(:empty?)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def validate_scratch_artifacts!
|
52
|
+
raise Error::Config, code: :scratch_artifact_associated unless _associated_artifacts.empty?
|
53
|
+
raise Error::Config, code: :scratch_artifact_required if _import_artifact.empty?
|
54
|
+
_import_artifact.each do |artifact|
|
55
|
+
raise Error::Config, code: :scratch_artifact_docker_from if artifact._config._docker._from.nil?
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def validate_artifacts_artifacts!
|
60
|
+
_artifact.each { |artifact_dimg| artifact_dimg._config.validate! }
|
61
|
+
end
|
62
|
+
|
63
|
+
def validate_artifacts!
|
64
|
+
artifacts = validate_artifact_format(validated_artifacts)
|
65
|
+
loop do
|
66
|
+
break if artifacts.empty?
|
67
|
+
verifiable_artifact = artifacts.shift
|
68
|
+
artifacts.select { |a| a[:to] == verifiable_artifact[:to] }.each do |artifact|
|
69
|
+
next if verifiable_artifact[:index] == artifact[:index]
|
70
|
+
validate_artifact!(verifiable_artifact, artifact)
|
71
|
+
validate_artifact!(artifact, verifiable_artifact)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def validate_artifact_format(artifacts)
|
77
|
+
artifacts.map do |a|
|
78
|
+
path_format = proc { |path| File.expand_path(File.join('/', path, '/'))[1..-1] }
|
79
|
+
|
80
|
+
path_format.call(a._to) =~ %r{^([^\/]*)\/?(.*)$}
|
81
|
+
to = Regexp.last_match(1)
|
82
|
+
include_paths = a._include_paths.dup
|
83
|
+
include_paths << Regexp.last_match(2) unless Regexp.last_match(2).empty?
|
84
|
+
exclude_paths = a._exclude_paths.dup
|
85
|
+
|
86
|
+
{
|
87
|
+
index: artifacts.index(a),
|
88
|
+
to: to,
|
89
|
+
include_paths: include_paths.map(&path_format),
|
90
|
+
exclude_paths: exclude_paths.map(&path_format)
|
91
|
+
}
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def validate_artifact!(verifiable_artifact, artifact)
|
96
|
+
verifiable_artifact[:include_paths].each do |verifiable_path|
|
97
|
+
potential_conflicts = artifact[:include_paths].select { |path| path.start_with?(verifiable_path) }
|
98
|
+
validate_artifact_path!(verifiable_artifact, potential_conflicts)
|
99
|
+
end.empty? && verifiable_artifact[:exclude_paths].empty? && raise(Error::Config, code: :artifact_conflict)
|
100
|
+
validate_artifact_path!(verifiable_artifact, artifact[:include_paths]) if verifiable_artifact[:include_paths].empty?
|
101
|
+
end
|
102
|
+
|
103
|
+
def validate_artifact_path!(verifiable_artifact, potential_conflicts)
|
104
|
+
potential_conflicts.all? do |path|
|
105
|
+
loop do
|
106
|
+
break if verifiable_artifact[:exclude_paths].include?(path) || ((path = File.dirname(path)) == '.')
|
107
|
+
end
|
108
|
+
verifiable_artifact[:exclude_paths].include?(path)
|
109
|
+
end.tap { |res| res || raise(Error::Config, code: :artifact_conflict) }
|
110
|
+
end
|
111
|
+
|
112
|
+
def _associated_artifacts
|
113
|
+
_artifact.select do |art|
|
114
|
+
!(art._before.nil? && art._after.nil?)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def validated_artifacts
|
119
|
+
_artifact + _git_artifact._local + _git_artifact._remote
|
120
|
+
end
|
121
|
+
end # Validation
|
122
|
+
# rubocop:enable Metrics/ModuleLength
|
123
|
+
end # Dimg
|
124
|
+
end # Config
|
125
|
+
end # Dimg
|
126
|
+
end # Dapp
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
class DimgGroup < DimgGroupBase
|
5
|
+
include Dimg::InstanceMethods
|
6
|
+
|
7
|
+
def chef(&blk)
|
8
|
+
check_dimg_directive_order(:chef)
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def shell(&blk)
|
13
|
+
check_dimg_directive_order(:shell)
|
14
|
+
super
|
15
|
+
end
|
16
|
+
|
17
|
+
def docker(&blk)
|
18
|
+
check_dimg_directive_order(:docker)
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
def artifact(&blk)
|
23
|
+
check_dimg_group_directive_order(:artifact)
|
24
|
+
super
|
25
|
+
end
|
26
|
+
|
27
|
+
def git(url = nil, &blk)
|
28
|
+
check_dimg_directive_order(:git)
|
29
|
+
super
|
30
|
+
end
|
31
|
+
|
32
|
+
def mount(to, &blk)
|
33
|
+
check_dimg_directive_order(:mount)
|
34
|
+
super
|
35
|
+
end
|
36
|
+
|
37
|
+
protected
|
38
|
+
|
39
|
+
def before_dimg_eval(dimg)
|
40
|
+
pass_to_default(dimg)
|
41
|
+
end
|
42
|
+
|
43
|
+
def before_dimg_group_eval(dimg_group)
|
44
|
+
pass_to_default(dimg_group)
|
45
|
+
end
|
46
|
+
|
47
|
+
def check_dimg_directive_order(directive)
|
48
|
+
dapp.log_config_warning(desc: { code: 'wrong_using_base_directive',
|
49
|
+
data: { directive: directive },
|
50
|
+
context: 'warning' }) if _dimg.any? || _dimg_group.any? || _artifact.any?
|
51
|
+
end
|
52
|
+
|
53
|
+
def check_dimg_group_directive_order(directive)
|
54
|
+
dapp.log_config_warning(desc: { code: 'wrong_using_directive',
|
55
|
+
data: { directive: directive },
|
56
|
+
context: 'warning' }) if _dimg.any? || _dimg_group.any?
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
class DimgGroupBase < Base
|
5
|
+
attr_reader :_dimg_group
|
6
|
+
|
7
|
+
def initialize(dapp:)
|
8
|
+
@_dimg = []
|
9
|
+
@_dimg_group = []
|
10
|
+
|
11
|
+
super(dapp: dapp)
|
12
|
+
end
|
13
|
+
|
14
|
+
def dev_mode
|
15
|
+
@_dev_mode = true
|
16
|
+
end
|
17
|
+
|
18
|
+
def dimg(name = nil, &blk)
|
19
|
+
Config::Dimg.new(name, dapp: dapp).tap do |dimg|
|
20
|
+
before_dimg_eval(dimg)
|
21
|
+
dimg.instance_eval(&blk) if block_given?
|
22
|
+
@_dimg << dimg
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def dimg_group(&blk)
|
27
|
+
Config::DimgGroup.new(dapp: dapp).tap do |dimg_group|
|
28
|
+
before_dimg_group_eval(dimg_group)
|
29
|
+
dimg_group.instance_eval(&blk) if block_given?
|
30
|
+
@_dimg_group << dimg_group
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def _dimg
|
35
|
+
(@_dimg + @_dimg_group.map(&:_dimg)).flatten
|
36
|
+
end
|
37
|
+
|
38
|
+
protected
|
39
|
+
|
40
|
+
def before_dimg_eval(dimg)
|
41
|
+
pass_to_default(dimg)
|
42
|
+
end
|
43
|
+
|
44
|
+
def before_dimg_group_eval(dimg_group)
|
45
|
+
pass_to_default(dimg_group)
|
46
|
+
end
|
47
|
+
|
48
|
+
def pass_to_default(obj)
|
49
|
+
obj.instance_variable_set(:@_dev_mode, @_dev_mode)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
class DimgGroupMain < DimgGroupBase
|
5
|
+
def dimg(name = nil, &blk)
|
6
|
+
with_dimg_validation { super(name, &blk) }
|
7
|
+
end
|
8
|
+
|
9
|
+
def dimg_group(&blk)
|
10
|
+
with_dimg_validation { super(&blk) }
|
11
|
+
end
|
12
|
+
|
13
|
+
protected
|
14
|
+
|
15
|
+
def with_dimg_validation
|
16
|
+
yield
|
17
|
+
raise Error::Config, code: :dimg_name_required if _dimg.any? { |dimg| dimg._name.nil? } && _dimg.size > 1
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
module Directive
|
5
|
+
class Artifact < ArtifactBase
|
6
|
+
attr_reader :_config
|
7
|
+
|
8
|
+
def initialize(config:, **kwargs, &blk)
|
9
|
+
@_config = config
|
10
|
+
|
11
|
+
super(**kwargs, &blk)
|
12
|
+
end
|
13
|
+
|
14
|
+
def _export
|
15
|
+
super do |export|
|
16
|
+
export._before ||= @_before
|
17
|
+
export._after ||= @_after
|
18
|
+
export._config = _config
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Export < ArtifactBase::Export
|
23
|
+
attr_accessor :_config
|
24
|
+
attr_accessor :_before, :_after
|
25
|
+
|
26
|
+
def not_associated?
|
27
|
+
(_before || _after).nil?
|
28
|
+
end
|
29
|
+
|
30
|
+
protected
|
31
|
+
|
32
|
+
def before(stage)
|
33
|
+
stage = stage.to_sym
|
34
|
+
associate_validation!(:before, stage, @_before)
|
35
|
+
@_before = stage
|
36
|
+
end
|
37
|
+
|
38
|
+
def after(stage)
|
39
|
+
stage = stage.to_sym
|
40
|
+
associate_validation!(:after, stage, @_after)
|
41
|
+
@_after = stage
|
42
|
+
end
|
43
|
+
|
44
|
+
def associate_validation!(type, stage, _old_stage)
|
45
|
+
conflict_type = [:before, :after].find { |t| t != type }
|
46
|
+
conflict_stage = send("_#{conflict_type}")
|
47
|
+
|
48
|
+
raise Error::Config, code: :stage_artifact_not_supported_associated_stage,
|
49
|
+
data: { stage: "#{type} #{stage.inspect}" } unless [:install, :setup].include? stage
|
50
|
+
|
51
|
+
raise Error::Config, code: :stage_artifact_double_associate,
|
52
|
+
data: { stage: "#{type} #{stage.inspect}",
|
53
|
+
conflict_stage: "#{conflict_type} #{conflict_stage.inspect}" } if conflict_stage
|
54
|
+
|
55
|
+
defined_stage = send("_#{type}")
|
56
|
+
dapp.log_config_warning(
|
57
|
+
desc: {
|
58
|
+
code: :stage_artifact_rewritten,
|
59
|
+
context: :warning,
|
60
|
+
data: { stage: "#{type} #{stage.inspect}",
|
61
|
+
conflict_stage: "#{type} #{defined_stage.inspect}" }
|
62
|
+
}
|
63
|
+
) if defined_stage
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
module Directive
|
5
|
+
class ArtifactBase < Base
|
6
|
+
attr_reader :_owner, :_group
|
7
|
+
|
8
|
+
def initialize(**kwargs, &blk)
|
9
|
+
@_export = []
|
10
|
+
|
11
|
+
super(**kwargs, &blk)
|
12
|
+
end
|
13
|
+
|
14
|
+
def _export
|
15
|
+
@_export.each do |export|
|
16
|
+
export._owner ||= @_owner
|
17
|
+
export._group ||= @_group
|
18
|
+
|
19
|
+
yield(export) if block_given?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class Export < Directive::Base
|
24
|
+
attr_accessor :_cwd, :_to, :_include_paths, :_exclude_paths, :_owner, :_group
|
25
|
+
|
26
|
+
def initialize(cwd = '/', **kwargs, &blk)
|
27
|
+
raise Error::Config, code: :export_cwd_absolute_path_required unless Pathname(cwd).absolute?
|
28
|
+
@_cwd = path_format(cwd)
|
29
|
+
@_include_paths ||= []
|
30
|
+
@_exclude_paths ||= []
|
31
|
+
|
32
|
+
super(**kwargs, &blk)
|
33
|
+
end
|
34
|
+
|
35
|
+
def _artifact_options
|
36
|
+
{
|
37
|
+
to: _to,
|
38
|
+
cwd: _cwd,
|
39
|
+
include_paths: _include_paths,
|
40
|
+
exclude_paths: _exclude_paths,
|
41
|
+
owner: _owner,
|
42
|
+
group: _group
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
protected
|
47
|
+
|
48
|
+
def to(absolute_path)
|
49
|
+
raise Error::Config, code: :export_to_absolute_path_required unless Pathname(absolute_path).absolute?
|
50
|
+
@_to = path_format(absolute_path)
|
51
|
+
end
|
52
|
+
|
53
|
+
def include_paths(*relative_paths)
|
54
|
+
unless relative_paths.all? { |path| Pathname(path).relative? }
|
55
|
+
raise Error::Config, code: :export_include_paths_relative_path_required
|
56
|
+
end
|
57
|
+
_include_paths.concat(relative_paths.map(&method(:path_format)))
|
58
|
+
end
|
59
|
+
|
60
|
+
def exclude_paths(*relative_paths)
|
61
|
+
unless relative_paths.all? { |path| Pathname(path).relative? }
|
62
|
+
raise Error::Config, code: :export_exclude_paths_relative_path_required
|
63
|
+
end
|
64
|
+
_exclude_paths.concat(relative_paths.map(&method(:path_format)))
|
65
|
+
end
|
66
|
+
|
67
|
+
def owner(owner)
|
68
|
+
@_owner = owner
|
69
|
+
end
|
70
|
+
|
71
|
+
def group(group)
|
72
|
+
@_group = group
|
73
|
+
end
|
74
|
+
|
75
|
+
def validate!
|
76
|
+
raise Error::Config, code: :export_to_required if _to.nil?
|
77
|
+
end
|
78
|
+
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
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
module Directive
|
5
|
+
class Chef < Base
|
6
|
+
attr_accessor :_dimod, :_cookbook, :_recipe, :_attributes
|
7
|
+
|
8
|
+
def initialize(**kwargs, &blk)
|
9
|
+
@_dimod = []
|
10
|
+
@_recipe = []
|
11
|
+
@_cookbook = {}
|
12
|
+
|
13
|
+
super(**kwargs, &blk)
|
14
|
+
end
|
15
|
+
|
16
|
+
def dimod(name, *args)
|
17
|
+
@_dimod << name
|
18
|
+
cookbook(name, *args)
|
19
|
+
end
|
20
|
+
|
21
|
+
def recipe(name)
|
22
|
+
@_recipe << name
|
23
|
+
end
|
24
|
+
|
25
|
+
def attributes
|
26
|
+
@_attributes ||= Attributes.new
|
27
|
+
end
|
28
|
+
|
29
|
+
def cookbook(name, version_constraint=nil, **kwargs)
|
30
|
+
@_cookbook[name] = {}.tap do |desc|
|
31
|
+
desc.update(kwargs)
|
32
|
+
desc[:name] = name
|
33
|
+
desc[:version_constraint] = version_constraint if version_constraint
|
34
|
+
desc[:path] = File.expand_path(desc[:path], dapp.path) if desc.key? :path
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
%i(before_install install before_setup setup build_artifact).each do |stage|
|
39
|
+
define_method("_#{stage}_attributes") do
|
40
|
+
var = "@__#{stage}_attributes"
|
41
|
+
instance_variable_get(var) || instance_variable_set(var, Attributes.new)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class Attributes < Hash
|
46
|
+
def [](key)
|
47
|
+
super || begin
|
48
|
+
self[key] = self.class.new
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end # Attributes
|
52
|
+
|
53
|
+
%i(before_install install before_setup setup build_artifact).each do |stage|
|
54
|
+
define_method("__#{stage}_attributes") do
|
55
|
+
attributes.in_depth_merge send("_#{stage}_attributes")
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
protected
|
60
|
+
|
61
|
+
def empty?
|
62
|
+
(@_dimod + @_recipe).empty? && attributes.empty?
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|