dapp 0.11.0 → 0.12.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/config/en/net_status.yml +36 -4
- data/lib/dapp.rb +84 -36
- data/lib/dapp/cli.rb +3 -2
- data/lib/dapp/cli/command/base.rb +69 -0
- data/lib/dapp/config/config.rb +17 -0
- data/lib/dapp/config/directive/base.rb +90 -3
- data/lib/dapp/dapp.rb +6 -14
- data/lib/dapp/dapp/dappfile.rb +20 -27
- data/lib/dapp/dapp/deps/base.rb +2 -2
- data/lib/dapp/dapp/lock.rb +1 -1
- data/lib/dapp/dapp/logging/base.rb +11 -7
- data/lib/dapp/dapp/logging/process.rb +4 -2
- data/lib/dapp/dapp/shellout/base.rb +2 -2
- data/lib/dapp/dapp/ssh_agent.rb +2 -2
- data/lib/dapp/deployment.rb +1 -0
- data/lib/dapp/deployment/app.rb +120 -0
- data/lib/dapp/deployment/cli/cli.rb +1 -0
- data/lib/dapp/deployment/cli/command/base.rb +14 -0
- data/lib/dapp/deployment/cli/command/deployment.rb +21 -0
- data/lib/dapp/deployment/cli/command/deployment/apply.rb +26 -0
- data/lib/dapp/deployment/cli/command/deployment/minikube_setup.rb +13 -0
- data/lib/dapp/deployment/cli/command/deployment/mrproper.rb +13 -0
- data/lib/dapp/deployment/cli/command/deployment/secret_generate.rb +13 -0
- data/lib/dapp/deployment/cli/command/deployment/secret_key_generate.rb +13 -0
- data/lib/dapp/deployment/config/config.rb +46 -0
- data/lib/dapp/deployment/config/directive/app.rb +28 -0
- data/lib/dapp/deployment/config/directive/app/instance_methods.rb +51 -0
- data/lib/dapp/deployment/config/directive/base.rb +13 -0
- data/lib/dapp/deployment/config/directive/deployment.rb +11 -0
- data/lib/dapp/deployment/config/directive/expose.rb +68 -0
- data/lib/dapp/deployment/config/directive/group.rb +27 -0
- data/lib/dapp/deployment/config/directive/job.rb +28 -0
- data/lib/dapp/deployment/config/directive/mod/group.rb +22 -0
- data/lib/dapp/deployment/config/directive/mod/jobs.rb +26 -0
- data/lib/dapp/deployment/config/directive/namespace.rb +26 -0
- data/lib/dapp/deployment/config/directive/namespace/instance_methods.rb +37 -0
- data/lib/dapp/deployment/core_ext/hash.rb +19 -0
- data/lib/dapp/deployment/dapp/command/apply.rb +83 -0
- data/lib/dapp/deployment/dapp/command/common.rb +17 -0
- data/lib/dapp/deployment/dapp/command/minikube_setup.rb +393 -0
- data/lib/dapp/deployment/dapp/command/mrproper.rb +12 -0
- data/lib/dapp/deployment/dapp/command/secret_generate.rb +17 -0
- data/lib/dapp/deployment/dapp/command/secret_key_generate.rb +13 -0
- data/lib/dapp/deployment/dapp/dapp.rb +18 -0
- data/lib/dapp/deployment/dapp/dappfile.rb +23 -0
- data/lib/dapp/deployment/deployment.rb +46 -0
- data/lib/dapp/deployment/error/app.rb +7 -0
- data/lib/dapp/deployment/error/base.rb +7 -0
- data/lib/dapp/deployment/error/command.rb +7 -0
- data/lib/dapp/deployment/error/config.rb +7 -0
- data/lib/dapp/deployment/error/deployment.rb +7 -0
- data/lib/dapp/deployment/error/kubernetes.rb +7 -0
- data/lib/dapp/deployment/kube_app.rb +277 -0
- data/lib/dapp/deployment/kube_base.rb +97 -0
- data/lib/dapp/deployment/kube_deployment.rb +51 -0
- data/lib/dapp/deployment/kubernetes.rb +174 -0
- data/lib/dapp/deployment/kubernetes/error.rb +20 -0
- data/lib/dapp/deployment/mod/jobs.rb +37 -0
- data/lib/dapp/deployment/mod/namespace.rb +58 -0
- data/lib/dapp/deployment/mod/system_environments.rb +30 -0
- data/lib/dapp/deployment/secret.rb +93 -0
- data/lib/dapp/dimg/artifact.rb +1 -1
- data/lib/dapp/dimg/build/stage/artifact_default.rb +35 -23
- data/lib/dapp/dimg/build/stage/base.rb +1 -1
- data/lib/dapp/dimg/build/stage/before_setup.rb +0 -2
- data/lib/dapp/dimg/build/stage/build_artifact.rb +0 -2
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +2 -2
- data/lib/dapp/dimg/build/stage/install/install.rb +0 -1
- data/lib/dapp/dimg/build/stage/setup/setup.rb +0 -1
- data/lib/dapp/dimg/cli/cli.rb +1 -1
- data/lib/dapp/dimg/cli/command/base.rb +14 -0
- data/lib/dapp/dimg/cli/{dimg.rb → command/dimg.rb} +5 -7
- data/lib/dapp/dimg/cli/{bp.rb → command/dimg/bp.rb} +3 -3
- data/lib/dapp/dimg/cli/{build.rb → command/dimg/build.rb} +3 -3
- data/lib/dapp/dimg/cli/{build_context.rb → command/dimg/build_context.rb} +3 -3
- data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/export.rb +4 -4
- data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/import.rb +4 -4
- data/lib/dapp/dimg/cli/{cleanup.rb → command/dimg/cleanup.rb} +3 -3
- data/lib/dapp/dimg/cli/{list.rb → command/dimg/list.rb} +3 -3
- data/lib/dapp/dimg/cli/{mrproper.rb → command/dimg/mrproper.rb} +4 -4
- data/lib/dapp/dimg/cli/{push.rb → command/dimg/push.rb} +5 -5
- data/lib/dapp/dimg/cli/{run.rb → command/dimg/run.rb} +8 -8
- 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} +3 -3
- data/lib/dapp/dimg/cli/{stages.rb → command/dimg/stages.rb} +3 -3
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_local.rb +6 -6
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_repo.rb +5 -5
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/flush_local.rb +5 -5
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/flush_repo.rb +6 -6
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/pull.rb +6 -6
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/push.rb +6 -6
- data/lib/dapp/dimg/cli/{tag.rb → command/dimg/tag.rb} +6 -6
- data/lib/dapp/dimg/config/config.rb +20 -0
- data/lib/dapp/dimg/config/directive/artifact_dimg.rb +19 -0
- data/lib/dapp/dimg/config/directive/artifact_group.rb +45 -0
- data/lib/dapp/dimg/config/directive/dimg.rb +36 -0
- data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +149 -0
- data/lib/dapp/dimg/config/directive/dimg/validation.rb +128 -0
- data/lib/dapp/dimg/config/directive/dimg_group.rb +64 -0
- data/lib/dapp/dimg/config/directive/dimg_group_base.rb +46 -0
- data/lib/dapp/dimg/config/directive/docker/dimg.rb +4 -4
- data/lib/dapp/dimg/config/directive/shell/dimg.rb +1 -1
- data/lib/dapp/dimg/dapp/command/bp.rb +4 -4
- data/lib/dapp/dimg/dapp/command/build.rb +2 -2
- data/lib/dapp/dimg/dapp/command/build_context/common.rb +2 -2
- data/lib/dapp/dimg/dapp/command/build_context/export.rb +1 -1
- data/lib/dapp/dimg/dapp/command/build_context/import.rb +1 -1
- data/lib/dapp/dimg/dapp/command/cleanup.rb +1 -1
- data/lib/dapp/dimg/dapp/command/common.rb +19 -4
- data/lib/dapp/dimg/dapp/command/list.rb +1 -1
- data/lib/dapp/dimg/dapp/command/mrproper.rb +3 -3
- data/lib/dapp/dimg/dapp/command/push.rb +6 -5
- data/lib/dapp/dimg/dapp/command/run.rb +1 -1
- data/lib/dapp/dimg/dapp/command/spush.rb +4 -3
- data/lib/dapp/dimg/dapp/command/stage_image.rb +2 -2
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +1 -1
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +3 -3
- data/lib/dapp/dimg/dapp/command/stages/common.rb +4 -4
- data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +1 -1
- data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +1 -1
- data/lib/dapp/dimg/dapp/command/stages/pull.rb +5 -4
- data/lib/dapp/dimg/dapp/command/stages/push.rb +4 -3
- data/lib/dapp/dimg/dapp/command/tag.rb +3 -2
- data/lib/dapp/dimg/dapp/dapp.rb +33 -0
- data/lib/dapp/dimg/dapp/dappfile.rb +25 -0
- data/lib/dapp/dimg/dimg.rb +3 -3
- data/lib/dapp/dimg/dimg/path.rb +1 -1
- data/lib/dapp/dimg/dimg/stages.rb +1 -1
- data/lib/dapp/dimg/dimg/tags.rb +5 -5
- data/lib/dapp/dimg/docker_registry.rb +3 -7
- data/lib/dapp/dimg/git_artifact.rb +30 -14
- data/lib/dapp/dimg/git_repo/base.rb +13 -1
- data/lib/dapp/dimg/git_repo/own.rb +9 -1
- data/lib/dapp/dimg/image/docker.rb +9 -3
- data/lib/dapp/helper/cli.rb +3 -1
- data/lib/dapp/helper/net_status.rb +5 -1
- data/lib/dapp/helper/trivia.rb +1 -1
- data/lib/dapp/version.rb +2 -2
- metadata +84 -38
- data/lib/dapp/cli/base.rb +0 -63
- data/lib/dapp/config/base.rb +0 -54
- data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +0 -23
- data/lib/dapp/dimg/cli/base.rb +0 -16
- 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.rb +0 -24
- 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_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
@@ -1,7 +1,7 @@
|
|
1
|
-
module Dapp
|
2
|
-
module
|
3
|
-
|
4
|
-
class Stages
|
1
|
+
module Dapp::Dimg::CLI
|
2
|
+
module Command
|
3
|
+
class Dimg < ::Dapp::CLI
|
4
|
+
class Stages < ::Dapp::CLI
|
5
5
|
class CleanupLocal < Base
|
6
6
|
banner <<BANNER.freeze
|
7
7
|
Usage:
|
@@ -27,11 +27,11 @@ BANNER
|
|
27
27
|
def run(argv = ARGV)
|
28
28
|
self.class.parse_options(self, argv)
|
29
29
|
repository = repo
|
30
|
-
::Dapp::Dapp.new(cli_options:
|
30
|
+
::Dapp::Dapp.new(options: cli_options(dimgs_patterns: cli_arguments, repo: repository)).send(run_method)
|
31
31
|
end
|
32
32
|
|
33
33
|
def repo
|
34
|
-
config[:proper_repo_cache] ? self.class.required_argument(self) : nil
|
34
|
+
config[:proper_repo_cache] ? self.class.required_argument(self, 'repo') : nil
|
35
35
|
end
|
36
36
|
|
37
37
|
def run_method
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module Dapp
|
2
|
-
module
|
3
|
-
|
4
|
-
class Stages
|
1
|
+
module Dapp::Dimg::CLI
|
2
|
+
module Command
|
3
|
+
class Dimg < ::Dapp::CLI
|
4
|
+
class Stages < ::Dapp::CLI
|
5
5
|
class CleanupRepo < CleanupLocal
|
6
6
|
banner <<BANNER.freeze
|
7
7
|
Usage:
|
@@ -17,7 +17,7 @@ BANNER
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def repo
|
20
|
-
self.class.required_argument(self)
|
20
|
+
self.class.required_argument(self, 'repo')
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module Dapp
|
2
|
-
module
|
3
|
-
|
4
|
-
class Stages
|
1
|
+
module Dapp::Dimg::CLI
|
2
|
+
module Command
|
3
|
+
class Dimg < ::Dapp::CLI
|
4
|
+
class Stages < ::Dapp::CLI
|
5
5
|
class FlushLocal < Base
|
6
6
|
banner <<BANNER.freeze
|
7
7
|
Usage:
|
@@ -14,7 +14,7 @@ Options:
|
|
14
14
|
BANNER
|
15
15
|
def run(argv = ARGV)
|
16
16
|
self.class.parse_options(self, argv)
|
17
|
-
::Dapp::Dapp.new(
|
17
|
+
::Dapp::Dapp.new(options: cli_options(dimgs_patterns: cli_arguments)).stages_flush_local
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module Dapp
|
2
|
-
module
|
3
|
-
|
4
|
-
class Stages
|
1
|
+
module Dapp::Dimg::CLI
|
2
|
+
module Command
|
3
|
+
class Dimg < ::Dapp::CLI
|
4
|
+
class Stages < ::Dapp::CLI
|
5
5
|
class FlushRepo < Base
|
6
6
|
banner <<BANNER.freeze
|
7
7
|
Usage:
|
@@ -14,8 +14,8 @@ Options:
|
|
14
14
|
BANNER
|
15
15
|
def run(argv = ARGV)
|
16
16
|
self.class.parse_options(self, argv)
|
17
|
-
repo = self.class.required_argument(self)
|
18
|
-
::Dapp::Dapp.new(cli_options:
|
17
|
+
repo = self.class.required_argument(self, 'repo')
|
18
|
+
::Dapp::Dapp.new(options: cli_options(dimgs_patterns: cli_arguments, repo: repo)).stages_flush_repo
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module Dapp
|
2
|
-
module
|
3
|
-
|
4
|
-
class Stages
|
1
|
+
module Dapp::Dimg::CLI
|
2
|
+
module Command
|
3
|
+
class Dimg < ::Dapp::CLI
|
4
|
+
class Stages < ::Dapp::CLI
|
5
5
|
class Pull < Base
|
6
6
|
banner <<BANNER.freeze
|
7
7
|
Usage:
|
@@ -18,8 +18,8 @@ BANNER
|
|
18
18
|
|
19
19
|
def run(argv = ARGV)
|
20
20
|
self.class.parse_options(self, argv)
|
21
|
-
repo = self.class.required_argument(self)
|
22
|
-
::Dapp::Dapp.new(cli_options:
|
21
|
+
repo = self.class.required_argument(self, 'repo')
|
22
|
+
::Dapp::Dapp.new(options: cli_options(dimgs_patterns: cli_arguments, repo: repo)).stages_pull
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
module Dapp
|
2
|
-
module
|
3
|
-
|
4
|
-
class Stages
|
1
|
+
module Dapp::Dimg::CLI
|
2
|
+
module Command
|
3
|
+
class Dimg < ::Dapp::CLI
|
4
|
+
class Stages < ::Dapp::CLI
|
5
5
|
class Push < Base
|
6
6
|
banner <<BANNER.freeze
|
7
7
|
Usage:
|
@@ -14,8 +14,8 @@ Options:
|
|
14
14
|
BANNER
|
15
15
|
def run(argv = ARGV)
|
16
16
|
self.class.parse_options(self, argv)
|
17
|
-
repo = self.class.required_argument(self)
|
18
|
-
::Dapp::Dapp.new(cli_options:
|
17
|
+
repo = self.class.required_argument(self, 'repo')
|
18
|
+
::Dapp::Dapp.new(options: cli_options(dimgs_patterns: cli_arguments, repo: repo)).stages_push
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -1,12 +1,12 @@
|
|
1
|
-
module Dapp
|
2
|
-
module
|
3
|
-
|
1
|
+
module Dapp::Dimg::CLI
|
2
|
+
module Command
|
3
|
+
class Dimg < ::Dapp::CLI
|
4
4
|
class Tag < Base
|
5
5
|
banner <<BANNER.freeze
|
6
6
|
Usage:
|
7
7
|
|
8
8
|
dapp dimg tag [options] [DIMG] TAG
|
9
|
-
|
9
|
+
|
10
10
|
DIMG Dapp image to process [default: *].
|
11
11
|
REPO Pushed image name.
|
12
12
|
|
@@ -15,8 +15,8 @@ BANNER
|
|
15
15
|
|
16
16
|
def run(argv = ARGV)
|
17
17
|
self.class.parse_options(self, argv)
|
18
|
-
tag = self.class.required_argument(self)
|
19
|
-
::Dapp::Dapp.new(
|
18
|
+
tag = self.class.required_argument(self, 'tag')
|
19
|
+
::Dapp::Dapp.new(options: cli_options(dimgs_patterns: cli_arguments)).public_send(class_to_lowercase, tag)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
module Config
|
5
|
+
def self.included(base)
|
6
|
+
base.include(Directive::DimgGroupBase)
|
7
|
+
end
|
8
|
+
|
9
|
+
protected
|
10
|
+
|
11
|
+
def dimg_config_validate!
|
12
|
+
raise Error::Config, code: :dimg_name_required if _dimg.any? { |dimg| dimg._name.nil? } && _dimg.size > 1
|
13
|
+
_dimg.each(&:validate!)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
::Dapp::Config::Config.send(:include, ::Dapp::Dimg::Config::Config)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
module Directive
|
5
|
+
class ArtifactDimg < Dimg
|
6
|
+
def validate_scratch!
|
7
|
+
end
|
8
|
+
|
9
|
+
def validate_artifacts_artifacts!
|
10
|
+
end
|
11
|
+
|
12
|
+
def validated_artifacts
|
13
|
+
_git_artifact._local + _git_artifact._remote
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Dimg
|
3
|
+
module Config
|
4
|
+
module Directive
|
5
|
+
class ArtifactGroup < DimgGroup
|
6
|
+
def export(*args, &blk)
|
7
|
+
artifact_config = pass_to(ArtifactDimg.new("artifact-#{SecureRandom.hex(2)}", dapp: dapp))
|
8
|
+
artifact = Artifact.new(dapp: dapp, config: artifact_config)
|
9
|
+
artifact.export(*args, &blk).tap do
|
10
|
+
_export.concat artifact._export
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def _shell(&blk)
|
15
|
+
@_shell ||= Shell::Artifact.new(dapp: dapp, &blk)
|
16
|
+
end
|
17
|
+
|
18
|
+
def _docker(&blk)
|
19
|
+
@_docker ||= Docker::Artifact.new(dapp: dapp, &blk)
|
20
|
+
end
|
21
|
+
|
22
|
+
def _export
|
23
|
+
@_export ||= []
|
24
|
+
end
|
25
|
+
|
26
|
+
def validate!
|
27
|
+
_export.each(&:validate!)
|
28
|
+
end
|
29
|
+
|
30
|
+
undef :artifact
|
31
|
+
undef :dimg
|
32
|
+
undef :dimg_group
|
33
|
+
|
34
|
+
protected
|
35
|
+
|
36
|
+
def check_dimg_directive_order(_directive)
|
37
|
+
end
|
38
|
+
|
39
|
+
def check_dimg_group_directive_order(_directive)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -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,149 @@
|
|
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
|
9
|
+
attr_reader :_artifact_groups
|
10
|
+
|
11
|
+
def chef(&blk)
|
12
|
+
builder(:chef)
|
13
|
+
directive_eval(_chef, &blk)
|
14
|
+
end
|
15
|
+
|
16
|
+
def shell(&blk)
|
17
|
+
builder(:shell)
|
18
|
+
directive_eval(_shell, &blk)
|
19
|
+
end
|
20
|
+
|
21
|
+
def docker(&blk)
|
22
|
+
directive_eval(_docker, &blk)
|
23
|
+
end
|
24
|
+
|
25
|
+
def artifact(&blk)
|
26
|
+
pass_to(ArtifactGroup.new(dapp: dapp), :clone_to_artifact).tap do |artifact_group|
|
27
|
+
_artifact_groups << directive_eval(artifact_group, &blk)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def git(url = nil, &blk)
|
32
|
+
type = url.nil? ? :local : :remote
|
33
|
+
_git_artifact.public_send(type, url.to_s, &blk)
|
34
|
+
end
|
35
|
+
|
36
|
+
def mount(to, &blk)
|
37
|
+
Mount.new(to, dapp: dapp, &blk).tap do |mount|
|
38
|
+
_mount << mount
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def _builder
|
43
|
+
@_builder || :none
|
44
|
+
end
|
45
|
+
|
46
|
+
def _chef
|
47
|
+
@_chef ||= Chef.new(dapp: dapp)
|
48
|
+
end
|
49
|
+
|
50
|
+
def _shell
|
51
|
+
@_shell ||= Shell::Dimg.new(dapp: dapp)
|
52
|
+
end
|
53
|
+
|
54
|
+
def _docker
|
55
|
+
@_docker ||= Docker::Dimg.new(dapp: dapp)
|
56
|
+
end
|
57
|
+
|
58
|
+
def _mount
|
59
|
+
@_mount ||= []
|
60
|
+
end
|
61
|
+
|
62
|
+
def _git_artifact
|
63
|
+
@_git_artifact ||= GitArtifact.new(dapp: dapp)
|
64
|
+
end
|
65
|
+
|
66
|
+
[:build_dir, :tmp_dir].each do |mount_type|
|
67
|
+
define_method "_#{mount_type}_mount" do
|
68
|
+
_mount.select { |m| m._type == mount_type }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def _artifact_groups
|
73
|
+
@_artifact_groups ||= []
|
74
|
+
end
|
75
|
+
|
76
|
+
def _artifact
|
77
|
+
_artifact_groups.map(&:_export).flatten
|
78
|
+
end
|
79
|
+
|
80
|
+
[:before, :after].each do |order|
|
81
|
+
[:setup, :install].each do |stage|
|
82
|
+
define_method "_#{order}_#{stage}_artifact" do
|
83
|
+
_artifact.select do |art|
|
84
|
+
art.public_send("_#{order}") == stage
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def _import_artifact
|
91
|
+
_artifact.select(&:not_associated?)
|
92
|
+
end
|
93
|
+
|
94
|
+
class GitArtifact < Base
|
95
|
+
attr_reader :_local, :_remote
|
96
|
+
|
97
|
+
def initialize(**kwargs, &blk)
|
98
|
+
@_local = []
|
99
|
+
@_remote = []
|
100
|
+
|
101
|
+
super(**kwargs, &blk)
|
102
|
+
end
|
103
|
+
|
104
|
+
def local(_, &blk)
|
105
|
+
GitArtifactLocal.new(dapp: dapp, &blk).tap do |git|
|
106
|
+
@_local << git
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def remote(repo_url, &blk)
|
111
|
+
GitArtifactRemote.new(repo_url, dapp: dapp, &blk).tap do |git|
|
112
|
+
@_remote << git
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def _local
|
117
|
+
@_local.map(&:_export).flatten
|
118
|
+
end
|
119
|
+
|
120
|
+
def _remote
|
121
|
+
@_remote.map(&:_export).flatten
|
122
|
+
end
|
123
|
+
|
124
|
+
def empty?
|
125
|
+
(_local + _remote).empty?
|
126
|
+
end
|
127
|
+
|
128
|
+
def validate!
|
129
|
+
(_local + _remote).each(&:validate!)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
protected
|
134
|
+
|
135
|
+
def builder(type)
|
136
|
+
@_builder = type if _builder == :none
|
137
|
+
raise Error::Config, code: :builder_type_conflict unless @_builder == type
|
138
|
+
end
|
139
|
+
|
140
|
+
def passed_directives
|
141
|
+
[:@_chef, :@_shell, :@_docker, :@_git_artifact, :@_mount, :@_artifact_groups, :@_builder]
|
142
|
+
end
|
143
|
+
end # InstanceMethods
|
144
|
+
# rubocop:enable Metrics/ModuleLength
|
145
|
+
end # Dimg
|
146
|
+
end # Directive
|
147
|
+
end # Config
|
148
|
+
end # Dimg
|
149
|
+
end # Dapp
|