kontena-cli 0.15.5 → 0.16.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (207) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +0 -3
  3. data/Gemfile +3 -0
  4. data/LOGO +8 -0
  5. data/VERSION +1 -1
  6. data/kontena-cli.gemspec +2 -3
  7. data/lib/kontena/callback.rb +57 -0
  8. data/lib/kontena/callbacks/.gitkeep +0 -0
  9. data/lib/kontena/callbacks/auth/01_list_and_select_grid_after_master_auth.rb +27 -0
  10. data/lib/kontena/callbacks/master/01_clear_current_master_after_terminate.rb +20 -0
  11. data/lib/kontena/callbacks/master/deploy/01_show_logo_before_deploy.rb +15 -0
  12. data/lib/kontena/callbacks/master/deploy/05_before_deploy_configuration_wizard.rb +124 -0
  13. data/lib/kontena/callbacks/master/deploy/50_authenticate_after_deploy.rb +53 -0
  14. data/lib/kontena/callbacks/master/deploy/55_create_initial_grid_after_deploy.rb +32 -0
  15. data/lib/kontena/callbacks/master/deploy/60_configure_auth_provider_after_deploy.rb +49 -0
  16. data/lib/kontena/callbacks/master/deploy/90_suggest_inviting_yourself_after_deploy.rb +24 -0
  17. data/lib/kontena/cli/app_command.rb +2 -1
  18. data/lib/kontena/cli/apps/build_command.rb +1 -1
  19. data/lib/kontena/cli/apps/common.rb +6 -1
  20. data/lib/kontena/cli/apps/config_command.rb +1 -1
  21. data/lib/kontena/cli/apps/deploy_command.rb +1 -1
  22. data/lib/kontena/cli/apps/init_command.rb +3 -5
  23. data/lib/kontena/cli/apps/list_command.rb +1 -1
  24. data/lib/kontena/cli/apps/logs_command.rb +1 -1
  25. data/lib/kontena/cli/apps/monitor_command.rb +1 -1
  26. data/lib/kontena/cli/apps/remove_command.rb +2 -3
  27. data/lib/kontena/cli/apps/restart_command.rb +1 -1
  28. data/lib/kontena/cli/apps/scale_command.rb +1 -1
  29. data/lib/kontena/cli/apps/show_command.rb +1 -1
  30. data/lib/kontena/cli/apps/start_command.rb +1 -1
  31. data/lib/kontena/cli/apps/stop_command.rb +1 -1
  32. data/lib/kontena/cli/apps/yaml/reader.rb +3 -13
  33. data/lib/kontena/cli/apps/yaml/validator.rb +0 -4
  34. data/lib/kontena/cli/apps/yaml/validator_v2.rb +1 -5
  35. data/lib/kontena/cli/certificate/authorize_command.rb +1 -1
  36. data/lib/kontena/cli/certificate/get_command.rb +1 -1
  37. data/lib/kontena/cli/certificate/register_command.rb +1 -1
  38. data/lib/kontena/cli/certificate_command.rb +1 -1
  39. data/lib/kontena/cli/cloud/login_command.rb +128 -0
  40. data/lib/kontena/cli/cloud/master/add_command.rb +54 -0
  41. data/lib/kontena/cli/cloud/master/delete_command.rb +20 -0
  42. data/lib/kontena/cli/cloud/master/list_command.rb +29 -0
  43. data/lib/kontena/cli/cloud/master/show_command.rb +23 -0
  44. data/lib/kontena/cli/cloud/master/update_command.rb +58 -0
  45. data/lib/kontena/cli/cloud/master_command.rb +21 -0
  46. data/lib/kontena/cli/cloud_command.rb +10 -0
  47. data/lib/kontena/cli/common.rb +230 -88
  48. data/lib/kontena/cli/config.rb +537 -0
  49. data/lib/kontena/cli/container_command.rb +1 -1
  50. data/lib/kontena/cli/containers/exec_command.rb +1 -1
  51. data/lib/kontena/cli/containers/inspect_command.rb +1 -1
  52. data/lib/kontena/cli/etcd/get_command.rb +1 -1
  53. data/lib/kontena/cli/etcd/list_command.rb +1 -1
  54. data/lib/kontena/cli/etcd/mkdir_command.rb +1 -1
  55. data/lib/kontena/cli/etcd/remove_command.rb +1 -1
  56. data/lib/kontena/cli/etcd/set_command.rb +1 -1
  57. data/lib/kontena/cli/etcd_command.rb +1 -1
  58. data/lib/kontena/cli/external_registries/add_command.rb +1 -1
  59. data/lib/kontena/cli/external_registries/delete_command.rb +1 -1
  60. data/lib/kontena/cli/external_registries/list_command.rb +1 -1
  61. data/lib/kontena/cli/external_registries/remove_command.rb +1 -1
  62. data/lib/kontena/cli/external_registry_command.rb +1 -1
  63. data/lib/kontena/cli/grid_command.rb +1 -1
  64. data/lib/kontena/cli/grids/audit_log_command.rb +6 -5
  65. data/lib/kontena/cli/grids/cloud_config_command.rb +1 -1
  66. data/lib/kontena/cli/grids/common.rb +1 -1
  67. data/lib/kontena/cli/grids/create_command.rb +8 -4
  68. data/lib/kontena/cli/grids/current_command.rb +1 -1
  69. data/lib/kontena/cli/grids/env_command.rb +1 -1
  70. data/lib/kontena/cli/grids/list_command.rb +35 -10
  71. data/lib/kontena/cli/grids/logs_command.rb +1 -1
  72. data/lib/kontena/cli/grids/remove_command.rb +2 -2
  73. data/lib/kontena/cli/grids/show_command.rb +1 -1
  74. data/lib/kontena/cli/grids/trusted_subnet_command.rb +1 -1
  75. data/lib/kontena/cli/grids/trusted_subnets/add_command.rb +1 -1
  76. data/lib/kontena/cli/grids/trusted_subnets/list_command.rb +1 -1
  77. data/lib/kontena/cli/grids/trusted_subnets/remove_command.rb +1 -1
  78. data/lib/kontena/cli/grids/update_command.rb +1 -1
  79. data/lib/kontena/cli/grids/use_command.rb +11 -6
  80. data/lib/kontena/cli/grids/user_command.rb +1 -1
  81. data/lib/kontena/cli/grids/users/add_command.rb +1 -1
  82. data/lib/kontena/cli/grids/users/list_command.rb +1 -1
  83. data/lib/kontena/cli/grids/users/remove_command.rb +1 -1
  84. data/lib/kontena/cli/localhost_web_server.rb +93 -0
  85. data/lib/kontena/cli/login_command.rb +5 -118
  86. data/lib/kontena/cli/logout_command.rb +33 -2
  87. data/lib/kontena/cli/master/audit_log_command.rb +19 -0
  88. data/lib/kontena/cli/master/config/export_command.rb +47 -0
  89. data/lib/kontena/cli/master/config/get_command.rb +24 -0
  90. data/lib/kontena/cli/master/config/import_command.rb +69 -0
  91. data/lib/kontena/cli/master/config/set_command.rb +19 -0
  92. data/lib/kontena/cli/master/config/unset_command.rb +20 -0
  93. data/lib/kontena/cli/master/config_command.rb +24 -0
  94. data/lib/kontena/cli/master/create_command.rb +76 -0
  95. data/lib/kontena/cli/master/current_command.rb +10 -2
  96. data/lib/kontena/cli/master/join_command.rb +20 -0
  97. data/lib/kontena/cli/master/list_command.rb +4 -4
  98. data/lib/kontena/cli/master/login_command.rb +274 -0
  99. data/lib/kontena/cli/master/use_command.rb +8 -19
  100. data/lib/kontena/cli/master/users/invite_command.rb +33 -6
  101. data/lib/kontena/cli/master/users/list_command.rb +2 -2
  102. data/lib/kontena/cli/master/users/remove_command.rb +1 -1
  103. data/lib/kontena/cli/master/users/role_command.rb +1 -1
  104. data/lib/kontena/cli/master/users/roles/add_command.rb +18 -16
  105. data/lib/kontena/cli/master/users/roles/remove_command.rb +1 -1
  106. data/lib/kontena/cli/master/users_command.rb +1 -1
  107. data/lib/kontena/cli/master_command.rb +21 -1
  108. data/lib/kontena/cli/node_command.rb +1 -1
  109. data/lib/kontena/cli/nodes/label_command.rb +1 -1
  110. data/lib/kontena/cli/nodes/labels/add_command.rb +1 -1
  111. data/lib/kontena/cli/nodes/labels/remove_command.rb +1 -1
  112. data/lib/kontena/cli/nodes/list_command.rb +1 -1
  113. data/lib/kontena/cli/nodes/remove_command.rb +1 -1
  114. data/lib/kontena/cli/nodes/show_command.rb +1 -1
  115. data/lib/kontena/cli/nodes/ssh_command.rb +1 -1
  116. data/lib/kontena/cli/nodes/update_command.rb +1 -1
  117. data/lib/kontena/cli/plugin_command.rb +1 -1
  118. data/lib/kontena/cli/plugins/install_command.rb +2 -2
  119. data/lib/kontena/cli/plugins/list_command.rb +2 -2
  120. data/lib/kontena/cli/plugins/search_command.rb +1 -1
  121. data/lib/kontena/cli/plugins/uninstall_command.rb +2 -2
  122. data/lib/kontena/cli/registry/create_command.rb +2 -4
  123. data/lib/kontena/cli/registry/delete_command.rb +1 -1
  124. data/lib/kontena/cli/registry/remove_command.rb +1 -1
  125. data/lib/kontena/cli/registry_command.rb +1 -1
  126. data/lib/kontena/cli/service_command.rb +1 -1
  127. data/lib/kontena/cli/services/container_command.rb +1 -1
  128. data/lib/kontena/cli/services/containers_command.rb +1 -1
  129. data/lib/kontena/cli/services/create_command.rb +1 -1
  130. data/lib/kontena/cli/services/delete_command.rb +1 -1
  131. data/lib/kontena/cli/services/deploy_command.rb +1 -1
  132. data/lib/kontena/cli/services/env_command.rb +1 -1
  133. data/lib/kontena/cli/services/envs/add_command.rb +1 -1
  134. data/lib/kontena/cli/services/envs/list_command.rb +1 -1
  135. data/lib/kontena/cli/services/envs/remove_command.rb +1 -1
  136. data/lib/kontena/cli/services/link_command.rb +1 -1
  137. data/lib/kontena/cli/services/list_command.rb +1 -1
  138. data/lib/kontena/cli/services/logs_command.rb +1 -1
  139. data/lib/kontena/cli/services/monitor_command.rb +1 -1
  140. data/lib/kontena/cli/services/remove_command.rb +1 -1
  141. data/lib/kontena/cli/services/restart_command.rb +1 -1
  142. data/lib/kontena/cli/services/scale_command.rb +1 -1
  143. data/lib/kontena/cli/services/secret_command.rb +1 -1
  144. data/lib/kontena/cli/services/secrets/link_command.rb +1 -1
  145. data/lib/kontena/cli/services/secrets/unlink_command.rb +1 -1
  146. data/lib/kontena/cli/services/services_helper.rb +6 -3
  147. data/lib/kontena/cli/services/show_command.rb +1 -1
  148. data/lib/kontena/cli/services/start_command.rb +1 -1
  149. data/lib/kontena/cli/services/stats_command.rb +1 -1
  150. data/lib/kontena/cli/services/stop_command.rb +1 -1
  151. data/lib/kontena/cli/services/unlink_command.rb +1 -1
  152. data/lib/kontena/cli/services/update_command.rb +1 -1
  153. data/lib/kontena/cli/spinner.rb +122 -0
  154. data/lib/kontena/cli/stack_command.rb +1 -1
  155. data/lib/kontena/cli/stacks/create_command.rb +1 -1
  156. data/lib/kontena/cli/stacks/deploy_command.rb +1 -1
  157. data/lib/kontena/cli/stacks/list_command.rb +1 -1
  158. data/lib/kontena/cli/stacks/remove_command.rb +1 -1
  159. data/lib/kontena/cli/stacks/show_command.rb +1 -1
  160. data/lib/kontena/cli/stacks/update_command.rb +1 -1
  161. data/lib/kontena/cli/vault/list_command.rb +1 -1
  162. data/lib/kontena/cli/vault/read_command.rb +1 -1
  163. data/lib/kontena/cli/vault/remove_command.rb +1 -1
  164. data/lib/kontena/cli/vault/update_command.rb +1 -1
  165. data/lib/kontena/cli/vault/write_command.rb +1 -1
  166. data/lib/kontena/cli/vault_command.rb +1 -1
  167. data/lib/kontena/cli/version.rb +1 -1
  168. data/lib/kontena/cli/version_command.rb +1 -1
  169. data/lib/kontena/cli/vpn/config_command.rb +1 -1
  170. data/lib/kontena/cli/vpn/create_command.rb +2 -4
  171. data/lib/kontena/cli/vpn/delete_command.rb +1 -1
  172. data/lib/kontena/cli/vpn/remove_command.rb +1 -1
  173. data/lib/kontena/cli/vpn_command.rb +1 -1
  174. data/lib/kontena/cli/whoami_command.rb +16 -13
  175. data/lib/kontena/client.rb +410 -90
  176. data/lib/kontena/command.rb +172 -0
  177. data/lib/kontena/main_command.rb +7 -8
  178. data/lib/kontena/presets/github_auth_provider.yml +11 -0
  179. data/lib/kontena/presets/kontena_auth_provider.yml +11 -0
  180. data/lib/kontena_cli.rb +51 -1
  181. data/spec/kontena/cli/app/deploy_command_spec.rb +14 -44
  182. data/spec/kontena/cli/app/scale_spec.rb +1 -1
  183. data/spec/kontena/cli/app/yaml/reader_spec.rb +0 -48
  184. data/spec/kontena/cli/common_spec.rb +63 -59
  185. data/spec/kontena/cli/grids/use_command_spec.rb +43 -0
  186. data/spec/kontena/cli/master/current_command_spec.rb +3 -24
  187. data/spec/kontena/cli/master/use_command_spec.rb +2 -27
  188. data/spec/kontena/cli/master/users/invite_command_spec.rb +4 -18
  189. data/spec/kontena/cli/master/users/roles/add_command_spec.rb +2 -16
  190. data/spec/kontena/cli/master/users/roles/remove_command_spec.rb +2 -13
  191. data/spec/kontena/cli/services/restart_command_spec.rb +1 -1
  192. data/spec/kontena/cli/services/update_command_spec.rb +5 -5
  193. data/spec/kontena/client_spec.rb +104 -35
  194. data/spec/kontena/config_spec.rb +65 -0
  195. data/spec/spec_helper.rb +25 -3
  196. data/spec/support/client_helpers.rb +10 -3
  197. data/spec/support/requirements_helper.rb +32 -0
  198. metadata +61 -48
  199. data/lib/kontena/cli/register_command.rb +0 -23
  200. data/lib/kontena/cli/user/forgot_password_command.rb +0 -16
  201. data/lib/kontena/cli/user/reset_password_command.rb +0 -23
  202. data/lib/kontena/cli/user/verify_command.rb +0 -20
  203. data/lib/kontena/cli/user_command.rb +0 -13
  204. data/spec/fixtures/kontena-malformed-yaml.yml +0 -6
  205. data/spec/fixtures/kontena-not-hash-service-config.yml +0 -3
  206. data/spec/kontena/cli/login_command_spec.rb +0 -32
  207. data/spec/kontena/cli/register_command_spec.rb +0 -57
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class CreateCommand < Clamp::Command
4
+ class CreateCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class DeleteCommand < Clamp::Command
4
+ class DeleteCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class DeployCommand < Clamp::Command
4
+ class DeployCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
@@ -4,7 +4,7 @@ module Kontena::Cli::Services
4
4
  require_relative 'envs/list_command'
