dapp 0.13.3 → 0.13.4
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 +0 -13
- data/config/en/common.yml +4 -2
- data/config/en/net_status.yml +15 -3
- data/lib/dapp.rb +11 -6
- data/lib/dapp/cli.rb +1 -1
- data/lib/dapp/cli/command/base.rb +4 -4
- data/lib/dapp/config/directive/base.rb +4 -2
- data/lib/dapp/core_ext/hash.rb +14 -0
- data/lib/dapp/dapp.rb +32 -6
- data/lib/dapp/dapp/dapp_config.rb +85 -0
- data/lib/dapp/dapp/dappfile.rb +4 -0
- data/lib/dapp/dapp/deps/base.rb +2 -2
- data/lib/dapp/dapp/deps/gitartifact.rb +2 -2
- data/lib/dapp/dapp/logging/base.rb +5 -5
- data/lib/dapp/dapp/logging/process.rb +5 -7
- data/lib/dapp/dapp/shellout/base.rb +16 -17
- data/lib/dapp/deployment/cli/command/deployment.rb +2 -3
- data/lib/dapp/deployment/dapp/command/apply.rb +6 -6
- data/lib/dapp/deployment/dapp/dapp.rb +0 -1
- data/lib/dapp/deployment/kube_app.rb +1 -1
- data/lib/dapp/deployment/kube_base.rb +1 -1
- data/lib/dapp/dimg/build/stage/artifact_base.rb +3 -8
- data/lib/dapp/dimg/build/stage/base.rb +57 -38
- data/lib/dapp/dimg/build/stage/docker_instructions.rb +1 -1
- data/lib/dapp/dimg/build/stage/from.rb +6 -2
- data/lib/dapp/dimg/build/stage/ga_archive_dependencies.rb +2 -2
- data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +1 -5
- data/lib/dapp/dimg/build/stage/ga_base.rb +1 -14
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +7 -31
- data/lib/dapp/dimg/build/stage/ga_related_dependencies_base.rb +21 -0
- data/lib/dapp/dimg/build/stage/import_artifact.rb +10 -3
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +3 -3
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +3 -3
- data/lib/dapp/dimg/build/stage/mod/group.rb +19 -7
- data/lib/dapp/dimg/build/stage/mod/logging.rb +7 -20
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +1 -1
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +3 -3
- data/lib/dapp/dimg/builder/chef.rb +2 -2
- data/lib/dapp/dimg/builder/chef/cookbook.rb +2 -2
- data/lib/dapp/dimg/cli/command/dimg.rb +1 -1
- data/lib/dapp/dimg/cli/command/dimg/build.rb +15 -8
- data/lib/dapp/dimg/config/directive/artifact_base.rb +13 -4
- data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +1 -1
- data/lib/dapp/dimg/config/directive/dimg/validation.rb +6 -1
- data/lib/dapp/dimg/config/directive/docker/base.rb +1 -2
- data/lib/dapp/dimg/config/directive/git_artifact_local.rb +3 -0
- data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +1 -1
- data/lib/dapp/dimg/config/directive/mount.rb +9 -1
- data/lib/dapp/dimg/dapp/command/build_context/export.rb +13 -15
- data/lib/dapp/dimg/dapp/command/build_context/import.rb +3 -3
- data/lib/dapp/dimg/dapp/command/cleanup.rb +1 -1
- data/lib/dapp/dimg/dapp/command/common.rb +17 -6
- data/lib/dapp/dimg/dapp/command/mrproper.rb +9 -4
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +19 -17
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +1 -1
- data/lib/dapp/dimg/dimg.rb +5 -5
- data/lib/dapp/dimg/dimg/git_artifact.rb +11 -6
- data/lib/dapp/dimg/dimg/path.rb +2 -6
- data/lib/dapp/dimg/git_artifact.rb +118 -66
- data/lib/dapp/dimg/git_repo/base.rb +1 -1
- data/lib/dapp/dimg/git_repo/own.rb +1 -1
- data/lib/dapp/dimg/git_repo/remote.rb +23 -14
- data/lib/dapp/dimg/image/docker.rb +11 -11
- data/lib/dapp/dimg/image/scratch.rb +33 -9
- data/lib/dapp/dimg/image/stage.rb +3 -3
- data/lib/dapp/helper/cli.rb +8 -0
- data/lib/dapp/helper/tar.rb +31 -0
- data/lib/dapp/kube/cli/command/kube.rb +5 -4
- data/lib/dapp/kube/cli/command/kube/deploy.rb +5 -0
- data/lib/dapp/kube/cli/command/kube/minikube_setup.rb +13 -0
- data/lib/dapp/kube/cli/command/kube/{secret_file_encrypt.rb → secret_extract.rb} +3 -3
- data/lib/dapp/kube/cli/command/kube/secret_generate.rb +11 -1
- data/lib/dapp/kube/client.rb +1 -1
- data/lib/dapp/kube/client/error.rb +1 -1
- data/lib/dapp/kube/dapp/command/common.rb +29 -4
- data/lib/dapp/kube/dapp/command/deploy.rb +43 -21
- data/lib/dapp/kube/dapp/command/dismiss.rb +1 -1
- data/lib/dapp/{deployment → kube}/dapp/command/minikube_setup.rb +12 -12
- data/lib/dapp/kube/dapp/command/secret_extract.rb +46 -0
- data/lib/dapp/kube/dapp/command/secret_generate.rb +33 -4
- data/lib/dapp/kube/dapp/dapp.rb +3 -2
- data/lib/dapp/kube/error/kubernetes.rb +7 -0
- data/lib/dapp/kube/secret.rb +1 -1
- data/lib/dapp/version.rb +2 -2
- metadata +11 -7
- data/lib/dapp/deployment/cli/command/deployment/minikube_setup.rb +0 -13
- data/lib/dapp/kube/dapp/command/secret_file_encrypt.rb +0 -22
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6570b7b1469e193e6f8ff6f6af3aa14b209859e7
|
|
4
|
+
data.tar.gz: d3c5e800a04f70a35ca60a5a91dd83c026c5862a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b9ce968a3bb3bcb5ae8e41a1baa09a6f60b62600aca223887aa007a90ca3fbdf90ba2990c2b3e24c87a2ff0c77491d7a2a0d6e1e5ccb3e01eb88e352550be68f
|
|
7
|
+
data.tar.gz: 4fd1fae4d99bec6b86f818c0e43991d4d14354db0fa30a1e177820cbbba43e12f430128aa06594a4ec2ce5713eed695d97beea4d5407bead8923b678b790dd06
|
data/bin/dapp
CHANGED
|
@@ -5,20 +5,7 @@
|
|
|
5
5
|
require 'rubygems'
|
|
6
6
|
require 'dapp'
|
|
7
7
|
|
|
8
|
-
def check_docker_version
|
|
9
|
-
required_docker_version = '1.10.0'
|
|
10
|
-
if Gem::Version.new(required_docker_version) >= Gem::Version.new(`docker --version`[/(\d+\.)+\d+/])
|
|
11
|
-
$stderr.puts(Dapp::Dapp.paint_string("Required docker version: >= #{required_docker_version}!", :warning))
|
|
12
|
-
exit 1
|
|
13
|
-
end
|
|
14
|
-
rescue Errno::ENOENT => e
|
|
15
|
-
$stderr.puts(Dapp::Dapp.paint_string(e.message, :warning))
|
|
16
|
-
exit 1
|
|
17
|
-
end
|
|
18
|
-
|
|
19
8
|
begin
|
|
20
|
-
check_docker_version
|
|
21
|
-
|
|
22
9
|
begin
|
|
23
10
|
begin
|
|
24
11
|
Dapp::CLI.new.run
|
data/config/en/common.yml
CHANGED
|
@@ -39,7 +39,6 @@ en:
|
|
|
39
39
|
using_cache: '[USING CACHE]'
|
|
40
40
|
not_present: '[NOT PRESENT]'
|
|
41
41
|
build: '[BUILD]'
|
|
42
|
-
empty: '[EMPTY]'
|
|
43
42
|
push: '[PUSH]'
|
|
44
43
|
pull: '[PULL]'
|
|
45
44
|
tag: '[TAG]'
|
|
@@ -54,7 +53,10 @@ en:
|
|
|
54
53
|
stage_artifact_rewritten: "WARNING: Artifact stage rewritten from %{conflict_stage} to %{stage}."
|
|
55
54
|
recipe_does_not_used: "WARNING: Recipe `%{recipe}` doesn't used in any stage."
|
|
56
55
|
context_archive_not_found: "WARNING: context archive `%{path}` not found!"
|
|
57
|
-
dapp_secret_key_not_found: "Secrets haven't decoded:
|
|
56
|
+
dapp_secret_key_not_found: "WARNING: Secrets haven't decoded: secret key not found in %{not_found_in}!"
|
|
57
|
+
introspect_image_impossible: "WARNING: You can't introspect stage `%{name}`!"
|
|
58
|
+
stage_dependencies_not_found: "WARNING: Stage dependencies `%{dependencies}` haven't been found in repo `%{repo}`!"
|
|
59
|
+
unsupported_dapp_config_options: "WARNING: .dapp_config includes unsupported options [%{options}]: use only following options [%{supported_options}]"
|
|
58
60
|
group:
|
|
59
61
|
install: 'Install group'
|
|
60
62
|
setup: 'Setup group'
|
data/config/en/net_status.yml
CHANGED
|
@@ -27,7 +27,7 @@ en:
|
|
|
27
27
|
tag_name_incorrect: "Incorrect tag name `%{name}` given!"
|
|
28
28
|
context_directory_not_found: "Context directory `%{path}` not found!"
|
|
29
29
|
stored_build_dir_already_exist: "Cannot store current build_dir `%{path}`: restore or delete old build_dir!"
|
|
30
|
-
secret_key_not_found: "Secret key
|
|
30
|
+
secret_key_not_found: "Secret key not found in %{not_found_in}!"
|
|
31
31
|
minikube_not_found: "Minikube not found: install minikube (https://github.com/kubernetes/minikube/releases)!"
|
|
32
32
|
minikube_not_started: "Minikube not started!"
|
|
33
33
|
project_helm_chart_not_found: "Project helm chart `%{path}` not found!"
|
|
@@ -35,16 +35,25 @@ en:
|
|
|
35
35
|
helm_release_not_exist: "Helm release `%{name}` not exist!"
|
|
36
36
|
file_not_exist: "File `%{path}` doesn't exist!"
|
|
37
37
|
helm_directory_not_exist: "Helm directory doesn't exist in project!"
|
|
38
|
+
values_file_not_found: "Values file `%{path}` not found!"
|
|
39
|
+
secret_values_file_not_found: "Secret values file `%{path}` not found!"
|
|
40
|
+
user_containers_detected: "User containers have been using images!\n%{ids}"
|
|
38
41
|
dapp:
|
|
39
42
|
no_such_dimg: "No such dimg: `%{dimgs_patterns}`!"
|
|
40
43
|
no_such_app: "No such app: `%{apps_patterns}`!"
|
|
41
44
|
dappfile_not_found: "Dappfile not found!"
|
|
42
45
|
cannot_run_ssh_agent: "Cannot run ssh-agent"
|
|
43
46
|
ssh_key_not_found: "Ssh key `%{path}` not exist!"
|
|
47
|
+
docker_not_found: "Docker not found!"
|
|
48
|
+
docker_version: "Required docker version: >= %{version}!"
|
|
49
|
+
dapp_config_file_incorrect: "%{message}"
|
|
50
|
+
incorrect_dapp_config_option: ".dapp_config includes option `%{option}` with incorrect value `%{value}`: expected one of the following types [%{expected}]"
|
|
51
|
+
incorrect_dapp_config_option_color: ".dapp_config includes option `color` with incorrect value `%{value}`: expected one of the following values [%{expected}]"
|
|
44
52
|
config:
|
|
45
53
|
dimg_name_required: 'Dimg name required!'
|
|
46
54
|
dimg_name_incorrect: "Dimg has incorrect name `%{value}`: doesn't match regex `%{pattern}`!"
|
|
47
|
-
|
|
55
|
+
mount_from_or_from_path_required: "Mount: `from` or `from_path` directive required!"
|
|
56
|
+
mount_duplicate_to: "Duplicate mount point `%{path}`!"
|
|
48
57
|
export_to_required: "Export: `to` directive required!"
|
|
49
58
|
add_to_required: "Add: `to` directive required!"
|
|
50
59
|
export_cwd_absolute_path_required: "Export: given cwd path must be absolute!"
|
|
@@ -56,7 +65,6 @@ en:
|
|
|
56
65
|
mount_from_type_required: "Mount: `from` directive expect `build_dir` or `tmp_dir` type!"
|
|
57
66
|
builder_type_conflict: 'Conflict between builder types!'
|
|
58
67
|
docker_from_incorrect: "`docker.from` has incorrect value `%{name}`!"
|
|
59
|
-
docker_from_without_tag: "`docker.from`: image `%{name}` without tag!"
|
|
60
68
|
stage_artifact_not_associated: "Artifact not associated with any stage: expected `before` or `after` attribute!"
|
|
61
69
|
stage_artifact_double_associate: "Cannot use `%{stage}` stage for artifact, already used in `%{conflict_stage}` stage!"
|
|
62
70
|
stage_artifact_not_supported_associated_stage: "Bad artifact stage `%{stage}`!"
|
|
@@ -99,6 +107,7 @@ en:
|
|
|
99
107
|
commit_not_found_in_local_git_repository: "Local git repo: commit `%{commit}` not found!\nIf commit has been rebased: run command `dapp dimg stages cleanup local --improper-git-commit`!"
|
|
100
108
|
commit_not_found_in_remote_git_repository: "Remote git repo `%{url}`: commit `%{commit}` not found!\nIf commit has been rebased: run command `dapp dimg stages cleanup local --improper-git-commit`!"
|
|
101
109
|
branch_not_exist_in_remote_git_repository: "Remote git repo `%{url}`: branch `%{branch}` not exist!"
|
|
110
|
+
rugged_protocol_not_supported: "Rugged has been compiled without support for `%{protocol}`.\nGit repositories will not be reachable via `%{protocol}` (`%{url}`).\nRugged.features should include `%{protocol}`."
|
|
102
111
|
lock:
|
|
103
112
|
timeout: "Could not obtain lock for `%{name}` within %{timeout} seconds"
|
|
104
113
|
app:
|
|
@@ -113,3 +122,6 @@ en:
|
|
|
113
122
|
kubernetes:
|
|
114
123
|
kube_config_not_found: "Kube config `%{path}` not found!"
|
|
115
124
|
kube_server_connection_refused: "Kube server `%{url}` connection refused: %{error}"
|
|
125
|
+
secret:
|
|
126
|
+
bad_data: "Data `%{data}` can't be decrypted: check encryption key and data."
|
|
127
|
+
key_length_too_short: "Encryption key isn't valid (required size %{required_size} bytes)!"
|
data/lib/dapp.rb
CHANGED
|
@@ -22,6 +22,7 @@ require 'net_status'
|
|
|
22
22
|
require 'yaml'
|
|
23
23
|
require 'openssl'
|
|
24
24
|
require 'etc'
|
|
25
|
+
require 'zlib'
|
|
25
26
|
|
|
26
27
|
require 'dapp/version'
|
|
27
28
|
require 'dapp/core_ext/hash'
|
|
@@ -30,6 +31,7 @@ require 'dapp/helper/cli'
|
|
|
30
31
|
require 'dapp/helper/trivia'
|
|
31
32
|
require 'dapp/helper/sha256'
|
|
32
33
|
require 'dapp/helper/net_status'
|
|
34
|
+
require 'dapp/helper/tar'
|
|
33
35
|
require 'dapp/prctl'
|
|
34
36
|
require 'dapp/error/base'
|
|
35
37
|
require 'dapp/error/dapp'
|
|
@@ -46,6 +48,7 @@ require 'dapp/dapp/ssh_agent'
|
|
|
46
48
|
require 'dapp/dapp/git_artifact'
|
|
47
49
|
require 'dapp/dapp/dappfile'
|
|
48
50
|
require 'dapp/dapp/chef'
|
|
51
|
+
require 'dapp/dapp/dapp_config'
|
|
49
52
|
require 'dapp/dapp/logging/base'
|
|
50
53
|
require 'dapp/dapp/logging/process'
|
|
51
54
|
require 'dapp/dapp/logging/paint'
|
|
@@ -89,16 +92,17 @@ require 'dapp/deployment/cli/command/base'
|
|
|
89
92
|
require 'dapp/deployment/cli/command/deployment'
|
|
90
93
|
require 'dapp/deployment/cli/command/deployment/apply'
|
|
91
94
|
require 'dapp/deployment/cli/command/deployment/mrproper'
|
|
92
|
-
require 'dapp/deployment/cli/command/deployment/minikube_setup'
|
|
93
95
|
require 'dapp/deployment/cli/cli'
|
|
94
96
|
require 'dapp/deployment/dapp/command/mrproper'
|
|
95
97
|
require 'dapp/deployment/dapp/command/apply'
|
|
96
|
-
require 'dapp/deployment/dapp/command/minikube_setup'
|
|
97
98
|
require 'dapp/deployment/dapp/command/common'
|
|
98
99
|
require 'dapp/deployment/dapp/dappfile'
|
|
99
100
|
require 'dapp/deployment/dapp/dapp'
|
|
100
101
|
require 'dapp/deployment/secret'
|
|
101
102
|
require 'dapp/kube'
|
|
103
|
+
require 'dapp/kube/error/base'
|
|
104
|
+
require 'dapp/kube/error/command'
|
|
105
|
+
require 'dapp/kube/error/kubernetes'
|
|
102
106
|
require 'dapp/kube/client'
|
|
103
107
|
require 'dapp/kube/client/error'
|
|
104
108
|
require 'dapp/kube/cli/command/base'
|
|
@@ -107,17 +111,17 @@ require 'dapp/kube/cli/command/kube/deploy'
|
|
|
107
111
|
require 'dapp/kube/cli/command/kube/dismiss'
|
|
108
112
|
require 'dapp/kube/cli/command/kube/secret_key_generate'
|
|
109
113
|
require 'dapp/kube/cli/command/kube/secret_generate'
|
|
110
|
-
require 'dapp/kube/cli/command/kube/
|
|
114
|
+
require 'dapp/kube/cli/command/kube/secret_extract'
|
|
115
|
+
require 'dapp/kube/cli/command/kube/minikube_setup'
|
|
111
116
|
require 'dapp/kube/cli/cli'
|
|
112
117
|
require 'dapp/kube/dapp/command/common'
|
|
113
118
|
require 'dapp/kube/dapp/command/deploy'
|
|
114
119
|
require 'dapp/kube/dapp/command/dismiss'
|
|
115
120
|
require 'dapp/kube/dapp/command/secret_key_generate'
|
|
116
121
|
require 'dapp/kube/dapp/command/secret_generate'
|
|
117
|
-
require 'dapp/kube/dapp/command/
|
|
122
|
+
require 'dapp/kube/dapp/command/secret_extract'
|
|
123
|
+
require 'dapp/kube/dapp/command/minikube_setup'
|
|
118
124
|
require 'dapp/kube/dapp/dapp'
|
|
119
|
-
require 'dapp/kube/error/base'
|
|
120
|
-
require 'dapp/kube/error/command'
|
|
121
125
|
require 'dapp/kube/secret'
|
|
122
126
|
require 'dapp/dimg'
|
|
123
127
|
require 'dapp/dimg/builder'
|
|
@@ -133,6 +137,7 @@ require 'dapp/dimg/build/stage/mod/group'
|
|
|
133
137
|
require 'dapp/dimg/build/stage/base'
|
|
134
138
|
require 'dapp/dimg/build/stage/ga_base'
|
|
135
139
|
require 'dapp/dimg/build/stage/ga_dependencies_base'
|
|
140
|
+
require 'dapp/dimg/build/stage/ga_related_dependencies_base'
|
|
136
141
|
require 'dapp/dimg/build/stage/artifact_base'
|
|
137
142
|
require 'dapp/dimg/build/stage/artifact_default'
|
|
138
143
|
require 'dapp/dimg/build/stage/from'
|
data/lib/dapp/cli.rb
CHANGED
|
@@ -11,20 +11,20 @@ module Dapp
|
|
|
11
11
|
long: '--build-dir PATH',
|
|
12
12
|
description: 'Directory where build cache stored (DIR/.dapp_build by default)'
|
|
13
13
|
|
|
14
|
-
option :
|
|
14
|
+
option :quiet,
|
|
15
15
|
short: '-q',
|
|
16
16
|
long: '--quiet',
|
|
17
17
|
description: 'Suppress logging',
|
|
18
18
|
default: false,
|
|
19
19
|
boolean: true
|
|
20
20
|
|
|
21
|
-
option :
|
|
21
|
+
option :verbose,
|
|
22
22
|
long: '--verbose',
|
|
23
23
|
description: 'Enable verbose output',
|
|
24
24
|
default: false,
|
|
25
25
|
boolean: true
|
|
26
26
|
|
|
27
|
-
option :
|
|
27
|
+
option :time,
|
|
28
28
|
long: '--time',
|
|
29
29
|
description: 'Enable output with time',
|
|
30
30
|
default: false,
|
|
@@ -35,7 +35,7 @@ module Dapp
|
|
|
35
35
|
default: false,
|
|
36
36
|
boolean: true
|
|
37
37
|
|
|
38
|
-
option :
|
|
38
|
+
option :color,
|
|
39
39
|
long: '--color MODE',
|
|
40
40
|
description: 'Display output in color on the terminal',
|
|
41
41
|
in: %w(auto on off),
|
data/lib/dapp/core_ext/hash.rb
CHANGED
|
@@ -12,6 +12,20 @@ module Dapp
|
|
|
12
12
|
end
|
|
13
13
|
end
|
|
14
14
|
end
|
|
15
|
+
|
|
16
|
+
def symbolize_keys
|
|
17
|
+
transform_keys { |key| key.to_sym rescue key }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def transform_keys
|
|
23
|
+
result = {}
|
|
24
|
+
each_key do |key|
|
|
25
|
+
result[yield(key)] = self[key]
|
|
26
|
+
end
|
|
27
|
+
result
|
|
28
|
+
end
|
|
15
29
|
end
|
|
16
30
|
end
|
|
17
31
|
end
|
data/lib/dapp/dapp.rb
CHANGED
|
@@ -4,6 +4,7 @@ module Dapp
|
|
|
4
4
|
include GitArtifact
|
|
5
5
|
include Dappfile
|
|
6
6
|
include Chef
|
|
7
|
+
include DappConfig
|
|
7
8
|
|
|
8
9
|
include Logging::Base
|
|
9
10
|
include Logging::Process
|
|
@@ -13,6 +14,7 @@ module Dapp
|
|
|
13
14
|
include SshAgent
|
|
14
15
|
include Helper::Sha256
|
|
15
16
|
include Helper::Trivia
|
|
17
|
+
include Helper::Tar
|
|
16
18
|
|
|
17
19
|
include Deps::Gitartifact
|
|
18
20
|
include Deps::Base
|
|
@@ -23,8 +25,9 @@ module Dapp
|
|
|
23
25
|
|
|
24
26
|
def initialize(options: {})
|
|
25
27
|
@options = options
|
|
26
|
-
Logging::Paint.initialize(options[:log_color])
|
|
27
28
|
Logging::I18n.initialize
|
|
29
|
+
validate_config_options!
|
|
30
|
+
Logging::Paint.initialize(option_color)
|
|
28
31
|
end
|
|
29
32
|
|
|
30
33
|
def name
|
|
@@ -34,9 +37,9 @@ module Dapp
|
|
|
34
37
|
repo_name = repo_name[/.*(?=\.git)/] if repo_name.end_with? '.git'
|
|
35
38
|
repo_name
|
|
36
39
|
elsif git_path
|
|
37
|
-
File.basename(File.dirname(git_path))
|
|
40
|
+
File.basename(File.dirname(git_path)).to_s
|
|
38
41
|
else
|
|
39
|
-
path.basename
|
|
42
|
+
path.basename.to_s
|
|
40
43
|
end
|
|
41
44
|
end
|
|
42
45
|
end
|
|
@@ -63,14 +66,19 @@ module Dapp
|
|
|
63
66
|
make_path(@path, *path)
|
|
64
67
|
end
|
|
65
68
|
|
|
66
|
-
def
|
|
69
|
+
def tmp_base_dir
|
|
70
|
+
File.expand_path(options[:tmp_dir_prefix] || '/tmp')
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def build_path(*path)
|
|
67
74
|
@build_path ||= begin
|
|
68
|
-
if
|
|
69
|
-
Pathname.new(
|
|
75
|
+
if option_build_dir
|
|
76
|
+
Pathname.new(option_build_dir)
|
|
70
77
|
else
|
|
71
78
|
path('.dapp_build')
|
|
72
79
|
end.expand_path.tap(&:mkpath)
|
|
73
80
|
end
|
|
81
|
+
make_path(@build_path, *path)
|
|
74
82
|
end
|
|
75
83
|
|
|
76
84
|
def local_git_artifact_exclude_paths(&blk)
|
|
@@ -89,5 +97,23 @@ module Dapp
|
|
|
89
97
|
def stage_dapp_label
|
|
90
98
|
name
|
|
91
99
|
end
|
|
100
|
+
|
|
101
|
+
def host_docker_bin
|
|
102
|
+
self.class.host_docker_bin
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def self.host_docker_bin
|
|
106
|
+
@host_docker_bin ||= begin
|
|
107
|
+
raise Error::Dapp, code: :docker_not_found if (res = shellout('which docker')).exitstatus.nonzero?
|
|
108
|
+
res.stdout.strip.tap do |docker_bin|
|
|
109
|
+
current_docker_version = shellout!("#{docker_bin} --version").stdout.strip
|
|
110
|
+
required_docker_version = '1.10.0'
|
|
111
|
+
|
|
112
|
+
if Gem::Version.new(required_docker_version) >= Gem::Version.new(current_docker_version[/(\d+\.)+\d+/])
|
|
113
|
+
raise Error::Dapp, code: :docker_version, data: { version: required_docker_version }
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
92
118
|
end # Dapp
|
|
93
119
|
end # Dapp
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
module Dapp
|
|
2
|
+
class Dapp
|
|
3
|
+
module DappConfig
|
|
4
|
+
SUPPORTED_CONFIG_OPTIONS = {
|
|
5
|
+
verbose: [FalseClass, TrueClass],
|
|
6
|
+
quiet: [FalseClass, TrueClass],
|
|
7
|
+
dev: [FalseClass, TrueClass],
|
|
8
|
+
time: [FalseClass, TrueClass],
|
|
9
|
+
dry_run: [FalseClass, TrueClass],
|
|
10
|
+
build_dir: [String],
|
|
11
|
+
color: [String]
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
SUPPORTED_CONFIG_OPTIONS.keys.each do |opt|
|
|
15
|
+
define_method "option_#{opt}" do
|
|
16
|
+
options[opt] || config_options[opt]
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def option_color
|
|
21
|
+
if options[:color] == 'auto'
|
|
22
|
+
config_options[:color] || 'auto'
|
|
23
|
+
else
|
|
24
|
+
options[:color]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def option_dev
|
|
29
|
+
if options[:dev].nil?
|
|
30
|
+
config._dev_mode || config_options[:dev]
|
|
31
|
+
else
|
|
32
|
+
options[:dev]
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def config_options
|
|
37
|
+
@config_options ||= begin
|
|
38
|
+
config_search_paths = []
|
|
39
|
+
config_search_paths << File.join(Dir.home)
|
|
40
|
+
config_search_paths << path if dappfile_exists?
|
|
41
|
+
|
|
42
|
+
config_search_paths.reduce({}) do |options, dir|
|
|
43
|
+
if (config_options_path = make_path(dir, '.dapp_config')).file?
|
|
44
|
+
config_options = begin
|
|
45
|
+
YAML.load_file(config_options_path).tap do |c_options|
|
|
46
|
+
c_options.merge!(c_options.in_depth_merge(c_options['ci'] || {})) if ENV['GITLAB_CI'] || ENV['TRAVIS']
|
|
47
|
+
c_options.delete('ci')
|
|
48
|
+
end
|
|
49
|
+
rescue Psych::SyntaxError => e
|
|
50
|
+
raise Error::Dapp, code: :dapp_config_file_incorrect, data: { message: e.message }
|
|
51
|
+
end
|
|
52
|
+
options.in_depth_merge(config_options)
|
|
53
|
+
else
|
|
54
|
+
options
|
|
55
|
+
end
|
|
56
|
+
end.symbolize_keys
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def validate_config_options!
|
|
61
|
+
data_list_format = proc { |list| list.map { |e| "'#{e}'" }.join(', ') }
|
|
62
|
+
|
|
63
|
+
unless (unsupported_keys = config_options.select { |k, _| !SUPPORTED_CONFIG_OPTIONS.keys.include?(k) }.keys).empty?
|
|
64
|
+
log_warning(desc: { code: :unsupported_dapp_config_options,
|
|
65
|
+
data: { options: data_list_format.call(unsupported_keys),
|
|
66
|
+
supported_options: data_list_format.call(SUPPORTED_CONFIG_OPTIONS.keys) } })
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
config_options.each do |k, v|
|
|
70
|
+
next unless SUPPORTED_CONFIG_OPTIONS.keys.include?(k)
|
|
71
|
+
|
|
72
|
+
if k == :color
|
|
73
|
+
raise Error::Dapp,
|
|
74
|
+
code: :incorrect_dapp_config_option_color,
|
|
75
|
+
data: { value: v, expected: data_list_format.call(%w(auto on off)) } unless %w(auto on off).member?(v)
|
|
76
|
+
elsif !SUPPORTED_CONFIG_OPTIONS[k].member? v.class
|
|
77
|
+
raise Error::Dapp,
|
|
78
|
+
code: :incorrect_dapp_config_option,
|
|
79
|
+
data: { option: k, value: v, expected: data_list_format.call(SUPPORTED_CONFIG_OPTIONS[k]) }
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end # DappConfig
|
|
84
|
+
end # Dapp
|
|
85
|
+
end # Dapp
|
data/lib/dapp/dapp/dappfile.rb
CHANGED