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
|
@@ -11,7 +11,7 @@ module Dapp
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def path
|
|
14
|
-
@path ||= Rugged::Repository.discover(dimg.home_path.to_s).path
|
|
14
|
+
@path ||= Pathname(Rugged::Repository.discover(dimg.home_path.to_s).path)
|
|
15
15
|
rescue Rugged::RepositoryError => _e
|
|
16
16
|
raise Error::Rugged, code: :local_git_repository_does_not_exist
|
|
17
17
|
end
|
|
@@ -2,6 +2,8 @@ module Dapp
|
|
|
2
2
|
module Dimg
|
|
3
3
|
module GitRepo
|
|
4
4
|
class Remote < Base
|
|
5
|
+
attr_reader :url
|
|
6
|
+
|
|
5
7
|
def initialize(dimg, name, url:)
|
|
6
8
|
super(dimg, name)
|
|
7
9
|
|
|
@@ -9,24 +11,21 @@ module Dapp
|
|
|
9
11
|
|
|
10
12
|
dimg.dapp.log_secondary_process(dimg.dapp.t(code: 'process.git_artifact_clone', data: { url: url }), short: true) do
|
|
11
13
|
begin
|
|
12
|
-
|
|
14
|
+
if [:https, :ssh].include?(protocol) && !Rugged.features.include?(protocol)
|
|
15
|
+
raise Error::Rugged, code: :rugged_protocol_not_supported, data: { url: url, protocol: protocol }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
Rugged::Repository.clone_at(url, path.to_s, bare: true, credentials: _rugged_credentials)
|
|
13
19
|
rescue Rugged::NetworkError, Rugged::SslError => e
|
|
14
20
|
raise Error::Rugged, code: :rugged_remote_error, data: { message: e.message, url: url }
|
|
15
21
|
end
|
|
16
|
-
end unless
|
|
22
|
+
end unless path.directory?
|
|
17
23
|
end
|
|
18
24
|
|
|
19
25
|
def _rugged_credentials
|
|
20
26
|
@_rugged_credentials ||= begin
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
false
|
|
24
|
-
rescue URI::InvalidURIError
|
|
25
|
-
true
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
if ssh_url
|
|
29
|
-
host_with_user = @url.split(':', 2).first
|
|
27
|
+
if protocol == :ssh
|
|
28
|
+
host_with_user = url.split(':', 2).first
|
|
30
29
|
username = host_with_user.split('@', 2).reverse.last
|
|
31
30
|
Rugged::Credentials::SshKeyFromAgent.new(username: username)
|
|
32
31
|
end
|
|
@@ -34,7 +33,7 @@ module Dapp
|
|
|
34
33
|
end
|
|
35
34
|
|
|
36
35
|
def path
|
|
37
|
-
dimg.build_path('git_repo_remote', name, Digest::MD5.hexdigest(
|
|
36
|
+
Pathname(dimg.build_path('git_repo_remote', name, Digest::MD5.hexdigest(url)).to_s)
|
|
38
37
|
end
|
|
39
38
|
|
|
40
39
|
def fetch!(branch = nil)
|
|
@@ -61,8 +60,6 @@ module Dapp
|
|
|
61
60
|
|
|
62
61
|
protected
|
|
63
62
|
|
|
64
|
-
attr_reader :url
|
|
65
|
-
|
|
66
63
|
def git
|
|
67
64
|
super(bare: true, credentials: _rugged_credentials)
|
|
68
65
|
end
|
|
@@ -72,6 +69,18 @@ module Dapp
|
|
|
72
69
|
def branch_format(name)
|
|
73
70
|
"origin/#{name.reverse.chomp('origin/'.reverse).reverse}"
|
|
74
71
|
end
|
|
72
|
+
|
|
73
|
+
def protocol
|
|
74
|
+
@protocol ||= begin
|
|
75
|
+
if (scheme = URI.parse(url).scheme).nil?
|
|
76
|
+
:noname
|
|
77
|
+
else
|
|
78
|
+
scheme
|
|
79
|
+
end
|
|
80
|
+
rescue URI::InvalidURIError
|
|
81
|
+
:ssh
|
|
82
|
+
end
|
|
83
|
+
end
|
|
75
84
|
end
|
|
76
85
|
end
|
|
77
86
|
end
|
|
@@ -22,21 +22,21 @@ module Dapp
|
|
|
22
22
|
|
|
23
23
|
def untag!
|
|
24
24
|
raise Error::Build, code: :image_already_untagged, data: { name: name } unless tagged?
|
|
25
|
-
dapp.shellout!("
|
|
25
|
+
dapp.shellout!("#{dapp.host_docker_bin} rmi #{name}")
|
|
26
26
|
cache_reset
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def push!
|
|
30
30
|
raise Error::Build, code: :image_not_exist, data: { name: name } unless tagged?
|
|
31
31
|
dapp.log_secondary_process(dapp.t(code: 'process.image_push', data: { name: name })) do
|
|
32
|
-
dapp.shellout!("
|
|
32
|
+
dapp.shellout!("#{dapp.host_docker_bin} push #{name}", verbose: true)
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def pull!
|
|
37
37
|
return if tagged?
|
|
38
38
|
dapp.log_secondary_process(dapp.t(code: 'process.image_pull', data: { name: name })) do
|
|
39
|
-
dapp.shellout!("
|
|
39
|
+
dapp.shellout!("#{dapp.host_docker_bin} pull #{name}", verbose: true)
|
|
40
40
|
end
|
|
41
41
|
cache_reset
|
|
42
42
|
end
|
|
@@ -56,7 +56,7 @@ module Dapp
|
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
def self.image_config_option(image_id:, option:)
|
|
59
|
-
output = ::Dapp::Dapp.shellout!("
|
|
59
|
+
output = ::Dapp::Dapp.shellout!("#{::Dapp::Dapp.host_docker_bin} inspect --format='{{json .Config.#{option.to_s.capitalize}}}' #{image_id}").stdout.strip
|
|
60
60
|
output == 'null' ? [] : JSON.parse(output)
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -87,18 +87,18 @@ module Dapp
|
|
|
87
87
|
!(/^#{tag_format}$/ =~ name).nil?
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
-
def tag!(id:, tag:)
|
|
91
|
-
::Dapp::Dapp.shellout!("
|
|
90
|
+
def tag!(id:, tag:, verbose: false, quiet: false)
|
|
91
|
+
::Dapp::Dapp.shellout!("#{::Dapp::Dapp.host_docker_bin} tag #{id} #{tag}", verbose: verbose, quiet: quiet)
|
|
92
92
|
cache_reset
|
|
93
93
|
end
|
|
94
94
|
|
|
95
|
-
def save!(image_or_images, file_path)
|
|
95
|
+
def save!(image_or_images, file_path, verbose: false, quiet: false)
|
|
96
96
|
images = Array(image_or_images).join(' ')
|
|
97
|
-
::Dapp::Dapp.shellout!("
|
|
97
|
+
::Dapp::Dapp.shellout!("#{::Dapp::Dapp.host_docker_bin} save -o #{file_path} #{images}", verbose: verbose, quiet: quiet)
|
|
98
98
|
end
|
|
99
99
|
|
|
100
|
-
def load!(file_path)
|
|
101
|
-
::Dapp::Dapp.shellout!("
|
|
100
|
+
def load!(file_path, verbose: false, quiet: false)
|
|
101
|
+
::Dapp::Dapp.shellout!("#{::Dapp::Dapp.host_docker_bin} load -i #{file_path}", verbose: verbose, quiet: quiet)
|
|
102
102
|
end
|
|
103
103
|
|
|
104
104
|
def cache
|
|
@@ -107,7 +107,7 @@ module Dapp
|
|
|
107
107
|
|
|
108
108
|
def cache_reset(name = '')
|
|
109
109
|
cache.delete(name)
|
|
110
|
-
::Dapp::Dapp.shellout!("
|
|
110
|
+
::Dapp::Dapp.shellout!("#{::Dapp::Dapp.host_docker_bin} images --format='{{.Repository}}:{{.Tag}};{{.ID}};{{.CreatedAt}};{{.Size}}' --no-trunc #{name}")
|
|
111
111
|
.stdout
|
|
112
112
|
.lines
|
|
113
113
|
.each do |l|
|
|
@@ -2,6 +2,8 @@ module Dapp
|
|
|
2
2
|
module Dimg
|
|
3
3
|
module Image
|
|
4
4
|
class Scratch < Stage
|
|
5
|
+
include Helper::Tar
|
|
6
|
+
|
|
5
7
|
def initialize(**_kwargs)
|
|
6
8
|
super
|
|
7
9
|
@from_archives = []
|
|
@@ -12,20 +14,42 @@ module Dapp
|
|
|
12
14
|
end
|
|
13
15
|
|
|
14
16
|
def build!(**_kwargs)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
# build_from_command = if from_archives.empty?
|
|
19
|
-
# "#{dapp.tar_bin} c --files-from /dev/null"
|
|
20
|
-
# else
|
|
21
|
-
# "#{dapp.cat_bin} #{from_archives.join(' ')}"
|
|
22
|
-
# end
|
|
23
|
-
# @built_id = dapp.system_shellout!("#{build_from_command} | docker import #{prepared_change} - ").stdout.strip
|
|
17
|
+
@built_id = dapp.shellout!("docker import #{prepared_change} #{archive}").stdout.strip
|
|
18
|
+
ensure
|
|
19
|
+
FileUtils.rm_rf(tmp_path)
|
|
24
20
|
end
|
|
25
21
|
|
|
26
22
|
protected
|
|
27
23
|
|
|
28
24
|
attr_accessor :from_archives
|
|
25
|
+
|
|
26
|
+
def archive
|
|
27
|
+
tmp_path('archive.tar').tap do |archive_path|
|
|
28
|
+
tar_write(archive_path) do |common_tar|
|
|
29
|
+
from_archives.each do |from_archive|
|
|
30
|
+
tar_gz_read(from_archive) do |tar|
|
|
31
|
+
tar.each_entry do |entry|
|
|
32
|
+
mode = entry.header.mode
|
|
33
|
+
path = entry.full_name
|
|
34
|
+
|
|
35
|
+
if entry.directory?
|
|
36
|
+
common_tar.mkdir path, mode
|
|
37
|
+
else
|
|
38
|
+
common_tar.add_file path, mode do |tf|
|
|
39
|
+
tf.write entry.read
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def tmp_path(*path)
|
|
50
|
+
@tmp_path ||= Dir.mktmpdir('dapp-scratch-', dapp.tmp_base_dir)
|
|
51
|
+
dapp.make_path(@tmp_path, *path).expand_path.tap { |p| p.parent.mkpath }
|
|
52
|
+
end
|
|
29
53
|
end # Stage
|
|
30
54
|
end # Image
|
|
31
55
|
end # Dimg
|
|
@@ -25,7 +25,7 @@ module Dapp
|
|
|
25
25
|
run!
|
|
26
26
|
@built_id = commit!
|
|
27
27
|
ensure
|
|
28
|
-
dapp.shellout("
|
|
28
|
+
dapp.shellout("#{dapp.host_docker_bin} rm #{container_name}")
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def built?
|
|
@@ -70,7 +70,7 @@ module Dapp
|
|
|
70
70
|
|
|
71
71
|
def run!
|
|
72
72
|
raise Error::Build, code: :built_id_not_defined if from.built_id.nil?
|
|
73
|
-
dapp.shellout!("
|
|
73
|
+
dapp.shellout!("#{dapp.host_docker_bin} run #{prepared_options} #{from.built_id} -ec '#{prepared_bash_command}'", verbose: true)
|
|
74
74
|
rescue ::Dapp::Error::Shellout => error
|
|
75
75
|
dapp.log_warning(desc: { code: :launched_command, data: { command: prepared_commands.join(' && ') }, context: :container })
|
|
76
76
|
|
|
@@ -83,7 +83,7 @@ module Dapp
|
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
def commit!
|
|
86
|
-
dapp.shellout!("
|
|
86
|
+
dapp.shellout!("#{dapp.host_docker_bin} commit #{prepared_change} #{container_name}").stdout.strip
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
def clone!(name)
|
data/lib/dapp/helper/cli.rb
CHANGED
|
@@ -69,6 +69,14 @@ module Dapp
|
|
|
69
69
|
@composite_options ||= {}
|
|
70
70
|
@composite_options[opt] ||= []
|
|
71
71
|
end
|
|
72
|
+
|
|
73
|
+
def in_validate!(v, list)
|
|
74
|
+
raise OptionParser::InvalidArgument, "`#{v}` is not included in the list [#{list_msg_format(list)}]" unless list.include?(v)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def list_msg_format(list)
|
|
78
|
+
list.map { |s| "'#{s}'"}.join(', ')
|
|
79
|
+
end
|
|
72
80
|
end
|
|
73
81
|
end # Helper
|
|
74
82
|
end # Dapp
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Dapp
|
|
2
|
+
module Helper
|
|
3
|
+
module Tar
|
|
4
|
+
def tar_write(path)
|
|
5
|
+
File.open(path, File::RDWR | File::CREAT) do |f|
|
|
6
|
+
Gem::Package::TarWriter.new(f) do |tar|
|
|
7
|
+
yield tar if block_given?
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def tar_read(path)
|
|
13
|
+
File.open(path, File::RDONLY) do |f|
|
|
14
|
+
Gem::Package::TarReader.new(f) do |tar|
|
|
15
|
+
yield tar if block_given?
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def tar_gz_read(path)
|
|
21
|
+
File.open(path, File::RDONLY) do |f_gz|
|
|
22
|
+
Zlib::GzipReader.wrap(f_gz) do |f|
|
|
23
|
+
Gem::Package::TarReader.new(f) do |tar|
|
|
24
|
+
yield tar if block_given?
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end # Tar
|
|
30
|
+
end # Helper
|
|
31
|
+
end # Dapp
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
module Dapp::Kube::CLI
|
|
2
2
|
module Command
|
|
3
3
|
class Kube < ::Dapp::CLI
|
|
4
|
-
SUBCOMMANDS = ['secret generate', 'secret key generate', '
|
|
4
|
+
SUBCOMMANDS = ['secret generate', 'secret key generate', 'deploy', 'dismiss', 'secret extract', 'minikube setup'].freeze
|
|
5
5
|
|
|
6
6
|
banner <<BANNER.freeze
|
|
7
|
-
Usage: dapp kube
|
|
7
|
+
Usage: dapp kube subcommand [subcommand options]
|
|
8
8
|
|
|
9
9
|
Available subcommands: (for details, dapp kube SUB-COMMAND --help)
|
|
10
10
|
|
|
11
11
|
dapp kube deploy [options] REPO
|
|
12
12
|
dapp kube dismiss [options]
|
|
13
|
-
dapp kube secret generate [options]
|
|
14
13
|
dapp kube secret key generate [options]
|
|
15
|
-
dapp kube secret
|
|
14
|
+
dapp kube secret generate [FILE_PATH] [options]
|
|
15
|
+
dapp kube secret extract [FILE_PATH] [options]
|
|
16
|
+
dapp kube minikube setup
|
|
16
17
|
|
|
17
18
|
Options:
|
|
18
19
|
BANNER
|
|
@@ -30,6 +30,11 @@ BANNER
|
|
|
30
30
|
default: [],
|
|
31
31
|
proc: proc { |v| composite_options(:helm_values) << v }
|
|
32
32
|
|
|
33
|
+
option :helm_secret_values_options,
|
|
34
|
+
long: '--secret-values FILE_PATH',
|
|
35
|
+
default: [],
|
|
36
|
+
proc: proc { |v| composite_options(:helm_secret_values) << v }
|
|
37
|
+
|
|
33
38
|
def run(argv = ARGV)
|
|
34
39
|
self.class.parse_options(self, argv)
|
|
35
40
|
repo = self.class.required_argument(self, 'repo')
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
module Dapp::Kube::CLI::Command
|
|
2
2
|
class Kube < ::Dapp::CLI
|
|
3
|
-
class
|
|
3
|
+
class SecretExtract < Base
|
|
4
4
|
banner <<BANNER.freeze
|
|
5
5
|
Usage:
|
|
6
6
|
|
|
7
|
-
dapp kube secret
|
|
7
|
+
dapp kube secret extract [FILE_PATH] [options]
|
|
8
8
|
|
|
9
9
|
Options:
|
|
10
10
|
BANNER
|
|
@@ -15,7 +15,7 @@ BANNER
|
|
|
15
15
|
|
|
16
16
|
def run(argv = ARGV)
|
|
17
17
|
self.class.parse_options(self, argv)
|
|
18
|
-
file_path =
|
|
18
|
+
file_path = cli_arguments.empty? ? nil : cli_arguments.first
|
|
19
19
|
::Dapp::Dapp.new(options: cli_options).public_send(run_method, file_path)
|
|
20
20
|
end
|
|
21
21
|
end
|
|
@@ -4,10 +4,20 @@ module Dapp::Kube::CLI::Command
|
|
|
4
4
|
banner <<BANNER.freeze
|
|
5
5
|
Usage:
|
|
6
6
|
|
|
7
|
-
dapp kube secret generate
|
|
7
|
+
dapp kube secret generate [FILE_PATH] [options]
|
|
8
8
|
|
|
9
9
|
Options:
|
|
10
10
|
BANNER
|
|
11
|
+
|
|
12
|
+
option :output_file_path,
|
|
13
|
+
short: '-o OUTPUT_FILE_PATH',
|
|
14
|
+
required: false
|
|
15
|
+
|
|
16
|
+
def run(argv = ARGV)
|
|
17
|
+
self.class.parse_options(self, argv)
|
|
18
|
+
file_path = cli_arguments.empty? ? nil : cli_arguments.first
|
|
19
|
+
::Dapp::Dapp.new(options: cli_options).public_send(run_method, file_path)
|
|
20
|
+
end
|
|
11
21
|
end
|
|
12
22
|
end
|
|
13
23
|
end
|
data/lib/dapp/kube/client.rb
CHANGED
|
@@ -12,19 +12,44 @@ module Dapp
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def kube_namespace
|
|
15
|
-
|
|
15
|
+
kubernetes.namespace
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def secret_key_should_exist!
|
|
19
|
+
raise(Error::Command,
|
|
20
|
+
code: :secret_key_not_found,
|
|
21
|
+
data: {not_found_in: secret_key_not_found_in.join(', ')}
|
|
22
|
+
) if secret.nil?
|
|
16
23
|
end
|
|
17
24
|
|
|
18
25
|
def secret
|
|
19
26
|
@secret ||= begin
|
|
20
|
-
secret_key = ENV['DAPP_SECRET_KEY']
|
|
21
|
-
|
|
27
|
+
unless secret_key = ENV['DAPP_SECRET_KEY']
|
|
28
|
+
secret_key_not_found_in << '`DAPP_SECRET_KEY`'
|
|
29
|
+
|
|
30
|
+
if dappfile_exists?
|
|
31
|
+
file_path = path('.dapp_secret_key')
|
|
32
|
+
if file_path.file?
|
|
33
|
+
secret_key = path('.dapp_secret_key').read.chomp
|
|
34
|
+
else
|
|
35
|
+
secret_key_not_found_in << "`#{file_path}`"
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
22
40
|
Secret.new(secret_key) if secret_key
|
|
23
41
|
end
|
|
24
42
|
end
|
|
25
43
|
|
|
44
|
+
def secret_key_not_found_in
|
|
45
|
+
@secret_key_not_found_in ||= []
|
|
46
|
+
end
|
|
47
|
+
|
|
26
48
|
def kubernetes
|
|
27
|
-
@kubernetes ||=
|
|
49
|
+
@kubernetes ||= begin
|
|
50
|
+
namespace = options[:namespace].nil? ? nil : options[:namespace].tr('_', '-')
|
|
51
|
+
Client.new(namespace: namespace)
|
|
52
|
+
end
|
|
28
53
|
end
|
|
29
54
|
end
|
|
30
55
|
end
|