5
5
  require_relative 'envs/remove_command'
6
6
 
7
- class EnvCommand < Clamp::Command
7
+ class EnvCommand < Kontena::Command
8
8
  subcommand ["list", "ls"], "List service environment variables", Envs::ListCommand
9
9
  subcommand "add", "Add environment variable", Envs::AddCommand
10
10
  subcommand ["remove", "rm"], "Remove environment variable", Envs::RemoveCommand
@@ -1,7 +1,7 @@
1
1
  require_relative '../services_helper'
2
2
 
3
3
  module Kontena::Cli::Services::Envs
4
- class AddCommand < Clamp::Command
4
+ class AddCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include Kontena::Cli::Services::ServicesHelper
@@ -1,7 +1,7 @@
1
1
  require_relative '../services_helper'
2
2
 
3
3
  module Kontena::Cli::Services::Envs
4
- class ListCommand < Clamp::Command
4
+ class ListCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include Kontena::Cli::Services::ServicesHelper
@@ -1,7 +1,7 @@
1
1
  require_relative '../services_helper'
2
2
 
3
3
  module Kontena::Cli::Services::Envs
4
- class RemoveCommand < Clamp::Command
4
+ class RemoveCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include Kontena::Cli::Services::ServicesHelper
@@ -2,7 +2,7 @@ require_relative '../grid_options'
2
2
  require_relative 'services_helper'
