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
@@ -0,0 +1,93 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Deployment
|
3
|
+
class Secret
|
4
|
+
attr_reader :key
|
5
|
+
|
6
|
+
def initialize(key)
|
7
|
+
self.class._validate_key!(key)
|
8
|
+
@key = key
|
9
|
+
end
|
10
|
+
|
11
|
+
def generate(value)
|
12
|
+
cipher = self.class._openssl_cipher
|
13
|
+
cipher.encrypt
|
14
|
+
cipher.key = self.class._hex_to_binary key
|
15
|
+
iv = cipher.random_iv
|
16
|
+
|
17
|
+
iv_size_prefix = [iv.bytesize].pack('S')
|
18
|
+
encrypted = cipher.update(value.to_s) + cipher.final
|
19
|
+
|
20
|
+
self.class._binary_to_hex "#{iv_size_prefix}#{iv}#{encrypted}"
|
21
|
+
end
|
22
|
+
|
23
|
+
def extract(hexdata)
|
24
|
+
data = self.class._hex_to_binary hexdata.to_s
|
25
|
+
|
26
|
+
iv_size = data.unpack('S').first
|
27
|
+
data = data.byteslice(2..-1)
|
28
|
+
raise ExtractionError, code: :bad_data, data: {data: hexdata} unless data
|
29
|
+
|
30
|
+
iv = data.byteslice(0, iv_size)
|
31
|
+
data = data.byteslice(iv_size..-1)
|
32
|
+
raise ExtractionError, code: :bad_data, data: {data: hexdata} unless data
|
33
|
+
|
34
|
+
decipher = self.class._openssl_cipher
|
35
|
+
decipher.decrypt
|
36
|
+
decipher.key = self.class._hex_to_binary(key)
|
37
|
+
|
38
|
+
begin
|
39
|
+
decipher.iv = iv
|
40
|
+
rescue OpenSSL::Cipher::CipherError
|
41
|
+
raise ExtractionError, code: :bad_data, data: {data: hexdata}
|
42
|
+
end
|
43
|
+
|
44
|
+
begin
|
45
|
+
value = decipher.update(data) + decipher.final
|
46
|
+
rescue OpenSSL::Cipher::CipherError
|
47
|
+
raise ExtractionError, code: :bad_data, data: {data: hexdata}
|
48
|
+
end
|
49
|
+
value.force_encoding('utf-8')
|
50
|
+
end
|
51
|
+
|
52
|
+
class << self
|
53
|
+
def generate_key
|
54
|
+
_binary_to_hex _openssl_cipher.random_key
|
55
|
+
end
|
56
|
+
|
57
|
+
def _openssl_cipher
|
58
|
+
OpenSSL::Cipher::AES.new(128, :CBC)
|
59
|
+
end
|
60
|
+
|
61
|
+
def _hex_to_binary(key)
|
62
|
+
[key].pack('H*')
|
63
|
+
end
|
64
|
+
|
65
|
+
def _binary_to_hex(key)
|
66
|
+
key.unpack('H*').first
|
67
|
+
end
|
68
|
+
|
69
|
+
def _validate_key!(key)
|
70
|
+
# Требуется 128 битный ключ — это 16 байт.
|
71
|
+
# Ключ закодирован в hex кодировке для пользователя.
|
72
|
+
# 2 hex символа на 1 байт в hex кодировке.
|
73
|
+
# Поэтому требуется длина ключа в hex кодировке в 32 символа.
|
74
|
+
if key.bytesize < 32
|
75
|
+
raise InvalidKeyError, code: :key_length_too_short, data: {required_size: 32}
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
class Error < ::Dapp::Deployment::Error::Base
|
81
|
+
def initialize(**net_status)
|
82
|
+
super(net_status.merge(context: :secret))
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
class InvalidKeyError < Error
|
87
|
+
end
|
88
|
+
|
89
|
+
class ExtractionError < Error
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
data/lib/dapp/dimg/artifact.rb
CHANGED
@@ -30,32 +30,44 @@ module Dapp
|
|
30
30
|
|
31
31
|
# rubocop:disable Metrics/ParameterLists
|
32
32
|
def safe_cp(from, to, owner, group, include_paths = [], exclude_paths = [])
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
copy_files = proc do |from_, path_ = ''|
|
39
|
-
"if [[ -d #{File.join(from_, path_)} ]] || [[ -f #{File.join(from_, path_)} ]]; then " \
|
40
|
-
"#{dimg.dapp.find_bin} #{File.join(from_, path_)} #{excludes} -type f -exec " \
|
41
|
-
"#{dimg.dapp.bash_bin} -ec '#{dimg.dapp.install_bin} -D #{credentials} \"{}\" " \
|
42
|
-
"\"#{File.join(to, '$(echo "{}" | ' \
|
43
|
-
"#{dimg.dapp.sed_bin} -e \"s/^#{from_.gsub('/', '\\/')}\\///g\")")}\"' \\; ;" \
|
44
|
-
'fi'
|
45
|
-
end
|
33
|
+
''.tap do |cmd|
|
34
|
+
cmd << dimg.dapp.rsync_bin
|
35
|
+
cmd << ' --archive --links'
|
36
|
+
cmd << " --chown=#{owner}:#{group}" if owner or group
|
46
37
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
38
|
+
if include_paths.any?
|
39
|
+
# Если указали include_paths — это означает, что надо копировать
|
40
|
+
# только указанные пути. Поэтому exclude_paths в приоритете, т.к. в данном режиме
|
41
|
+
# exclude_paths может относится только к путям, указанным в include_paths.
|
42
|
+
# При этом случай, когда в include_paths указали более специальный путь, чем в exclude_paths,
|
43
|
+
# будет обрабатываться в пользу exclude, этот путь не скопируется.
|
44
|
+
exclude_paths.each do |p|
|
45
|
+
cmd << " --filter='-/ #{File.join(from, p)}'"
|
46
|
+
end
|
47
|
+
|
48
|
+
include_paths.each do |p|
|
49
|
+
# * На данный момент не знаем директорию или файл имел в виду пользователь,
|
50
|
+
# поэтому подставляем фильтры для обоих возможных случаев.
|
51
|
+
# * Автоматом подставляем паттерн ** для включения файлов, содержащихся в
|
52
|
+
# директории, которую пользователь указал в include_paths.
|
53
|
+
cmd << " --filter='+/ #{File.join(from, p)}'"
|
54
|
+
cmd << " --filter='+/ #{File.join(from, p, '**')}'"
|
55
|
+
end
|
55
56
|
|
56
|
-
|
57
|
-
|
57
|
+
# Все что не подошло по include — исключается
|
58
|
+
cmd << " --filter='-/ #{File.join(from, '**')}'"
|
59
|
+
else
|
60
|
+
exclude_paths.each do |p|
|
61
|
+
cmd << " --filter='-/ #{File.join(from, p)}'"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# Слэш после from — это инструкция rsync'у для копирования
|
66
|
+
# содержимого директории from, а не самой директории.
|
67
|
+
cmd << " #{from}/ #{to}"
|
68
|
+
end
|
58
69
|
end
|
70
|
+
# rubocop:enable Metrics/ParameterLists
|
59
71
|
end # ArtifactDefault
|
60
72
|
end # Stage
|
61
73
|
end # Build
|
@@ -168,7 +168,7 @@ module Dapp
|
|
168
168
|
end
|
169
169
|
|
170
170
|
def default_git_artifacts_dependencies(git_artifacts)
|
171
|
-
git_artifacts.map { |git_artifact| git_artifact.
|
171
|
+
git_artifacts.map { |git_artifact| git_artifact.stage_dependencies_checksum(self) }
|
172
172
|
end
|
173
173
|
|
174
174
|
def dependencies
|
@@ -15,12 +15,12 @@ module Dapp
|
|
15
15
|
def dependencies
|
16
16
|
[].tap do |dependencies|
|
17
17
|
dependencies << commit_list
|
18
|
-
dependencies << dimg.local_git_artifacts.map { |git_artifact| git_artifact.dev_patch_hash(self) } if dimg.
|
18
|
+
dependencies << dimg.local_git_artifacts.map { |git_artifact| git_artifact.dev_patch_hash(self) } if dimg.dev_mode?
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
def prepare_local_git_artifacts_command
|
23
|
-
return super unless dimg.
|
23
|
+
return super unless dimg.dev_mode?
|
24
24
|
dimg.local_git_artifacts.each { |git_artifact| image.add_command git_artifact.apply_dev_patch_command(self) }
|
25
25
|
end
|
26
26
|
|
data/lib/dapp/dimg/cli/cli.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
::Dapp::CLI.send(:include, ::Dapp::Dimg::CLI)
|
1
|
+
::Dapp::CLI.send(:include, ::Dapp::Dimg::CLI::Command)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Dapp::Dimg::CLI
|
2
|
+
module Command
|
3
|
+
class Base < ::Dapp::CLI::Command::Base
|
4
|
+
def run(argv = ARGV)
|
5
|
+
self.class.parse_options(self, argv)
|
6
|
+
::Dapp::Dapp.new(options: cli_options(dimgs_patterns: cli_arguments)).public_send(run_method)
|
7
|
+
end
|
8
|
+
|
9
|
+
def run_method
|
10
|
+
class_to_lowercase
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -1,10 +1,9 @@
|
|
1
|
-
module Dapp
|
2
|
-
module
|
3
|
-
|
4
|
-
|
5
|
-
SUBCOMMANDS = ['build', 'push', 'spush', 'list', 'run', 'stages', 'cleanup', 'bp', 'mrproper', 'stage image', 'tag', 'build-context'].freeze
|
1
|
+
module Dapp::Dimg::CLI
|
2
|
+
module Command
|
3
|
+
class Dimg < ::Dapp::CLI
|
4
|
+
SUBCOMMANDS = ['build', 'push', 'spush', 'list', 'run', 'stages', 'cleanup', 'bp', 'mrproper', 'stage image', 'tag', 'build-context'].freeze
|
6
5
|
|
7
|
-
|
6
|
+
banner <<BANNER.freeze
|
8
7
|
Usage: dapp dimg [options] sub-command [sub-command options]
|
9
8
|
|
10
9
|
Available subcommands: (for details, dapp dimg SUB-COMMAND --help)
|
@@ -24,7 +23,6 @@ dapp dimg build-context
|
|
24
23
|
|
25
24
|
Options:
|
26
25
|
BANNER
|
27
|
-
end
|
28
26
|
end
|
29
27
|
end
|
30
28
|
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
module Dapp
|
2
|
-
module
|
3
|
-
|
1
|
+
module Dapp::Dimg::CLI
|
2
|
+
module Command
|
3
|
+
class Dimg < ::Dapp::CLI
|
4
4
|
class Mrproper < Base
|
5
5
|
banner <<BANNER.freeze
|
6
6
|
Usage:
|
7
7
|
|
8
|
-
dapp dimg
|
8
|
+
dapp dimg mrproper [options]
|
9
9
|
|
10
10
|
Options:
|
11
11
|
BANNER
|
@@ -1,6 +1,6 @@
|
|
1
|
-
module Dapp
|
2
|
-
module
|
3
|
-
|
1
|
+
module Dapp::Dimg::CLI
|
2
|
+
module Command
|
3
|
+
class Dimg < ::Dapp::CLI
|
4
4
|
class Push < Base
|
5
5
|
banner <<BANNER.freeze
|
6
6
|
Usage:
|
@@ -52,8 +52,8 @@ BANNER
|
|
52
52
|
|
53
53
|
def run(argv = ARGV)
|
54
54
|
self.class.parse_options(self, argv)
|
55
|
-
repo = self.class.required_argument(self)
|
56
|
-
::Dapp::Dapp.new(cli_options:
|
55
|
+
repo = self.class.required_argument(self, 'repo')
|
56
|
+
::Dapp::Dapp.new(options: cli_options(dimgs_patterns: cli_arguments, repo: repo)).public_send(class_to_lowercase)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
@@ -1,6 +1,6 @@
|
|
1
|
-
module Dapp
|
2
|
-
module
|
3
|
-
|
1
|
+
module Dapp::Dimg::CLI
|
2
|
+
module Command
|
3
|
+
class Dimg < ::Dapp::CLI
|
4
4
|
class Run < Base
|
5
5
|
banner <<BANNER.freeze
|
6
6
|
Usage:
|
@@ -19,7 +19,7 @@ BANNER
|
|
19
19
|
default: nil,
|
20
20
|
proc: ->(v) { composite_options(:ssh_key) << v }
|
21
21
|
|
22
|
-
def
|
22
|
+
def read_options(args)
|
23
23
|
self.class.cli_wrapper(self) do
|
24
24
|
args.each_with_index do |arg, i|
|
25
25
|
next if arg == '--'
|
@@ -31,7 +31,7 @@ BANNER
|
|
31
31
|
cli_option << args.slice!(i)
|
32
32
|
end
|
33
33
|
parse_options(cli_option)
|
34
|
-
return
|
34
|
+
return read_options(args)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
@@ -46,12 +46,12 @@ BANNER
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def run(argv = ARGV)
|
49
|
-
filtered_args =
|
50
|
-
|
49
|
+
filtered_args = read_options(argv)
|
50
|
+
patterns = filtered_args.any? && !filtered_args.first.start_with?('-') ? [filtered_args.shift] : []
|
51
51
|
index = filtered_args.index('--') || filtered_args.count
|
52
52
|
docker_options = index.nonzero? ? filtered_args.slice(0..index - 1) : []
|
53
53
|
command = filtered_args.slice(index + 1..-1) || []
|
54
|
-
::Dapp::Dapp.new(
|
54
|
+
::Dapp::Dapp.new(options: cli_options(dimgs_patterns: patterns)).run(docker_options, command)
|
55
55
|
end
|
56
56
|
end
|
57
57
|
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 Spush < Push
|
5
5
|
banner <<BANNER.freeze
|
6
6
|
Usage:
|
7
7
|
|
8
8
|
dapp dimg spush [options] [DIMG] REPO
|
9
|
-
|
9
|
+
|
10
10
|
DIMG Dapp image to process [default: *].
|
11
11
|
REPO Pushed image name.
|
12
12
|
|