dapp 0.10.2 → 0.36.24
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 +5 -5
- data/bin/dapp +77 -15
- data/config/en/common.yml +20 -11
- data/config/en/net_status.yml +108 -27
- data/lib/dapp/cli/cli.rb +1 -0
- data/lib/dapp/cli/command/base.rb +111 -0
- data/lib/dapp/cli/command/sample/base.rb +28 -0
- data/lib/dapp/cli/command/sample/create.rb +24 -0
- data/lib/dapp/cli/command/sample/list.rb +25 -0
- data/lib/dapp/cli/command/sample.rb +20 -0
- data/lib/dapp/cli/command/slug.rb +26 -0
- data/lib/dapp/cli/command/update.rb +65 -0
- data/lib/dapp/cli/options/ssh.rb +18 -0
- data/lib/dapp/cli/options/tag.rb +51 -0
- data/lib/dapp/cli.rb +11 -3
- data/lib/dapp/config/config.rb +21 -0
- data/lib/dapp/config/directive/base.rb +100 -3
- data/lib/dapp/core_ext/hash.rb +14 -0
- data/lib/dapp/core_ext/pathname.rb +6 -4
- data/lib/dapp/dapp/chef.rb +1 -9
- data/lib/dapp/dapp/command/common.rb +24 -0
- data/lib/dapp/dapp/command/sample/common.rb +54 -0
- data/lib/dapp/dapp/command/sample/create.rb +57 -0
- data/lib/dapp/dapp/command/sample/list.rb +13 -0
- data/lib/dapp/dapp/command/slug.rb +11 -0
- data/lib/dapp/dapp/dapp_config.rb +85 -0
- data/lib/dapp/dapp/dappfile.rb +108 -27
- data/lib/dapp/dapp/deps/base.rb +9 -32
- data/lib/dapp/dapp/deps/common.rb +26 -0
- data/lib/dapp/dapp/deps/gitartifact.rb +2 -20
- data/lib/dapp/dapp/deps/toolchain.rb +11 -0
- data/lib/dapp/dapp/git_artifact.rb +6 -4
- data/lib/dapp/dapp/lock.rb +6 -5
- data/lib/dapp/dapp/logging/base.rb +32 -20
- data/lib/dapp/dapp/logging/i18n.rb +5 -1
- data/lib/dapp/dapp/logging/process.rb +6 -6
- data/lib/dapp/dapp/option_tags.rb +98 -0
- data/lib/dapp/dapp/ruby2go.rb +130 -0
- data/lib/dapp/dapp/sentry.rb +97 -0
- data/lib/dapp/dapp/shellout/base.rb +26 -18
- data/lib/dapp/dapp/shellout/streaming.rb +2 -2
- data/lib/dapp/dapp/slug.rb +12 -0
- data/lib/dapp/dapp/ssh_agent.rb +25 -7
- data/lib/dapp/dapp.rb +192 -41
- data/lib/dapp/deployment.rb +1 -0
- data/lib/dapp/dimg/artifact.rb +12 -4
- data/lib/dapp/dimg/build/stage/artifact_base.rb +26 -30
- data/lib/dapp/dimg/build/stage/artifact_default.rb +50 -28
- data/lib/dapp/dimg/build/stage/base.rb +187 -52
- data/lib/dapp/dimg/build/stage/before_install.rb +4 -15
- data/lib/dapp/dimg/build/stage/before_install_artifact.rb +4 -0
- data/lib/dapp/dimg/build/stage/before_setup.rb +1 -20
- data/lib/dapp/dimg/build/stage/build_artifact.rb +1 -20
- data/lib/dapp/dimg/build/stage/docker_instructions.rb +5 -4
- data/lib/dapp/dimg/build/stage/from.rb +62 -9
- data/lib/dapp/dimg/build/stage/ga_archive.rb +14 -1
- data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +1 -5
- data/lib/dapp/dimg/build/stage/ga_base.rb +5 -35
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +15 -34
- data/lib/dapp/dimg/build/stage/ga_related_base.rb +21 -0
- data/lib/dapp/dimg/build/stage/import_artifact.rb +22 -11
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +6 -2
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +6 -2
- data/lib/dapp/dimg/build/stage/install/install.rb +1 -19
- data/lib/dapp/dimg/build/stage/instructions.rb +27 -0
- data/lib/dapp/dimg/build/stage/mod/group.rb +19 -7
- data/lib/dapp/dimg/build/stage/mod/logging.rb +15 -19
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +24 -1
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +6 -2
- data/lib/dapp/dimg/build/stage/setup/setup.rb +1 -19
- data/lib/dapp/dimg/builder/ansible.rb +5 -0
- data/lib/dapp/dimg/builder/chef/cookbook.rb +8 -8
- data/lib/dapp/dimg/builder/chef.rb +29 -16
- data/lib/dapp/dimg/builder/none.rb +1 -34
- data/lib/dapp/dimg/builder/ruby2go.rb +57 -0
- data/lib/dapp/dimg/builder/shell.rb +1 -20
- data/lib/dapp/dimg/cli/cli.rb +2 -1
- data/lib/dapp/dimg/cli/command/base.rb +24 -0
- data/lib/dapp/dimg/cli/command/dimg/bp.rb +60 -0
- data/lib/dapp/dimg/cli/command/dimg/build.rb +43 -0
- data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/export.rb +9 -4
- data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/import.rb +4 -4
- data/lib/dapp/dimg/cli/{build_context.rb → command/dimg/build_context.rb} +5 -5
- data/lib/dapp/dimg/cli/{cleanup.rb → command/dimg/cleanup.rb} +4 -6
- data/lib/dapp/dimg/cli/command/dimg/cleanup_repo.rb +47 -0
- data/lib/dapp/dimg/cli/command/dimg/flush_local.rb +24 -0
- data/lib/dapp/dimg/cli/command/dimg/flush_repo.rb +36 -0
- data/lib/dapp/dimg/cli/{list.rb → command/dimg/list.rb} +6 -3
- data/lib/dapp/dimg/cli/{mrproper.rb → command/dimg/mrproper.rb} +4 -4
- data/lib/dapp/dimg/cli/command/dimg/push.rb +39 -0
- data/lib/dapp/dimg/cli/{run.rb → command/dimg/run.rb} +30 -15
- data/lib/dapp/dimg/cli/{spush.rb → command/dimg/spush.rb} +4 -4
- data/lib/dapp/dimg/cli/{stage_image.rb → command/dimg/stage_image.rb} +12 -3
- data/lib/dapp/dimg/cli/command/dimg/stages/base.rb +13 -0
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_local.rb +13 -9
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_repo.rb +6 -8
- data/lib/dapp/dimg/cli/command/dimg/stages/flush_local.rb +21 -0
- data/lib/dapp/dimg/cli/command/dimg/stages/flush_repo.rb +28 -0
- data/lib/dapp/dimg/cli/command/dimg/stages/pull.rb +34 -0
- data/lib/dapp/dimg/cli/command/dimg/stages/push.rb +30 -0
- data/lib/dapp/dimg/cli/command/dimg/stages.rb +22 -0
- data/lib/dapp/dimg/cli/command/dimg/tag.rb +24 -0
- data/lib/dapp/dimg/cli/command/dimg.rb +31 -0
- data/lib/dapp/dimg/cli/options/introspection.rb +45 -0
- data/lib/dapp/dimg/config/config.rb +24 -0
- data/lib/dapp/dimg/config/directive/artifact.rb +13 -15
- data/lib/dapp/dimg/config/directive/artifact_base.rb +13 -8
- data/lib/dapp/dimg/config/directive/artifact_dimg.rb +12 -0
- data/lib/dapp/dimg/config/directive/artifact_group.rb +60 -0
- data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +203 -0
- data/lib/dapp/dimg/config/directive/dimg/validation.rb +217 -0
- data/lib/dapp/dimg/config/directive/dimg.rb +36 -0
- data/lib/dapp/dimg/config/directive/dimg_group.rb +73 -0
- data/lib/dapp/dimg/config/directive/dimg_group_base.rb +46 -0
- data/lib/dapp/dimg/config/directive/docker/artifact.rb +5 -0
- data/lib/dapp/dimg/config/directive/docker/base.rb +2 -3
- data/lib/dapp/dimg/config/directive/docker/dimg.rb +4 -4
- data/lib/dapp/dimg/config/directive/git_artifact_local.rb +24 -5
- data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +23 -12
- data/lib/dapp/dimg/config/directive/mount.rb +11 -3
- data/lib/dapp/dimg/config/directive/shell/dimg.rb +2 -2
- data/lib/dapp/dimg/dapp/command/bp.rb +3 -5
- data/lib/dapp/dimg/dapp/command/build.rb +4 -6
- data/lib/dapp/dimg/dapp/command/build_context/common.rb +2 -2
- data/lib/dapp/dimg/dapp/command/build_context/export.rb +14 -14
- data/lib/dapp/dimg/dapp/command/build_context/import.rb +28 -23
- data/lib/dapp/dimg/dapp/command/cleanup.rb +4 -11
- data/lib/dapp/dimg/dapp/command/cleanup_repo.rb +143 -0
- data/lib/dapp/dimg/dapp/command/common.rb +148 -38
- data/lib/dapp/dimg/dapp/command/flush_local.rb +25 -0
- data/lib/dapp/dimg/dapp/command/flush_repo.rb +25 -0
- data/lib/dapp/dimg/dapp/command/list.rb +1 -1
- data/lib/dapp/dimg/dapp/command/mrproper.rb +16 -63
- data/lib/dapp/dimg/dapp/command/push.rb +11 -16
- data/lib/dapp/dimg/dapp/command/ruby2go_cleanup.rb +48 -0
- data/lib/dapp/dimg/dapp/command/run.rb +4 -4
- data/lib/dapp/dimg/dapp/command/spush.rb +4 -5
- data/lib/dapp/dimg/dapp/command/stage_image.rb +2 -2
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +13 -115
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +23 -102
- data/lib/dapp/dimg/dapp/command/stages/common.rb +57 -39
- data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +13 -7
- data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +14 -8
- data/lib/dapp/dimg/dapp/command/stages/pull.rb +4 -13
- data/lib/dapp/dimg/dapp/command/stages/push.rb +4 -9
- data/lib/dapp/dimg/dapp/command/tag.rb +4 -6
- data/lib/dapp/dimg/dapp/config_artifact_group.rb +20 -0
- data/lib/dapp/dimg/dapp/dapp.rb +40 -0
- data/lib/dapp/dimg/dapp/dappfile.rb +43 -0
- data/lib/dapp/dimg/dapp/dimg.rb +41 -0
- data/lib/dapp/dimg/dimg/git_artifact.rb +25 -11
- data/lib/dapp/dimg/dimg/path.rb +7 -9
- data/lib/dapp/dimg/dimg/stages.rb +27 -15
- data/lib/dapp/dimg/dimg.rb +172 -69
- data/lib/dapp/dimg/docker_registry/base.rb +31 -74
- data/lib/dapp/dimg/docker_registry/dimg.rb +55 -0
- data/lib/dapp/dimg/docker_registry.rb +5 -23
- data/lib/dapp/dimg/error/build.rb +1 -1
- data/lib/dapp/dimg/error/chef.rb +1 -5
- data/lib/dapp/dimg/error/{command.rb → default.rb} +1 -1
- data/lib/dapp/dimg/error/dimg.rb +1 -1
- data/lib/dapp/dimg/error/lock.rb +1 -1
- data/lib/dapp/dimg/error/registry.rb +1 -1
- data/lib/dapp/dimg/error/rugged.rb +1 -1
- data/lib/dapp/dimg/error/tar_writer.rb +1 -1
- data/lib/dapp/dimg/git_artifact.rb +195 -179
- data/lib/dapp/dimg/git_repo/base.rb +49 -45
- data/lib/dapp/dimg/git_repo/local.rb +45 -0
- data/lib/dapp/dimg/git_repo/own.rb +3 -31
- data/lib/dapp/dimg/git_repo/remote.rb +65 -26
- data/lib/dapp/dimg/image/argument.rb +15 -50
- data/lib/dapp/dimg/image/dimg.rb +15 -0
- data/lib/dapp/dimg/image/scratch.rb +35 -9
- data/lib/dapp/dimg/image/stage.rb +223 -44
- data/lib/dapp/dimg/lock/file.rb +4 -4
- data/lib/dapp/downloader.rb +117 -0
- data/lib/dapp/error/base.rb +1 -5
- data/lib/dapp/error/command.rb +5 -0
- data/lib/dapp/error/config.rb +5 -0
- data/lib/dapp/error/dapp.rb +1 -1
- data/lib/dapp/error/dappfile.rb +1 -1
- data/lib/dapp/error/default.rb +11 -0
- data/lib/dapp/error/mod/user.rb +11 -0
- data/lib/dapp/error/shellout.rb +1 -1
- data/lib/dapp/exception/base.rb +1 -1
- data/lib/dapp/helper/case_conversion.rb +17 -0
- data/lib/dapp/helper/cli.rb +18 -7
- data/lib/dapp/helper/net_status.rb +5 -1
- data/lib/dapp/helper/sha256.rb +1 -1
- data/lib/dapp/helper/tar.rb +31 -0
- data/lib/dapp/helper/trivia.rb +40 -1
- data/lib/dapp/helper/url.rb +23 -0
- data/lib/dapp/helper/yaml.rb +24 -0
- data/lib/dapp/kube/cli/cli.rb +1 -0
- data/lib/dapp/kube/cli/command/base.rb +14 -0
- data/lib/dapp/kube/cli/command/kube/chart_create.rb +19 -0
- data/lib/dapp/kube/cli/command/kube/deploy.rb +80 -0
- data/lib/dapp/kube/cli/command/kube/dismiss.rb +31 -0
- data/lib/dapp/kube/cli/command/kube/lint.rb +53 -0
- data/lib/dapp/kube/cli/command/kube/minikube_setup.rb +19 -0
- data/lib/dapp/kube/cli/command/kube/render.rb +63 -0
- data/lib/dapp/kube/cli/command/kube/secret_edit.rb +30 -0
- data/lib/dapp/kube/cli/command/kube/secret_extract.rb +39 -0
- data/lib/dapp/kube/cli/command/kube/secret_generate.rb +34 -0
- data/lib/dapp/kube/cli/command/kube/secret_key_generate.rb +16 -0
- data/lib/dapp/kube/cli/command/kube/secret_regenerate.rb +29 -0
- data/lib/dapp/kube/cli/command/kube/value_get.rb +47 -0
- data/lib/dapp/kube/cli/command/kube.rb +28 -0
- data/lib/dapp/kube/dapp/command/chart_create.rb +103 -0
- data/lib/dapp/kube/dapp/command/common.rb +379 -0
- data/lib/dapp/kube/dapp/command/deploy.rb +351 -0
- data/lib/dapp/kube/dapp/command/dismiss.rb +50 -0
- data/lib/dapp/kube/dapp/command/lint.rb +69 -0
- data/lib/dapp/kube/dapp/command/minikube_setup.rb +402 -0
- data/lib/dapp/kube/dapp/command/render.rb +54 -0
- data/lib/dapp/kube/dapp/command/ruby2go.rb +17 -0
- data/lib/dapp/kube/dapp/command/secret_edit.rb +21 -0
- data/lib/dapp/kube/dapp/command/secret_extract.rb +17 -0
- data/lib/dapp/kube/dapp/command/secret_generate.rb +21 -0
- data/lib/dapp/kube/dapp/command/secret_key_generate.rb +13 -0
- data/lib/dapp/kube/dapp/command/secret_regenerate.rb +13 -0
- data/lib/dapp/kube/dapp/command/value_get.rb +32 -0
- data/lib/dapp/kube/dapp/dapp.rb +26 -0
- data/lib/dapp/kube/error/default.rb +7 -0
- data/lib/dapp/kube/helm/release.rb +189 -0
- data/lib/dapp/kube/helm/values.rb +148 -0
- data/lib/dapp/kube/helm.rb +5 -0
- data/lib/dapp/kube/kubernetes/client/error.rb +43 -0
- data/lib/dapp/kube/kubernetes/client/resource/base.rb +33 -0
- data/lib/dapp/kube/kubernetes/client/resource/deployment.rb +11 -0
- data/lib/dapp/kube/kubernetes/client/resource/event.rb +8 -0
- data/lib/dapp/kube/kubernetes/client/resource/job.rb +27 -0
- data/lib/dapp/kube/kubernetes/client/resource/pod.rb +62 -0
- data/lib/dapp/kube/kubernetes/client/resource/replicaset.rb +8 -0
- data/lib/dapp/kube/kubernetes/client.rb +314 -0
- data/lib/dapp/kube/kubernetes/config.rb +132 -0
- data/lib/dapp/kube/kubernetes/error.rb +15 -0
- data/lib/dapp/kube/kubernetes/manager/base.rb +15 -0
- data/lib/dapp/kube/kubernetes/manager/container.rb +103 -0
- data/lib/dapp/kube/kubernetes/manager/deployment.rb +212 -0
- data/lib/dapp/kube/kubernetes/manager/job.rb +65 -0
- data/lib/dapp/kube/kubernetes/manager/pod.rb +69 -0
- data/lib/dapp/kube/kubernetes.rb +6 -0
- data/lib/dapp/kube/secret.rb +93 -0
- data/lib/dapp/kube.rb +1 -0
- data/lib/dapp/version.rb +2 -2
- data/lib/dapp.rb +155 -61
- metadata +208 -61
- data/lib/dapp/cli/base.rb +0 -63
- data/lib/dapp/config/base.rb +0 -54
- data/lib/dapp/config/error/config.rb +0 -7
- data/lib/dapp/dimg/build/stage/ga_archive_dependencies.rb +0 -27
- data/lib/dapp/dimg/build/stage/ga_dependencies_base.rb +0 -20
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +0 -22
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +0 -22
- data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +0 -23
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +0 -32
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +0 -22
- data/lib/dapp/dimg/cli/base.rb +0 -16
- data/lib/dapp/dimg/cli/bp.rb +0 -37
- data/lib/dapp/dimg/cli/build.rb +0 -64
- data/lib/dapp/dimg/cli/dimg.rb +0 -30
- data/lib/dapp/dimg/cli/push.rb +0 -61
- data/lib/dapp/dimg/cli/stages/flush_local.rb +0 -23
- data/lib/dapp/dimg/cli/stages/flush_repo.rb +0 -24
- data/lib/dapp/dimg/cli/stages/pull.rb +0 -28
- data/lib/dapp/dimg/cli/stages/push.rb +0 -24
- data/lib/dapp/dimg/cli/stages.rb +0 -22
- data/lib/dapp/dimg/cli/tag.rb +0 -24
- data/lib/dapp/dimg/config/artifact_dimg.rb +0 -17
- data/lib/dapp/dimg/config/artifact_group.rb +0 -43
- data/lib/dapp/dimg/config/base.rb +0 -7
- data/lib/dapp/dimg/config/dimg/instance_methods.rb +0 -179
- data/lib/dapp/dimg/config/dimg/validation.rb +0 -126
- data/lib/dapp/dimg/config/dimg.rb +0 -24
- data/lib/dapp/dimg/config/dimg_group.rb +0 -61
- data/lib/dapp/dimg/config/dimg_group_base.rb +0 -54
- data/lib/dapp/dimg/config/dimg_group_main.rb +0 -22
- data/lib/dapp/dimg/dapp/command.rb +0 -21
- data/lib/dapp/dimg/dimg/tags.rb +0 -65
- data/lib/dapp/dimg/docker_registry/base/authorization.rb +0 -63
- data/lib/dapp/dimg/docker_registry/base/request.rb +0 -34
- data/lib/dapp/dimg/docker_registry/default.rb +0 -18
- data/lib/dapp/dimg/error/base.rb +0 -7
- data/lib/dapp/dimg/error/config.rb +0 -7
- data/lib/dapp/dimg/exception/introspect_image.rb +0 -7
- data/lib/dapp/dimg/image/docker.rb +0 -134
|
@@ -18,7 +18,7 @@ module Dapp
|
|
|
18
18
|
sub_directive_eval { @_group = group }
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
def export(absolute_dir_path =
|
|
21
|
+
def export(absolute_dir_path = nil, &blk)
|
|
22
22
|
self.class.const_get('Export').new(absolute_dir_path, dapp: dapp, &blk).tap do |export|
|
|
23
23
|
@_export << export
|
|
24
24
|
end
|
|
@@ -36,9 +36,8 @@ module Dapp
|
|
|
36
36
|
class Export < Directive::Base
|
|
37
37
|
attr_accessor :_cwd, :_to, :_include_paths, :_exclude_paths, :_owner, :_group
|
|
38
38
|
|
|
39
|
-
def initialize(cwd
|
|
40
|
-
|
|
41
|
-
@_cwd = path_format(cwd)
|
|
39
|
+
def initialize(cwd, **kwargs, &blk)
|
|
40
|
+
self._cwd = cwd
|
|
42
41
|
@_include_paths ||= []
|
|
43
42
|
@_exclude_paths ||= []
|
|
44
43
|
|
|
@@ -56,9 +55,15 @@ module Dapp
|
|
|
56
55
|
}
|
|
57
56
|
end
|
|
58
57
|
|
|
58
|
+
def _cwd=(value)
|
|
59
|
+
return if value.nil?
|
|
60
|
+
raise ::Dapp::Error::Config, code: :export_cwd_absolute_path_required unless Pathname(value).absolute?
|
|
61
|
+
@_cwd = path_format(value)
|
|
62
|
+
end
|
|
63
|
+
|
|
59
64
|
def to(absolute_path)
|
|
60
65
|
sub_directive_eval do
|
|
61
|
-
raise Error::Config, code: :export_to_absolute_path_required unless Pathname(absolute_path).absolute?
|
|
66
|
+
raise ::Dapp::Error::Config, code: :export_to_absolute_path_required unless Pathname(absolute_path).absolute?
|
|
62
67
|
@_to = path_format(absolute_path)
|
|
63
68
|
end
|
|
64
69
|
end
|
|
@@ -66,7 +71,7 @@ module Dapp
|
|
|
66
71
|
def include_paths(*relative_paths)
|
|
67
72
|
sub_directive_eval do
|
|
68
73
|
unless relative_paths.all? { |path| Pathname(path).relative? }
|
|
69
|
-
raise Error::Config, code: :export_include_paths_relative_path_required
|
|
74
|
+
raise ::Dapp::Error::Config, code: :export_include_paths_relative_path_required
|
|
70
75
|
end
|
|
71
76
|
_include_paths.concat(relative_paths.map(&method(:path_format)))
|
|
72
77
|
end
|
|
@@ -75,7 +80,7 @@ module Dapp
|
|
|
75
80
|
def exclude_paths(*relative_paths)
|
|
76
81
|
sub_directive_eval do
|
|
77
82
|
unless relative_paths.all? { |path| Pathname(path).relative? }
|
|
78
|
-
raise Error::Config, code: :export_exclude_paths_relative_path_required
|
|
83
|
+
raise ::Dapp::Error::Config, code: :export_exclude_paths_relative_path_required
|
|
79
84
|
end
|
|
80
85
|
_exclude_paths.concat(relative_paths.map(&method(:path_format)))
|
|
81
86
|
end
|
|
@@ -90,7 +95,7 @@ module Dapp
|
|
|
90
95
|
end
|
|
91
96
|
|
|
92
97
|
def validate!
|
|
93
|
-
raise Error::Config, code: :export_to_required if _to.nil?
|
|
98
|
+
raise ::Dapp::Error::Config, code: :export_to_required if _to.nil?
|
|
94
99
|
end
|
|
95
100
|
end
|
|
96
101
|
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
module Dapp
|
|
2
|
+
module Dimg
|
|
3
|
+
module Config
|
|
4
|
+
module Directive
|
|
5
|
+
class ArtifactGroup < DimgGroup
|
|
6
|
+
attr_reader :_name
|
|
7
|
+
|
|
8
|
+
def initialize(name = nil, dapp:)
|
|
9
|
+
super(dapp: dapp)
|
|
10
|
+
@_name = name
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def export(*args, &blk)
|
|
14
|
+
_artifact_export(_artifact_config, *args, &blk)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def _artifact_config
|
|
18
|
+
artifact_config_name = "artifact-#{[_name, SecureRandom.hex(2)].compact.join('-')}"
|
|
19
|
+
pass_to(ArtifactDimg.new(artifact_config_name, dapp: dapp))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def _artifact_export(artifact_config, *args, &blk)
|
|
23
|
+
artifact = Artifact.new(dapp: dapp, config: artifact_config)
|
|
24
|
+
artifact.export(*args, &blk).tap do
|
|
25
|
+
_export.concat artifact._export
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def _shell(&blk)
|
|
30
|
+
@_shell ||= Shell::Artifact.new(dapp: dapp, &blk)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def _docker(&blk)
|
|
34
|
+
@_docker ||= Docker::Artifact.new(dapp: dapp, &blk)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def _export
|
|
38
|
+
@_export ||= []
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def validate!
|
|
42
|
+
_export.each(&:validate!)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
undef :artifact
|
|
46
|
+
undef :dimg
|
|
47
|
+
undef :dimg_group
|
|
48
|
+
|
|
49
|
+
protected
|
|
50
|
+
|
|
51
|
+
def check_dimg_directive_order(_directive)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def check_dimg_group_directive_order(_directive)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
module Dapp
|
|
2
|
+
module Dimg
|
|
3
|
+
module Config
|
|
4
|
+
module Directive
|
|
5
|
+
class Dimg < Base
|
|
6
|
+
module InstanceMethods
|
|
7
|
+
attr_reader :_builder
|
|
8
|
+
attr_reader :_chef, :_shell, :_docker, :_git_artifact, :_mount, :_artifact, :_ansible
|
|
9
|
+
attr_reader :_artifact_groups
|
|
10
|
+
attr_reader :_from_dimg, :_from_dimg_artifact
|
|
11
|
+
|
|
12
|
+
def chef(&blk)
|
|
13
|
+
builder(:chef)
|
|
14
|
+
directive_eval(_chef, &blk)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def shell(&blk)
|
|
18
|
+
builder(:shell)
|
|
19
|
+
directive_eval(_shell, &blk)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def docker(&blk)
|
|
23
|
+
directive_eval(_docker, &blk)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def artifact(name = nil, &blk)
|
|
27
|
+
pass_to(ArtifactGroup.new(name, dapp: dapp), :clone_to_artifact).tap do |artifact_group|
|
|
28
|
+
_context_artifact_groups << directive_eval(artifact_group, &blk)
|
|
29
|
+
dapp.artifact_config(name, artifact_group._artifact_config) unless name.nil?
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def import(name, from = nil, &blk)
|
|
34
|
+
ArtifactGroup.new(dapp: dapp).tap do |artifact_group|
|
|
35
|
+
artifact_group._artifact_export(dapp.artifact_config_by_name(name), from, &blk)
|
|
36
|
+
_context_artifact_groups << artifact_group
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def git(url = nil, &blk)
|
|
41
|
+
type = url.nil? ? :local : :remote
|
|
42
|
+
_git_artifact.public_send(type, url.to_s, &blk)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def mount(to, &blk)
|
|
46
|
+
Mount.new(to, dapp: dapp, &blk).tap do |mount|
|
|
47
|
+
_mount << mount
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def _builder
|
|
52
|
+
@_builder || :none
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def _chef
|
|
56
|
+
@_chef ||= Chef.new(dapp: dapp)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def _shell
|
|
60
|
+
@_shell ||= Shell::Dimg.new(dapp: dapp)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def _docker
|
|
64
|
+
@_docker ||= Docker::Dimg.new(dapp: dapp)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def _mount
|
|
68
|
+
@_mount ||= []
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def _git_artifact
|
|
72
|
+
@_git_artifact ||= GitArtifact.new(dapp: dapp)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
[:build_dir, :tmp_dir, :custom_dir].each do |mount_type|
|
|
76
|
+
define_method "_#{mount_type}_mount" do
|
|
77
|
+
_mount.select { |m| m._type == mount_type }
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def _artifact_groups
|
|
82
|
+
@_artifact_groups ||= []
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def _context_artifact_groups
|
|
86
|
+
@_context_artifact_groups ||= []
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def _artifact
|
|
90
|
+
[_artifact_groups, _context_artifact_groups].flatten.map(&:_export).flatten
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
[:before, :after].each do |order|
|
|
94
|
+
[:setup, :install].each do |stage|
|
|
95
|
+
define_method "_#{order}_#{stage}_artifact" do
|
|
96
|
+
_artifact.select do |art|
|
|
97
|
+
art.public_send("_#{order}") == stage
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def _import_artifact
|
|
104
|
+
_artifact.select(&:not_associated?)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
class GitArtifact < Base
|
|
108
|
+
attr_reader :_local, :_remote
|
|
109
|
+
|
|
110
|
+
def initialize(**kwargs, &blk)
|
|
111
|
+
@_local = []
|
|
112
|
+
@_remote = []
|
|
113
|
+
|
|
114
|
+
super(**kwargs, &blk)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def local(_, &blk)
|
|
118
|
+
GitArtifactLocal.new(dapp: dapp, &blk).tap do |git|
|
|
119
|
+
@_local << git
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def remote(repo_url, &blk)
|
|
124
|
+
GitArtifactRemote.new(repo_url, dapp: dapp, &blk).tap do |git|
|
|
125
|
+
@_remote << git
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def _local
|
|
130
|
+
@_local.map(&:_export).flatten
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def _remote
|
|
134
|
+
@_remote.map(&:_export).flatten
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
def empty?
|
|
138
|
+
(_local + _remote).empty?
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def validate!
|
|
142
|
+
(_local + _remote).each(&:validate!)
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def artifacts_after_parsing!
|
|
147
|
+
_artifacts_auto_excluding!
|
|
148
|
+
_artifact.map(&:_config).each(&:artifacts_after_parsing!)
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
protected
|
|
152
|
+
|
|
153
|
+
def builder(type)
|
|
154
|
+
@_builder = type if _builder == :none
|
|
155
|
+
raise ::Dapp::Error::Config, code: :builder_type_conflict unless @_builder == type
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def passed_directives
|
|
159
|
+
[:@_chef, :@_shell, :@_docker, :@_git_artifact, :@_mount, :@_artifact_groups, :@_builder]
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def _artifacts_auto_excluding!
|
|
163
|
+
path_to_relative = proc { |path| path.reverse.chomp('/').reverse }
|
|
164
|
+
|
|
165
|
+
all_artifacts.reduce({}) do |hash, artifact|
|
|
166
|
+
unless artifact._to.nil?
|
|
167
|
+
to_common = artifact._to[/^\/[^\/]*/]
|
|
168
|
+
hash[to_common] ||= []
|
|
169
|
+
hash[to_common] << artifact
|
|
170
|
+
end
|
|
171
|
+
hash
|
|
172
|
+
end.each do |to_common, artifacts|
|
|
173
|
+
include_paths_common = artifacts.reduce([]) do |arr, artifact|
|
|
174
|
+
arr << artifact._to.sub(to_common, '')
|
|
175
|
+
arr.concat(artifact._include_paths.map { |path| File.join(artifact._to.sub(to_common, ''), path) } )
|
|
176
|
+
arr
|
|
177
|
+
end.map(&path_to_relative).uniq
|
|
178
|
+
|
|
179
|
+
artifacts.each do |artifact|
|
|
180
|
+
artifact_include_shift = path_to_relative.call(artifact._to.sub(to_common, ''))
|
|
181
|
+
|
|
182
|
+
include_paths_common.each do |path|
|
|
183
|
+
next if artifact_include_shift.start_with? path
|
|
184
|
+
|
|
185
|
+
path = path_to_relative.call(path.sub(artifact_include_shift, ''))
|
|
186
|
+
unless artifact._include_paths.any? { |ipath| ipath.start_with? path } || artifact._exclude_paths.any? { |epath| path.start_with? epath }
|
|
187
|
+
artifact._exclude_paths << path
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def all_artifacts
|
|
195
|
+
_artifact + _git_artifact._local + _git_artifact._remote
|
|
196
|
+
end
|
|
197
|
+
end # InstanceMethods
|
|
198
|
+
# rubocop:enable Metrics/ModuleLength
|
|
199
|
+
end # Dimg
|
|
200
|
+
end # Directive
|
|
201
|
+
end # Config
|
|
202
|
+
end # Dimg
|
|
203
|
+
end # Dapp
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
module Dapp
|
|
2
|
+
module Dimg
|
|
3
|
+
module Config
|
|
4
|
+
module Directive
|
|
5
|
+
class Dimg < Base
|
|
6
|
+
module Validation
|
|
7
|
+
include Helper::Trivia
|
|
8
|
+
|
|
9
|
+
def validate!
|
|
10
|
+
directives_validate!
|
|
11
|
+
validate_scratch!
|
|
12
|
+
validate_artifacts!
|
|
13
|
+
validate_artifacts_artifacts!
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
protected
|
|
17
|
+
|
|
18
|
+
def validate_scratch!
|
|
19
|
+
if _docker._from.nil? && _from_dimg.nil? && _from_dimg_artifact.nil?
|
|
20
|
+
validate_scratch_directives!
|
|
21
|
+
validate_scratch_artifacts!
|
|
22
|
+
else
|
|
23
|
+
raise ::Dapp::Error::Config, code: :stage_artifact_not_associated unless _import_artifact.empty?
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def directives_validate!
|
|
28
|
+
passed_directives.each do |v|
|
|
29
|
+
next if (value = instance_variable_get(v)).nil?
|
|
30
|
+
Array(value).each do |elm|
|
|
31
|
+
elm.validate! if elm.respond_to?(:validate!)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
_context_artifact_groups.each(&:validate!)
|
|
35
|
+
_mount.map(&:_to).tap do |mounts_points|
|
|
36
|
+
mounts_points.each do |path|
|
|
37
|
+
raise ::Dapp::Error::Config, code: :mount_duplicate_to, data: { path: path } if mounts_points.count(path) > 1
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def validate_scratch_directives!
|
|
43
|
+
directives = [[:_shell, :shell], [:_chef, :chef], [:_git_artifact, :git],
|
|
44
|
+
[:_tmp_dir_mount, :mount], [:_build_dir_mount, :mount], [:_custom_dir_mount, :mount]]
|
|
45
|
+
directives.each do |name, user_name|
|
|
46
|
+
raise ::Dapp::Error::Config, code: :scratch_unsupported_directive,
|
|
47
|
+
data: { directive: user_name } unless public_send(name).empty?
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
docker_directives = [:_expose, :_env, :_cmd, :_onbuild, :_workdir, :_user, :_entrypoint]
|
|
51
|
+
docker_directives.each do |directive|
|
|
52
|
+
value = _docker.public_send(directive)
|
|
53
|
+
raise ::Dapp::Error::Config, code: :scratch_unsupported_directive,
|
|
54
|
+
data: { directive: "docker.#{directive}" } unless value.nil? || value.empty?
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def validate_scratch_artifacts!
|
|
59
|
+
raise ::Dapp::Error::Config, code: :scratch_artifact_associated unless _associated_artifacts.empty?
|
|
60
|
+
raise ::Dapp::Error::Config, code: :scratch_artifact_required if _import_artifact.empty?
|
|
61
|
+
_import_artifact.each do |artifact|
|
|
62
|
+
raise ::Dapp::Error::Config, code: :scratch_artifact_docker_from if artifact._config._docker._from.nil?
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def validate_artifacts_artifacts!
|
|
67
|
+
_artifact.each { |artifact_dimg| artifact_dimg._config.validate! }
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def validate_artifacts!
|
|
71
|
+
artifacts = validate_artifact_format(all_artifacts)
|
|
72
|
+
loop do
|
|
73
|
+
break if artifacts.empty?
|
|
74
|
+
verifiable_artifact = artifacts.shift
|
|
75
|
+
artifacts.each do |artifact|
|
|
76
|
+
next if verifiable_artifact[:index] == artifact[:index]
|
|
77
|
+
begin
|
|
78
|
+
validate_artifact!(verifiable_artifact, artifact)
|
|
79
|
+
validate_artifact!(artifact, verifiable_artifact)
|
|
80
|
+
rescue ::Dapp::Error::Config => e
|
|
81
|
+
conflict_between_artifacts!(artifact, verifiable_artifact) if e.net_status[:code] == :artifact_conflict
|
|
82
|
+
raise
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def conflict_between_artifacts!(*formatted_artifacts)
|
|
89
|
+
artifacts = formatted_artifacts.flatten.map { |formatted_artifact| formatted_artifact[:related_artifact] }
|
|
90
|
+
artifact_imports = []
|
|
91
|
+
git_artifacts = []
|
|
92
|
+
artifacts.map do |artifact|
|
|
93
|
+
(artifact.is_a?(Artifact::Export) ? artifact_imports : git_artifacts) << artifact
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
common_artifact_dsl = proc do |a|
|
|
97
|
+
[].tap do |context|
|
|
98
|
+
context << " to '#{a._to}'"
|
|
99
|
+
[:include_paths, :exclude_paths].each do |directive|
|
|
100
|
+
next if (paths = a.send("_#{directive}")).empty?
|
|
101
|
+
context << " #{directive} '#{paths.join("', '")}'"
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
import_dsl = proc do |ga|
|
|
107
|
+
[].tap do |context|
|
|
108
|
+
context << "artifact.export('#{ga._cwd}') do"
|
|
109
|
+
context.concat(common_artifact_dsl.call(ga))
|
|
110
|
+
context << 'end'
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
git_artifact_dsl = proc do |ga|
|
|
115
|
+
[].tap do |context|
|
|
116
|
+
context << "git#{"('#{ga._url}')" if ga.respond_to?(:_url)}.add('#{ga._cwd}') do"
|
|
117
|
+
context.concat(common_artifact_dsl.call(ga))
|
|
118
|
+
context << 'end'
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
common_artifact_yaml = proc do |a|
|
|
123
|
+
[].tap do |context|
|
|
124
|
+
context << " to: #{a._to}"
|
|
125
|
+
{
|
|
126
|
+
include_paths: 'includePaths',
|
|
127
|
+
exclude_paths: 'excludePaths',
|
|
128
|
+
}.each do |directive, yamlDirective|
|
|
129
|
+
next if (paths = a.send("_#{directive}")).empty?
|
|
130
|
+
context << " #{yamlDirective}: [#{paths.join(", ")}]"
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
import_yaml = proc do |a|
|
|
136
|
+
[].tap do |context|
|
|
137
|
+
context << "- artifact: #{a._config._name}"
|
|
138
|
+
context << " add: #{a._cwd}"
|
|
139
|
+
context.concat(common_artifact_yaml.call(a))
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
git_artifact_yaml = proc do |ga|
|
|
144
|
+
[].tap do |context|
|
|
145
|
+
if ga.respond_to?(:_url)
|
|
146
|
+
context << "- url: #{ga._url}"
|
|
147
|
+
context << " add: #{ga._cwd}"
|
|
148
|
+
else
|
|
149
|
+
context << "- add: #{ga._cwd}"
|
|
150
|
+
end
|
|
151
|
+
context.concat(common_artifact_yaml.call(ga))
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
dappfile_context = [].tap do |msg|
|
|
156
|
+
if artifact_imports.count != 0
|
|
157
|
+
if dapp
|
|
158
|
+
artifact_imports.each { |a| msg.concat(import_dsl.call(a)) }
|
|
159
|
+
else
|
|
160
|
+
msg << 'import:'
|
|
161
|
+
artifact_imports.each { |a| msg.concat(import_yaml.call(a)) }
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
if git_artifacts.count != 0
|
|
166
|
+
if dapp
|
|
167
|
+
git_artifacts.each { |a| msg.concat(git_artifact_dsl.call(a)) }
|
|
168
|
+
else
|
|
169
|
+
msg << 'git:'
|
|
170
|
+
git_artifacts.each { |a| msg.concat(git_artifact_yaml.call(a)) }
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end.join("\n")
|
|
174
|
+
raise ::Dapp::Error::Config, code: :artifact_conflict, data: { dappfile_context: dappfile_context }
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def validate_artifact_format(artifacts)
|
|
178
|
+
artifacts.map do |a|
|
|
179
|
+
include_paths = begin
|
|
180
|
+
if a._include_paths.empty?
|
|
181
|
+
[a._to]
|
|
182
|
+
else
|
|
183
|
+
a._include_paths.dup.map { |p| File.join(a._to, p) }
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
{
|
|
188
|
+
index: artifacts.index(a),
|
|
189
|
+
include_paths: include_paths,
|
|
190
|
+
exclude_paths: a._exclude_paths.dup.map { |p| File.join(a._to, p) },
|
|
191
|
+
related_artifact: a
|
|
192
|
+
}
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def validate_artifact!(verifiable_artifact, artifact)
|
|
197
|
+
cases = []
|
|
198
|
+
cases << verifiable_artifact[:include_paths].any? do |verifiable_path|
|
|
199
|
+
!ignore_path?(verifiable_path, paths: artifact[:include_paths], exclude_paths: artifact[:exclude_paths])
|
|
200
|
+
end
|
|
201
|
+
cases << (verifiable_artifact[:include_paths].empty? && artifact[:include_paths].empty?)
|
|
202
|
+
|
|
203
|
+
raise ::Dapp::Error::Config, code: :artifact_conflict if cases.any?
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
def _associated_artifacts
|
|
207
|
+
_artifact.select do |art|
|
|
208
|
+
!(art._before.nil? && art._after.nil?)
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
end # Validation
|
|
212
|
+
# rubocop:enable Metrics/ModuleLength
|
|
213
|
+
end # Dimg
|
|
214
|
+
end # Directive
|
|
215
|
+
end # Config
|
|
216
|
+
end # Dimg
|
|
217
|
+
end # Dapp
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Dapp
|
|
2
|
+
module Dimg
|
|
3
|
+
module Config
|
|
4
|
+
module Directive
|
|
5
|
+
class Dimg < Base
|
|
6
|
+
include Validation
|
|
7
|
+
include InstanceMethods
|
|
8
|
+
|
|
9
|
+
attr_reader :_name
|
|
10
|
+
|
|
11
|
+
def initialize(name, dapp:)
|
|
12
|
+
self._name = name
|
|
13
|
+
super(dapp: dapp)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def _name=(name)
|
|
17
|
+
sub_directive_eval do
|
|
18
|
+
return self if name.nil?
|
|
19
|
+
name = name.to_s
|
|
20
|
+
validate_compliance!(dimg_name_pattern, name, :dimg_name_incorrect)
|
|
21
|
+
@_name = name
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
protected
|
|
26
|
+
|
|
27
|
+
def dimg_name_pattern
|
|
28
|
+
separator = '[_\.]|(__)|(-*)'
|
|
29
|
+
alpha_numeric = '[a-z0-9]'
|
|
30
|
+
"^#{alpha_numeric}(#{separator}#{alpha_numeric})*$"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
module Dapp
|
|
2
|
+
module Dimg
|
|
3
|
+
module Config
|
|
4
|
+
module Directive
|
|
5
|
+
class DimgGroup < Base
|
|
6
|
+
include DimgGroupBase
|
|
7
|
+
include Dimg::InstanceMethods
|
|
8
|
+
|
|
9
|
+
def chef(&blk)
|
|
10
|
+
check_dimg_directive_order(:chef)
|
|
11
|
+
super
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def shell(&blk)
|
|
15
|
+
check_dimg_directive_order(:shell)
|
|
16
|
+
super
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def docker(&blk)
|
|
20
|
+
check_dimg_directive_order(:docker)
|
|
21
|
+
super
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def artifact(name = nil, &blk)
|
|
25
|
+
check_dimg_group_directive_order(:artifact)
|
|
26
|
+
super
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def git(url = nil, &blk)
|
|
30
|
+
check_dimg_directive_order(:git)
|
|
31
|
+
super
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def mount(to, &blk)
|
|
35
|
+
check_dimg_directive_order(:mount)
|
|
36
|
+
super
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
protected
|
|
40
|
+
|
|
41
|
+
def before_dimg_eval(dimg)
|
|
42
|
+
before_eval_base(dimg)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def before_dimg_group_eval(dimg_group)
|
|
46
|
+
before_eval_base(dimg_group)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def before_eval_base(obj)
|
|
50
|
+
pass_to(obj)
|
|
51
|
+
pass_context_artifact_groups_to(obj)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def pass_context_artifact_groups_to(obj)
|
|
55
|
+
obj.instance_variable_set(:@_artifact_groups, [obj._artifact_groups, clone_variable(_context_artifact_groups)].flatten)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def check_dimg_directive_order(directive)
|
|
59
|
+
dapp.log_config_warning(desc: { code: 'wrong_using_base_directive',
|
|
60
|
+
data: { directive: directive },
|
|
61
|
+
context: 'warning' }) if _dimg.any? || _dimg_group.any? || _artifact.any?
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def check_dimg_group_directive_order(directive)
|
|
65
|
+
dapp.log_config_warning(desc: { code: 'wrong_using_directive',
|
|
66
|
+
data: { directive: directive },
|
|
67
|
+
context: 'warning' }) if _dimg.any? || _dimg_group.any?
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|