3
3
 
4
4
  module Kontena::Cli::Services
5
- class LinkCommand < Clamp::Command
5
+ class LinkCommand < Kontena::Command
6
6
  include Kontena::Cli::Common
7
7
  include Kontena::Cli::GridOptions
8
8
  include ServicesHelper
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class ListCommand < Clamp::Command
4
+ class ListCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
@@ -2,7 +2,7 @@ require_relative 'services_helper'
2
2
  require_relative '../helpers/log_helper'
3
3
 
4
4
  module Kontena::Cli::Services
5
- class LogsCommand < Clamp::Command
5
+ class LogsCommand < Kontena::Command
6
6
  include Kontena::Cli::Common
7
7
  include Kontena::Cli::GridOptions
8
8
  include Kontena::Cli::Helpers::LogHelper
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class MonitorCommand < Clamp::Command
4
+ class MonitorCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class RemoveCommand < Clamp::Command
4
+ class RemoveCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include ServicesHelper
7
7
 
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class RestartCommand < Clamp::Command
4
+ class RestartCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class ScaleCommand < Clamp::Command
4
+ class ScaleCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
@@ -3,7 +3,7 @@ module Kontena::Cli::Services
3
3
  require_relative 'secrets/link_command'
4
4
  require_relative 'secrets/unlink_command'
