kuber_kit 0.3.8 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/rspec.yml +35 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/TODO.md +2 -1
- data/example/infrastructure/artifacts.rb +1 -1
- data/example/services/docker_app.rb +12 -0
- data/lib/kuber_kit.rb +6 -4
- data/lib/kuber_kit/actions/configuration_loader.rb +12 -19
- data/lib/kuber_kit/actions/env_file_reader.rb +1 -0
- data/lib/kuber_kit/actions/image_compiler.rb +10 -6
- data/lib/kuber_kit/actions/service_deployer.rb +10 -7
- data/lib/kuber_kit/actions/template_reader.rb +1 -0
- data/lib/kuber_kit/artifacts_sync/artifacts_updater.rb +3 -2
- data/lib/kuber_kit/cli.rb +38 -25
- data/lib/kuber_kit/configs.rb +2 -1
- data/lib/kuber_kit/container.rb +6 -2
- data/lib/kuber_kit/core/configuration_store.rb +2 -2
- data/lib/kuber_kit/core/image_store.rb +2 -2
- data/lib/kuber_kit/core/service.rb +5 -5
- data/lib/kuber_kit/core/service_factory.rb +0 -6
- data/lib/kuber_kit/core/service_store.rb +2 -2
- data/lib/kuber_kit/image_compiler/compiler.rb +3 -1
- data/lib/kuber_kit/image_compiler/image_builder.rb +9 -1
- data/lib/kuber_kit/service_deployer/strategies/docker.rb +26 -9
- data/lib/kuber_kit/service_deployer/strategies/docker_compose.rb +3 -0
- data/lib/kuber_kit/service_deployer/strategies/kubernetes.rb +3 -1
- data/lib/kuber_kit/service_reader/reader.rb +6 -0
- data/lib/kuber_kit/shell/commands/docker_commands.rb +59 -14
- data/lib/kuber_kit/shell/commands/docker_compose_commands.rb +4 -5
- data/lib/kuber_kit/shell/local_shell.rb +6 -6
- data/lib/kuber_kit/shell/ssh_shell.rb +4 -4
- data/lib/kuber_kit/tools/logger_factory.rb +7 -3
- data/lib/kuber_kit/ui/api.rb +48 -0
- data/lib/kuber_kit/ui/debug.rb +31 -0
- data/lib/kuber_kit/ui/interactive.rb +15 -0
- data/lib/kuber_kit/ui/simple.rb +34 -5
- data/lib/kuber_kit/version.rb +1 -1
- metadata +10 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f98d973c015745f6a4ccf054e3b97edbd8302683f747842ad6c9c5b3e4e49087
|
4
|
+
data.tar.gz: f2e8eb96e320bc73c1c3b03c611d1990515bd55182a93f30b28966b63da0c591
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d550a0a8738447c939b5f6085ef71c7b79898854ede9c6e526e07f73fd4cf6a660b5a18c4e9277f80b081dc41f21f3371aafa69099d6383c884e954b7d15d9ae
|
7
|
+
data.tar.gz: 8b8ae8685c357608a6db776443171a1ea34d387272fe72f4802164e3345c7b6bf37d558d7967e5315d8718dbcf2a6a902cad2c1e3e84bb4de0b5811b1d075574
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Rspec
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ main ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ main ]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
test:
|
18
|
+
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
strategy:
|
21
|
+
matrix:
|
22
|
+
ruby-version: ['2.5', '2.7']
|
23
|
+
|
24
|
+
steps:
|
25
|
+
- uses: actions/checkout@v2
|
26
|
+
- name: Set up Ruby
|
27
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
28
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
29
|
+
# uses: ruby/setup-ruby@v1
|
30
|
+
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
31
|
+
with:
|
32
|
+
ruby-version: ${{ matrix.ruby-version }}
|
33
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
34
|
+
- name: Run tests
|
35
|
+
run: bundle exec rspec spec/
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# KuberKit
|
2
2
|
|
3
|
-
[![
|
3
|
+
[![Rspec](https://github.com/ArtStation/kuber_kit/workflows/Rspec/badge.svg)](https://github.com/ArtStation/kuber_kit/actions?query=workflow%3ARspec)
|
4
4
|
|
5
5
|
Solution for building & deploying applications on Kubernetes, written in Ruby.
|
6
6
|
|
data/TODO.md
CHANGED
@@ -5,4 +5,5 @@
|
|
5
5
|
- allow deploying only services enabled for specific configuration
|
6
6
|
- find a way to always deploy some service, e.g. for migrations and env_files
|
7
7
|
- template should be able to set default attributes
|
8
|
-
- template should be able to depend on image?
|
8
|
+
- template should be able to depend on image?
|
9
|
+
- cleanup image builds older than some date
|
data/lib/kuber_kit.rb
CHANGED
@@ -177,6 +177,8 @@ module KuberKit
|
|
177
177
|
module UI
|
178
178
|
autoload :Interactive, 'ui/interactive'
|
179
179
|
autoload :Simple, 'ui/simple'
|
180
|
+
autoload :Debug, 'ui/debug'
|
181
|
+
autoload :Api, 'ui/api'
|
180
182
|
end
|
181
183
|
|
182
184
|
autoload :CLI, 'cli'
|
@@ -205,12 +207,12 @@ module KuberKit
|
|
205
207
|
@current_configuration = nil
|
206
208
|
end
|
207
209
|
|
208
|
-
def
|
209
|
-
@
|
210
|
+
def set_ui_mode(value)
|
211
|
+
@ui_mode = value
|
210
212
|
end
|
211
213
|
|
212
|
-
def
|
213
|
-
|
214
|
+
def ui_mode
|
215
|
+
@ui_mode
|
214
216
|
end
|
215
217
|
|
216
218
|
def deprecation_warnings_disabled?
|
@@ -1,13 +1,10 @@
|
|
1
1
|
class KuberKit::Actions::ConfigurationLoader
|
2
|
-
APP_CONFIG_FILENAME = "config.rb".freeze
|
3
|
-
|
4
2
|
include KuberKit::Import[
|
5
3
|
"core.registry_store",
|
6
4
|
"core.image_store",
|
7
5
|
"core.service_store",
|
8
6
|
"core.configuration_store",
|
9
7
|
"artifacts_sync.artifacts_updater",
|
10
|
-
"tools.logger",
|
11
8
|
"shell.local_shell",
|
12
9
|
"ui",
|
13
10
|
"configs"
|
@@ -16,29 +13,24 @@ class KuberKit::Actions::ConfigurationLoader
|
|
16
13
|
Contract Hash => Any
|
17
14
|
def call(options)
|
18
15
|
root_path = options[:path] || File.join(Dir.pwd, configs.kuber_kit_dirname)
|
19
|
-
|
20
|
-
# require config file first, in case if other dirs are overriden in config
|
21
|
-
config_file_path = File.join(root_path, APP_CONFIG_FILENAME)
|
22
|
-
if File.exists?(config_file_path)
|
23
|
-
require config_file_path
|
24
|
-
end
|
25
|
-
|
26
16
|
images_path = options[:images_path] || File.join(root_path, configs.images_dirname)
|
27
17
|
services_path = options[:services_path] || File.join(root_path, configs.services_dirname)
|
28
18
|
infra_path = options[:infra_path] || File.join(root_path, configs.infra_dirname)
|
29
19
|
configurations_path = options[:configurations_path] || File.join(root_path, configs.configurations_dirname)
|
30
20
|
configuration_name = ENV["KUBER_KIT_CONFIGURATION"] || options[:configuration]
|
31
21
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
22
|
+
ui.print_debug "ConfigurationLoader", "Launching kuber_kit with:"
|
23
|
+
ui.print_debug "ConfigurationLoader", " Root path: #{root_path.to_s.yellow}"
|
24
|
+
ui.print_debug "ConfigurationLoader", " Images path: #{images_path.to_s.yellow}"
|
25
|
+
ui.print_debug "ConfigurationLoader", " Services path: #{services_path.to_s.yellow}"
|
26
|
+
ui.print_debug "ConfigurationLoader", " Infrastructure path: #{infra_path.to_s.yellow}"
|
27
|
+
ui.print_debug "ConfigurationLoader", " Configurations path: #{configurations_path.to_s.yellow}"
|
28
|
+
ui.print_debug "ConfigurationLoader", " Configuration name: #{configuration_name.to_s.yellow}"
|
29
|
+
|
30
|
+
ui.print_info("Logs", "See logs at: #{configs.log_file_path}")
|
39
31
|
|
40
32
|
unless File.exists?(root_path)
|
41
|
-
ui.print_warning "
|
33
|
+
ui.print_warning "ConfigurationLoader", "KuberKit root path #{root_path} doesn't exist. You may want to pass it --path parameter."
|
42
34
|
end
|
43
35
|
|
44
36
|
if Gem::Version.new(KuberKit::VERSION) < Gem::Version.new(configs.kuber_kit_min_version)
|
@@ -72,6 +64,7 @@ class KuberKit::Actions::ConfigurationLoader
|
|
72
64
|
true
|
73
65
|
rescue KuberKit::Error => e
|
74
66
|
ui.print_error("Error", e.message)
|
67
|
+
|
75
68
|
false
|
76
69
|
end
|
77
70
|
|
@@ -104,6 +97,6 @@ class KuberKit::Actions::ConfigurationLoader
|
|
104
97
|
require(path)
|
105
98
|
end
|
106
99
|
rescue KuberKit::Shell::AbstractShell::DirNotFoundError
|
107
|
-
|
100
|
+
ui.print_warning("ConfigurationLoader", "Directory with infrastructure not found: #{infra_path}")
|
108
101
|
end
|
109
102
|
end
|
@@ -3,7 +3,6 @@ class KuberKit::Actions::ImageCompiler
|
|
3
3
|
"image_compiler.image_dependency_resolver",
|
4
4
|
"image_compiler.build_server_pool_factory",
|
5
5
|
"shell.local_shell",
|
6
|
-
"tools.logger",
|
7
6
|
"ui",
|
8
7
|
image_compiler: "image_compiler.action_handler",
|
9
8
|
]
|
@@ -13,14 +12,17 @@ class KuberKit::Actions::ImageCompiler
|
|
13
12
|
build_id = generate_build_id
|
14
13
|
build_server_pool = build_server_pool_factory.create()
|
15
14
|
|
15
|
+
compiled_images = []
|
16
|
+
compilation_result = {}
|
16
17
|
image_dependency_resolver.each_with_deps(image_names) do |dep_image_names|
|
17
18
|
result = compile_simultaneously(dep_image_names, build_id, build_server_pool)
|
18
|
-
|
19
|
+
compiled_images += dep_image_names
|
20
|
+
compilation_result = compilation_result.merge(result)
|
19
21
|
end
|
20
22
|
|
21
23
|
build_server_pool.disconnect_all
|
22
24
|
|
23
|
-
|
25
|
+
{ images: compiled_images, compilation: compilation_result }
|
24
26
|
rescue KuberKit::Error => e
|
25
27
|
ui.print_error("Error", e.message)
|
26
28
|
|
@@ -30,20 +32,22 @@ class KuberKit::Actions::ImageCompiler
|
|
30
32
|
private
|
31
33
|
def compile_simultaneously(image_names, build_id, build_server_pool)
|
32
34
|
task_group = ui.create_task_group
|
35
|
+
compiler_result = {}
|
33
36
|
image_names.map do |image_name|
|
34
37
|
|
35
|
-
|
38
|
+
ui.print_debug("ImageCompiler", "Started compiling: #{image_name.to_s.green}")
|
36
39
|
task_group.add("Compiling #{image_name.to_s.yellow}") do |task|
|
37
40
|
shell = build_server_pool.get_shell
|
38
41
|
|
39
|
-
image_compiler.call(shell, image_name, build_id)
|
42
|
+
compiler_result[image_name] = image_compiler.call(shell, image_name, build_id)
|
40
43
|
|
41
44
|
task.update_title("Compiled #{image_name.to_s.green}")
|
42
|
-
|
45
|
+
ui.print_debug("ImageCompiler", "Finished compiling: #{image_name}")
|
43
46
|
end
|
44
47
|
|
45
48
|
end
|
46
49
|
task_group.wait
|
50
|
+
compiler_result
|
47
51
|
end
|
48
52
|
|
49
53
|
def generate_build_id
|
@@ -4,7 +4,6 @@ class KuberKit::Actions::ServiceDeployer
|
|
4
4
|
"service_deployer.service_list_resolver",
|
5
5
|
"core.service_store",
|
6
6
|
"shell.local_shell",
|
7
|
-
"tools.logger",
|
8
7
|
"ui",
|
9
8
|
service_deployer: "service_deployer.action_handler",
|
10
9
|
]
|
@@ -25,7 +24,7 @@ class KuberKit::Actions::ServiceDeployer
|
|
25
24
|
)
|
26
25
|
|
27
26
|
unless service_names.any?
|
28
|
-
ui.print_warning "
|
27
|
+
ui.print_warning "ServiceDeployer", "No service found with given options, nothing will be deployed."
|
29
28
|
end
|
30
29
|
|
31
30
|
services = service_names.map do |service_name|
|
@@ -35,9 +34,9 @@ class KuberKit::Actions::ServiceDeployer
|
|
35
34
|
images_names = services.map(&:images).flatten.uniq
|
36
35
|
|
37
36
|
compile_images(images_names) unless skip_compile
|
38
|
-
deploy_services(service_names)
|
37
|
+
deployment_result = deploy_services(service_names)
|
39
38
|
|
40
|
-
|
39
|
+
{ services: service_names, deployment: deployment_result }
|
41
40
|
rescue KuberKit::Error => e
|
42
41
|
ui.print_error("Error", e.message)
|
43
42
|
|
@@ -47,18 +46,22 @@ class KuberKit::Actions::ServiceDeployer
|
|
47
46
|
def deploy_services(service_names)
|
48
47
|
task_group = ui.create_task_group
|
49
48
|
|
49
|
+
deployer_result = {}
|
50
|
+
|
50
51
|
service_names.each do |service_name|
|
51
52
|
|
52
|
-
|
53
|
+
ui.print_debug("ServiceDeployer", "Started deploying: #{service_name.to_s.green}")
|
53
54
|
task_group.add("Deploying #{service_name.to_s.yellow}") do |task|
|
54
|
-
service_deployer.call(local_shell, service_name.to_sym)
|
55
|
+
deployer_result[service_name] = service_deployer.call(local_shell, service_name.to_sym)
|
55
56
|
|
56
57
|
task.update_title("Deployed #{service_name.to_s.green}")
|
57
|
-
|
58
|
+
ui.print_debug("ServiceDeployer", "Finished deploying: #{service_name.to_s.green}")
|
58
59
|
end
|
59
60
|
end
|
60
61
|
|
61
62
|
task_group.wait
|
63
|
+
|
64
|
+
deployer_result
|
62
65
|
end
|
63
66
|
|
64
67
|
def compile_images(images_names)
|
@@ -4,7 +4,8 @@ class KuberKit::ArtifactsSync::ArtifactsUpdater
|
|
4
4
|
include KuberKit::Import[
|
5
5
|
"artifacts_sync.git_artifact_resolver",
|
6
6
|
"artifacts_sync.null_artifact_resolver",
|
7
|
-
|
7
|
+
|
8
|
+
"ui"
|
8
9
|
]
|
9
10
|
|
10
11
|
def use_resolver(artifact_resolver, artifact_class:)
|
@@ -23,7 +24,7 @@ class KuberKit::ArtifactsSync::ArtifactsUpdater
|
|
23
24
|
artifacts.each do |artifact|
|
24
25
|
resolver = @@resolvers[artifact.class]
|
25
26
|
|
26
|
-
|
27
|
+
ui.print_debug "ArtifactUpdater", "Updating artifact #{artifact.name.to_s.green}"
|
27
28
|
|
28
29
|
raise ResolverNotFoundError, "Can't find resolver for artifact #{artifact}" if resolver.nil?
|
29
30
|
|
data/lib/kuber_kit/cli.rb
CHANGED
@@ -1,16 +1,19 @@
|
|
1
1
|
require 'thor'
|
2
2
|
|
3
3
|
class KuberKit::CLI < Thor
|
4
|
+
APP_CONFIG_FILENAME = "config.rb".freeze
|
5
|
+
|
4
6
|
class_option :path, :type => :string
|
5
7
|
class_option :images_path, :type => :string
|
6
8
|
class_option :infra_path, :type => :string
|
7
9
|
class_option :configurations_path, :type => :string
|
10
|
+
class_option :ui, :type => :string, :desc => "UI mode (interactive|debug|simple)"
|
8
11
|
class_option :debug, :type => :boolean, aliases: ["-d"]
|
9
12
|
class_option :configuration, :type => :string, aliases: ["-C"]
|
10
13
|
|
11
14
|
desc "compile IMAGE_NAMES", "Compile image with IMAGE_NAMES (comma-separated)"
|
12
15
|
def compile(image_names_str)
|
13
|
-
|
16
|
+
setup(options)
|
14
17
|
|
15
18
|
image_names = image_names_str.split(",").map(&:strip).map(&:to_sym)
|
16
19
|
|
@@ -18,15 +21,10 @@ class KuberKit::CLI < Thor
|
|
18
21
|
result = KuberKit::Container['actions.image_compiler'].call(image_names, options)
|
19
22
|
end
|
20
23
|
|
21
|
-
logger = KuberKit::Container['tools.logger']
|
22
24
|
if result
|
23
|
-
|
24
|
-
logger.info("Image compilation finished!")
|
25
|
-
logger.info("---------------------------")
|
25
|
+
print_result("Image compilation finished!", result: result)
|
26
26
|
else
|
27
|
-
|
28
|
-
logger.info("Image compilation failed!".red)
|
29
|
-
logger.info("-------------------------".red)
|
27
|
+
exit 1
|
30
28
|
end
|
31
29
|
end
|
32
30
|
|
@@ -35,7 +33,7 @@ class KuberKit::CLI < Thor
|
|
35
33
|
method_option :tags, :type => :array, aliases: ["-t"]
|
36
34
|
method_option :skip_compile, :type => :boolean, aliases: ["-B"]
|
37
35
|
def deploy
|
38
|
-
|
36
|
+
setup(options)
|
39
37
|
|
40
38
|
if KuberKit::Container['actions.configuration_loader'].call(options)
|
41
39
|
result = KuberKit::Container['actions.service_deployer'].call(
|
@@ -45,21 +43,16 @@ class KuberKit::CLI < Thor
|
|
45
43
|
)
|
46
44
|
end
|
47
45
|
|
48
|
-
logger = KuberKit::Container['tools.logger']
|
49
46
|
if result
|
50
|
-
|
51
|
-
logger.info("Service deployment finished!")
|
52
|
-
logger.info("---------------------------")
|
47
|
+
print_result("Service deployment finished!", result: result)
|
53
48
|
else
|
54
|
-
|
55
|
-
logger.info("Service deployment failed!".red)
|
56
|
-
logger.info("-------------------------".red)
|
49
|
+
exit 1
|
57
50
|
end
|
58
51
|
end
|
59
52
|
|
60
53
|
desc "env ENV_FILE_NAME", "Return content of Env File ENV_FILE_NAME"
|
61
54
|
def env(env_file_name)
|
62
|
-
|
55
|
+
setup(options)
|
63
56
|
|
64
57
|
if KuberKit::Container['actions.configuration_loader'].call(options)
|
65
58
|
KuberKit::Container['actions.env_file_reader'].call(env_file_name.to_sym, options)
|
@@ -68,7 +61,7 @@ class KuberKit::CLI < Thor
|
|
68
61
|
|
69
62
|
desc "template TEMPLATE_NAME", "Return content of Template TEMPLATE_NAME"
|
70
63
|
def template(template_name)
|
71
|
-
|
64
|
+
setup(options)
|
72
65
|
|
73
66
|
if KuberKit::Container['actions.configuration_loader'].call(options)
|
74
67
|
KuberKit::Container['actions.template_reader'].call(template_name.to_sym, options)
|
@@ -77,7 +70,7 @@ class KuberKit::CLI < Thor
|
|
77
70
|
|
78
71
|
desc "service SERVICE_NAME", "Return content of Service SERVICE_NAME"
|
79
72
|
def service(service_name)
|
80
|
-
|
73
|
+
setup(options)
|
81
74
|
|
82
75
|
if KuberKit::Container['actions.configuration_loader'].call(options)
|
83
76
|
KuberKit::Container['actions.service_reader'].call(service_name.to_sym, options)
|
@@ -86,7 +79,7 @@ class KuberKit::CLI < Thor
|
|
86
79
|
|
87
80
|
desc "apply FILE_PATH", "Apply FILE_PATH with kubectl"
|
88
81
|
def apply(file_path)
|
89
|
-
|
82
|
+
setup(options)
|
90
83
|
|
91
84
|
if KuberKit::Container['actions.configuration_loader'].call(options)
|
92
85
|
KuberKit::Container['actions.kubectl_applier'].call(File.expand_path(file_path), options)
|
@@ -95,26 +88,26 @@ class KuberKit::CLI < Thor
|
|
95
88
|
|
96
89
|
desc "attach POD_NAME", "Attach to POD_NAME using kubectl"
|
97
90
|
def attach(pod_name = nil)
|
98
|
-
|
91
|
+
setup(options)
|
99
92
|
|
100
93
|
if KuberKit::Container['actions.configuration_loader'].call(options)
|
101
94
|
KuberKit::Container['actions.kubectl_attacher'].call(pod_name, options)
|
102
95
|
end
|
103
96
|
end
|
104
97
|
|
105
|
-
desc "
|
98
|
+
desc "console POD_NAME", "Attach to POD_NAME using kubectl & launch bin/console"
|
106
99
|
def console(pod_name = nil)
|
107
|
-
|
100
|
+
setup(options)
|
108
101
|
|
109
102
|
if KuberKit::Container['actions.configuration_loader'].call(options)
|
110
103
|
KuberKit::Container['actions.kubectl_console'].call(pod_name, options)
|
111
104
|
end
|
112
105
|
end
|
113
106
|
|
114
|
-
desc "
|
107
|
+
desc "logs POD_NAME", "Show logs for POD_NAME using kubectl"
|
115
108
|
method_option :follow, :type => :boolean, aliases: ["-f"]
|
116
109
|
def logs(pod_name = nil)
|
117
|
-
|
110
|
+
setup(options)
|
118
111
|
|
119
112
|
if KuberKit::Container['actions.configuration_loader'].call(options)
|
120
113
|
KuberKit::Container['actions.kubectl_logs'].call(pod_name, options)
|
@@ -129,4 +122,24 @@ class KuberKit::CLI < Thor
|
|
129
122
|
def self.exit_on_failure?
|
130
123
|
true
|
131
124
|
end
|
125
|
+
|
126
|
+
private
|
127
|
+
def setup(options)
|
128
|
+
if options[:debug]
|
129
|
+
KuberKit.set_ui_mode(:debug)
|
130
|
+
elsif options[:ui]
|
131
|
+
KuberKit.set_ui_mode(options[:ui].to_sym)
|
132
|
+
end
|
133
|
+
|
134
|
+
# We should load config before loading any bean, to make sure that bean won't be built with default config
|
135
|
+
root_path = options[:path] || File.join(Dir.pwd, KuberKit::Container['configs'].kuber_kit_dirname)
|
136
|
+
config_file_path = File.join(root_path, APP_CONFIG_FILENAME)
|
137
|
+
if File.exists?(config_file_path)
|
138
|
+
require config_file_path
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def print_result(message, data = {})
|
143
|
+
KuberKit::Container['ui'].print_result(message, data)
|
144
|
+
end
|
132
145
|
end
|