5
5
 
6
- class SecretCommand < Clamp::Command
6
+ class SecretCommand < Kontena::Command
7
7
  subcommand "link", "Link secret from Vault", Secrets::LinkCommand
8
8
  subcommand "unlink", "Unlink secret from Vault", Secrets::UnlinkCommand
9
9
  end
@@ -1,7 +1,7 @@
1
1
  require_relative '../services_helper'
2
2
 
3
3
  module Kontena::Cli::Services::Secrets
4
- class LinkCommand < Clamp::Command
4
+ class LinkCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include Kontena::Cli::Services::ServicesHelper
@@ -1,7 +1,7 @@
1
1
  require_relative '../services_helper'
2
2
 
3
3
  module Kontena::Cli::Services::Secrets
4
- class UnlinkCommand < Clamp::Command
4
+ class UnlinkCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include Kontena::Cli::Services::ServicesHelper
@@ -1,6 +1,5 @@
1
1
  require 'kontena/client'
2
2
  require_relative '../common'
3
- require 'shell-spinner'
4
3
 
5
4
  module Kontena
6
5
  module Cli
@@ -97,7 +96,11 @@ module Kontena
97
96
  if service['env'].to_a.size > 0
98
97
  puts " env: "
99
98
  service['env'].to_a.each do |e|
100
- puts " - #{e}"
99
+ if e.length > 50
100
+ puts " - #{e[0..50]}..."
101
+ else
102
+ puts " - #{e}"
103
+ end
101
104
  end
102
105
  end
103
106
 
@@ -215,7 +218,7 @@ module Kontena
215
218
  # @param [String] token
216
219
  # @param [String] name
217
220
  def wait_for_deploy_to_finish(token, name)
218
- ShellSpinner " " do
221
+ spinner " " do
219
222
  sleep 1 # wait for master to process deploy request and change state to 'deploying'
220
223
  until client(token).get("services/#{name}")['state'] != 'deploying' do
221
224
  sleep 1
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class ShowCommand < Clamp::Command
4
+ class ShowCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class StartCommand < Clamp::Command
4
+ class StartCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class StatsCommand < Clamp::Command
4
+ class StatsCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class StopCommand < Clamp::Command
4
+ class StopCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
@@ -2,7 +2,7 @@ require_relative '../grid_options'
2
2
  require_relative 'services_helper'
3
3
 
4
4
  module Kontena::Cli::Services
5
- class UnlinkCommand < Clamp::Command
5
+ class UnlinkCommand < Kontena::Command
6
6
  include Kontena::Cli::Common
7
7
  include Kontena::Cli::GridOptions
8
8
  include ServicesHelper
@@ -1,7 +1,7 @@
1
1
  require_relative 'services_helper'
2
2
 
3
3
  module Kontena::Cli::Services
4
- class UpdateCommand < Clamp::Command
4
+ class UpdateCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include ServicesHelper
@@ -0,0 +1,122 @@
1
+ module Kontena
2
+ module Cli
3
+ class Spinner
4
+
5
+ CHARS = ['\\', '|', '/', '-']
6
+ CHARS_LENGTH = CHARS.length
7
+
8
+ def self.spin(msg, &block)
9
+ unless $stdout.tty?
10
+ Kernel.puts " [....] #{msg}"
11
+ result = nil
12
+ status = nil
13
+ begin
14
+ result = yield
15
+ rescue SystemExit => ex
16
+ status = ex.status
17
+ if status == 0
18
+ Kernel.puts " [done] #{msg}"
19
+ else
20
+ Kernel.puts " [fail] #{msg}"
21
+ end
22
+ rescue Exception => ex
23
+ Kernel.puts " [fail] #{msg}"
24
+ if ENV["DEBUG"]
25
+ Kernel.puts "#{ex} #{ex.message}\n#{ex.backtrace.join("\n")}"
26
+ end
27
+ raise ex
28
+ end
29
+ exit(status) if status
30
+ Kernel.puts " [done] #{msg}"
31
+ return result
32
+ end
33
+
34
+ Thread.main['spinners'] ||= []
35
+ unless Thread.main['spinners'].empty?
36
+ Thread.main['spinners'].each do |thread|
37
+ thread['pause'] = true
38
+ end
39
+ Kernel.puts "\r [#{'....'.colorize(:yellow)}] #{Thread.main['spinners'].last['msg']}"
40
+ end
41
+
42
+ Thread.main['spinner_msgs'] = []
43
+ spin_thread = Thread.new do
44
+ Thread.current['msg'] = msg
45
+ message = " * #{msg} .. "
46
+ Kernel.print(message + CHARS.first)
47
+ curr_index = 0
48
+ loop do
49
+ if Thread.current['pause']
50
+ sleep 0.1 until !Thread.current['pause']
51
+ Kernel.print "\r#{message}#{CHARS[curr_index]}"
52
+ else
53
+ if Thread.main['spinner_msgs']
54
+ Kernel.print "\r#{' ' * (message.gsub(/\e.+?m/, '').length + 1)}\r"
55
+ while Thread.main['spinner_msgs'].size > 0
56
+ Kernel.puts "\r#{Thread.main['spinner_msgs'].shift}"
57
+ end
58
+ Kernel.print "\r#{message + CHARS[curr_index]}"
59
+ end
60
+ sleep 0.1
61
+ Kernel.print "\b#{CHARS[curr_index]}"
62
+ curr_index = curr_index == CHARS_LENGTH - 1 ? 0 : curr_index + 1
63
+ end
64
+ end
65
+ end
66
+
67
+ Thread.main['spinners'] << spin_thread
68
+
69
+ status = nil
70
+ result = nil
71
+ begin
72
+ result = yield
73
+ spin_thread.kill
74
+ Kernel.puts "\r [" + "done".colorize(:green) + "] #{msg} "
75
+ rescue SystemExit => ex
76
+ spin_thread.kill
77
+ if ex.status == 0
78
+ Kernel.puts "\r [" + "done".colorize(:green) + "] #{msg} "
79
+ else
80
+ Kernel.puts "\r [" + "fail".colorize(:red) + "] #{msg} "
81
+ end
82
+ status = ex.status
83
+ rescue Exception => ex
84
+ spin_thread.kill
85
+ Kernel.puts "\r [" + "fail".colorize(:red) + "] #{msg} "
86
+ if ENV["DEBUG"]
87
+ puts "#{ex} #{ex.message}\n#{ex.backtrace.join("\n")}"
88
+ end
89
+ raise ex
90
+ end
91
+ exit(status) if status
92
+ Thread.main['spinners'].pop
93
+ unless Thread.main['spinners'].empty?
94
+ Thread.main['spinners'].last['pause'] = false
95
+ end
96
+ result
97
+ end
98
+ end
99
+
100
+ module ShellSpinner
101
+ def spinner(msg = "", &block)
102
+ Kontena::Cli::Spinner.spin(msg, &block)
103
+ end
104
+
105
+ def puts(*msgs)
106
+ if Thread.main['spinners'] && !Thread.main['spinners'].empty?
107
+ msgs.each { |msg| Thread.main['spinner_msgs'] << msg }
108
+ else
109
+ super(*msgs)
110
+ end
111
+ end
112
+
113
+ def print(*msgs)
114
+ if Thread.main['spinners'] && !Thread.main['spinners'].empty?
115
+ Thread.main['spinner_msgs'] << msgs.join
116
+ else
117
+ super(*msgs)
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
@@ -5,7 +5,7 @@ require_relative 'stacks/update_command'
5
5
  require_relative 'stacks/list_command'
6
6
  require_relative 'stacks/show_command'
7
7
 
8
- class Kontena::Cli::StackCommand < Clamp::Command
8
+ class Kontena::Cli::StackCommand < Kontena::Command
9
9
 
10
10
  subcommand "create", "Create stack", Kontena::Cli::Stacks::CreateCommand
11
11
  subcommand ["ls", "list"], "List stacks", Kontena::Cli::Stacks::ListCommand
@@ -1,7 +1,7 @@
1
1
  require_relative 'common'
2
2
 
3
3
  module Kontena::Cli::Stacks
4
- class CreateCommand < Clamp::Command
4
+ class CreateCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include Common
@@ -1,7 +1,7 @@
1
1
  require_relative 'common'
2
2
 
3
3
  module Kontena::Cli::Stacks
4
- class DeployCommand < Clamp::Command
4
+ class DeployCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include Common
@@ -1,7 +1,7 @@
1
1
  require_relative 'common'
2
2
 
3
3
  module Kontena::Cli::Stacks
4
- class ListCommand < Clamp::Command
4
+ class ListCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include Common
@@ -1,7 +1,7 @@
1
1
  require_relative 'common'
2
2
 
3
3
  module Kontena::Cli::Stacks
4
- class RemoveCommand < Clamp::Command
4
+ class RemoveCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include Common
@@ -1,7 +1,7 @@
1
1
  require_relative 'common'
2
2
 
3
3
  module Kontena::Cli::Stacks
4
- class ShowCommand < Clamp::Command
4
+ class ShowCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include Common
@@ -1,7 +1,7 @@
1
1
  require_relative 'common'
2
2
 
3
3
  module Kontena::Cli::Stacks
4
- class UpdateCommand < Clamp::Command
4
+ class UpdateCommand < Kontena::Command
5
5
  include Kontena::Cli::Common
6
6
  include Kontena::Cli::GridOptions
7
7
  include Common