uffizzi-cli 2.0.34 → 2.0.36
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/uffizzi/cli/cluster.rb +34 -5
- data/lib/uffizzi/cli/common.rb +1 -1
- data/lib/uffizzi/cli/project/compose.rb +2 -0
- data/lib/uffizzi/helpers/config_helper.rb +17 -0
- data/lib/uffizzi/services/cluster/disconnect_service.rb +71 -0
- data/lib/uffizzi/services/kubeconfig_service.rb +33 -8
- data/lib/uffizzi/version.rb +1 -1
- data/man/uffizzi +53 -0
- data/man/uffizzi-account +29 -0
- data/man/uffizzi-account-list +26 -0
- data/man/uffizzi-account-list.html +103 -0
- data/man/uffizzi-account-list.ronn +19 -0
- data/man/uffizzi-account-set-default +29 -0
- data/man/uffizzi-account-set-default.html +105 -0
- data/man/uffizzi-account-set-default.ronn +22 -0
- data/man/uffizzi-account.html +106 -0
- data/man/uffizzi-account.ronn +23 -0
- data/man/uffizzi-cluster +37 -0
- data/man/uffizzi-cluster-create +49 -0
- data/man/uffizzi-cluster-create.ronn +41 -0
- data/man/uffizzi-cluster-delete +32 -0
- data/man/uffizzi-cluster-delete.ronn +24 -0
- data/man/uffizzi-cluster-describe +39 -0
- data/man/uffizzi-cluster-describe.ronn +30 -0
- data/man/uffizzi-cluster-disconnect +40 -0
- data/man/uffizzi-cluster-disconnect.ronn +32 -0
- data/man/uffizzi-cluster-list +34 -0
- data/man/uffizzi-cluster-list.ronn +26 -0
- data/man/uffizzi-cluster-update-kubeconfig +37 -0
- data/man/uffizzi-cluster-update-kubeconfig.ronn +29 -0
- data/man/uffizzi-cluster.ronn +32 -0
- data/man/uffizzi-compose +39 -0
- data/man/uffizzi-compose-create +67 -0
- data/man/uffizzi-compose-create.ronn +57 -0
- data/man/uffizzi-compose-delete +38 -0
- data/man/uffizzi-compose-delete.ronn +29 -0
- data/man/uffizzi-compose-describe +38 -0
- data/man/uffizzi-compose-describe.ronn +29 -0
- data/man/uffizzi-compose-events +38 -0
- data/man/uffizzi-compose-events.ronn +29 -0
- data/man/uffizzi-compose-list +58 -0
- data/man/uffizzi-compose-list.ronn +49 -0
- data/man/uffizzi-compose-service-list +42 -0
- data/man/uffizzi-compose-service-list.ronn +32 -0
- data/man/uffizzi-compose-service-logs +59 -0
- data/man/uffizzi-compose-service-logs.ronn +48 -0
- data/man/uffizzi-compose-update +61 -0
- data/man/uffizzi-compose-update.ronn +51 -0
- data/man/uffizzi-compose.ronn +33 -0
- data/man/uffizzi-compose_service_logs +59 -0
- data/man/uffizzi-compose_service_logs.ronn +50 -0
- data/man/uffizzi-config +65 -0
- data/man/uffizzi-config.ronn +55 -0
- data/man/uffizzi-connect +40 -0
- data/man/uffizzi-connect-acr +37 -0
- data/man/uffizzi-connect-acr.ronn +42 -0
- data/man/uffizzi-connect-docker-hub +34 -0
- data/man/uffizzi-connect-docker-hub.ronn +39 -0
- data/man/uffizzi-connect-docker-registry +37 -0
- data/man/uffizzi-connect-docker-registry.ronn +41 -0
- data/man/uffizzi-connect-ecr +37 -0
- data/man/uffizzi-connect-ecr.ronn +42 -0
- data/man/uffizzi-connect-gcr +31 -0
- data/man/uffizzi-connect-gcr.ronn +36 -0
- data/man/uffizzi-connect-ghcr +34 -0
- data/man/uffizzi-connect-ghcr.ronn +40 -0
- data/man/uffizzi-connect.ronn +45 -0
- data/man/uffizzi-disconnect +37 -0
- data/man/uffizzi-disconnect.ronn +31 -0
- data/man/uffizzi-login +51 -0
- data/man/uffizzi-login-by-identity-token +29 -0
- data/man/uffizzi-login-by-identity-token.html +106 -0
- data/man/uffizzi-login-by-identity-token.ronn +21 -0
- data/man/uffizzi-login.html +113 -0
- data/man/uffizzi-login.ronn +41 -0
- data/man/uffizzi-logout +21 -0
- data/man/uffizzi-logout.ronn +19 -0
- data/man/uffizzi-preview +39 -0
- data/man/uffizzi-preview-create +67 -0
- data/man/uffizzi-preview-create.ronn +57 -0
- data/man/uffizzi-preview-delete +38 -0
- data/man/uffizzi-preview-delete.ronn +29 -0
- data/man/uffizzi-preview-describe +38 -0
- data/man/uffizzi-preview-describe.ronn +29 -0
- data/man/uffizzi-preview-events +38 -0
- data/man/uffizzi-preview-events.ronn +29 -0
- data/man/uffizzi-preview-list +58 -0
- data/man/uffizzi-preview-list.ronn +49 -0
- data/man/uffizzi-preview-service-list +42 -0
- data/man/uffizzi-preview-service-list.ronn +32 -0
- data/man/uffizzi-preview-service-logs +59 -0
- data/man/uffizzi-preview-service-logs.ronn +48 -0
- data/man/uffizzi-preview-update +61 -0
- data/man/uffizzi-preview-update.ronn +51 -0
- data/man/uffizzi-preview.ronn +33 -0
- data/man/uffizzi-preview_service_logs +59 -0
- data/man/uffizzi-preview_service_logs.ronn +50 -0
- data/man/uffizzi-project +47 -0
- data/man/uffizzi-project-compose +40 -0
- data/man/uffizzi-project-compose-describe +37 -0
- data/man/uffizzi-project-compose-describe.ronn +29 -0
- data/man/uffizzi-project-compose-set +66 -0
- data/man/uffizzi-project-compose-set.ronn +57 -0
- data/man/uffizzi-project-compose-unset +35 -0
- data/man/uffizzi-project-compose-unset.ronn +27 -0
- data/man/uffizzi-project-compose.ronn +34 -0
- data/man/uffizzi-project-create +50 -0
- data/man/uffizzi-project-create.ronn +41 -0
- data/man/uffizzi-project-delete +32 -0
- data/man/uffizzi-project-delete.ronn +24 -0
- data/man/uffizzi-project-describe +43 -0
- data/man/uffizzi-project-describe.ronn +34 -0
- data/man/uffizzi-project-preview-describe +37 -0
- data/man/uffizzi-project-preview-describe.ronn +29 -0
- data/man/uffizzi-project-preview-set +66 -0
- data/man/uffizzi-project-preview-set.ronn +57 -0
- data/man/uffizzi-project-secret +37 -0
- data/man/uffizzi-project-secret-create +29 -0
- data/man/uffizzi-project-secret-create.ronn +21 -0
- data/man/uffizzi-project-secret-delete +29 -0
- data/man/uffizzi-project-secret-delete.ronn +21 -0
- data/man/uffizzi-project-secret-list +28 -0
- data/man/uffizzi-project-secret-list.ronn +20 -0
- data/man/uffizzi-project-secret.ronn +30 -0
- data/man/uffizzi-project-set-default +34 -0
- data/man/uffizzi-project-set-default.ronn +26 -0
- data/man/uffizzi-project.html +124 -0
- data/man/uffizzi-project.ronn +41 -0
- data/man/uffizzi.html +132 -0
- data/man/uffizzi.ronn +45 -0
- metadata +126 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72e1e0754278f9e3fc7069a15d1f7963c9aa578a67fdb7495d52f9d633bf1f71
|
4
|
+
data.tar.gz: a1cd9e4a84cba3b3827dfe0bb547ed4f3e734dc8cb9640603f5818937d0abee3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2c0a8c7a2c62cb5ae478f2a18c29a90ee4bdcc2c74b6177930510fc40f1032b2bb8d0e7f8e4947ee30760cc963776d32ac6dbb3e18710a784d2d3cbb4dff862
|
7
|
+
data.tar.gz: cbd873c5ef8ab6c8868ee518f34acbada4303f44ef0f30770c1d405ef13b443a9d5431f7593dee81522a6a9b2e1bc1722774f1cce6f20cd16797165391bb9534
|
data/lib/uffizzi/cli/cluster.rb
CHANGED
@@ -9,6 +9,7 @@ require 'uffizzi/services/preview_service'
|
|
9
9
|
require 'uffizzi/services/command_service'
|
10
10
|
require 'uffizzi/services/cluster_service'
|
11
11
|
require 'uffizzi/services/kubeconfig_service'
|
12
|
+
require 'uffizzi/services/cluster/disconnect_service'
|
12
13
|
|
13
14
|
MANUAL = 'manual'
|
14
15
|
|
@@ -42,7 +43,7 @@ module Uffizzi
|
|
42
43
|
end
|
43
44
|
|
44
45
|
desc 'delete [NAME]', 'Delete a cluster'
|
45
|
-
method_option :'delete-config', required: false, type: :boolean, aliases: '-
|
46
|
+
method_option :'delete-config', required: false, type: :boolean, aliases: '-c'
|
46
47
|
def delete(name)
|
47
48
|
run('delete', cluster_name: name)
|
48
49
|
end
|
@@ -55,6 +56,13 @@ module Uffizzi
|
|
55
56
|
run('update-kubeconfig', cluster_name: name)
|
56
57
|
end
|
57
58
|
|
59
|
+
method_option :kubeconfig, type: :string, aliases: '-k'
|
60
|
+
method_option :ask, type: :boolean
|
61
|
+
desc 'disconnect', 'Switch back to original kubeconfig current context'
|
62
|
+
def disconnect
|
63
|
+
run('disconnect')
|
64
|
+
end
|
65
|
+
|
58
66
|
private
|
59
67
|
|
60
68
|
def run(command, command_args = {})
|
@@ -75,6 +83,8 @@ module Uffizzi
|
|
75
83
|
handle_delete_command(project_slug, command_args)
|
76
84
|
when 'update-kubeconfig'
|
77
85
|
handle_update_kubeconfig_command(project_slug, command_args)
|
86
|
+
when 'disconnect'
|
87
|
+
ClusterDisconnectService.handle(options)
|
78
88
|
end
|
79
89
|
end
|
80
90
|
|
@@ -191,8 +201,14 @@ module Uffizzi
|
|
191
201
|
|
192
202
|
KubeconfigService.save_to_filepath(kubeconfig_path, parsed_kubeconfig) do |kubeconfig_by_path|
|
193
203
|
merged_kubeconfig = KubeconfigService.merge(kubeconfig_by_path, parsed_kubeconfig)
|
194
|
-
|
195
|
-
KubeconfigService.update_current_context(merged_kubeconfig,
|
204
|
+
new_current_context = KubeconfigService.get_current_context(parsed_kubeconfig)
|
205
|
+
new_kubeconfig = KubeconfigService.update_current_context(merged_kubeconfig, new_current_context)
|
206
|
+
|
207
|
+
next new_kubeconfig if kubeconfig_by_path.nil?
|
208
|
+
|
209
|
+
previous_current_context = KubeconfigService.get_current_context(kubeconfig_by_path)
|
210
|
+
save_previous_current_context(kubeconfig_path, previous_current_context)
|
211
|
+
new_kubeconfig
|
196
212
|
end
|
197
213
|
|
198
214
|
update_clusters_config(cluster_data[:id], kubeconfig_path: kubeconfig_path)
|
@@ -319,8 +335,14 @@ module Uffizzi
|
|
319
335
|
merged_kubeconfig = KubeconfigService.merge(kubeconfig_by_path, kubeconfig)
|
320
336
|
|
321
337
|
if is_update_current_context
|
322
|
-
|
323
|
-
KubeconfigService.update_current_context(merged_kubeconfig,
|
338
|
+
new_current_context = KubeconfigService.get_current_context(kubeconfig)
|
339
|
+
new_kubeconfig = KubeconfigService.update_current_context(merged_kubeconfig, new_current_context)
|
340
|
+
|
341
|
+
next new_kubeconfig if kubeconfig_by_path.nil?
|
342
|
+
|
343
|
+
previous_current_context = KubeconfigService.get_current_context(kubeconfig_by_path)
|
344
|
+
save_previous_current_context(kubeconfig_path, previous_current_context)
|
345
|
+
new_kubeconfig
|
324
346
|
else
|
325
347
|
merged_kubeconfig
|
326
348
|
end
|
@@ -359,5 +381,12 @@ module Uffizzi
|
|
359
381
|
ResponseHelper.handle_failed_response(response)
|
360
382
|
end
|
361
383
|
end
|
384
|
+
|
385
|
+
def save_previous_current_context(kubeconfig_path, current_context)
|
386
|
+
return if kubeconfig_path.nil? || ConfigHelper.previous_current_context_by_path(kubeconfig_path).present?
|
387
|
+
|
388
|
+
previous_current_contexts = Uffizzi::ConfigHelper.set_previous_current_context_by_path(kubeconfig_path, current_context)
|
389
|
+
ConfigFile.write_option(:previous_current_contexts, previous_current_contexts)
|
390
|
+
end
|
362
391
|
end
|
363
392
|
end
|
data/lib/uffizzi/cli/common.rb
CHANGED
@@ -4,7 +4,7 @@ module Uffizzi
|
|
4
4
|
class Cli::Common
|
5
5
|
class << self
|
6
6
|
def show_manual(command_name)
|
7
|
-
manual_doc_path = File.join(Uffizzi.root, "
|
7
|
+
manual_doc_path = File.join(Uffizzi.root, "man/#{command_name}.ronn")
|
8
8
|
|
9
9
|
Uffizzi.ui.say(File.read(manual_doc_path))
|
10
10
|
end
|
@@ -79,6 +79,8 @@ module Uffizzi
|
|
79
79
|
else
|
80
80
|
ResponseHelper.handle_invalid_compose_response(response)
|
81
81
|
end
|
82
|
+
elsif ResponseHelper.not_found?(response)
|
83
|
+
Uffizzi.ui.say('The project does not have a compose file set.')
|
82
84
|
else
|
83
85
|
ResponseHelper.handle_failed_response(response)
|
84
86
|
end
|
@@ -39,11 +39,28 @@ module Uffizzi
|
|
39
39
|
clusters.detect { |c| c[:id] == id }
|
40
40
|
end
|
41
41
|
|
42
|
+
def set_previous_current_context_by_path(path, current_context)
|
43
|
+
current_contexts = previous_current_contexts_without(path)
|
44
|
+
current_contexts << { current_context: current_context, kubeconfig_path: path }
|
45
|
+
end
|
46
|
+
|
47
|
+
def previous_current_contexts_without(path)
|
48
|
+
cluster_previous_current_contexts.reject { |c| c[:kubeconfig_path] == path }
|
49
|
+
end
|
50
|
+
|
51
|
+
def previous_current_context_by_path(path)
|
52
|
+
cluster_previous_current_contexts.detect { |c| c[:kubeconfig_path] == path }
|
53
|
+
end
|
54
|
+
|
42
55
|
private
|
43
56
|
|
44
57
|
def clusters
|
45
58
|
read_option_from_config(:clusters) || []
|
46
59
|
end
|
60
|
+
|
61
|
+
def cluster_previous_current_contexts
|
62
|
+
read_option_from_config(:previous_current_contexts) || []
|
63
|
+
end
|
47
64
|
end
|
48
65
|
end
|
49
66
|
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'uffizzi/helpers/config_helper'
|
4
|
+
require 'uffizzi/services/cluster_service'
|
5
|
+
require 'uffizzi/services/kubeconfig_service'
|
6
|
+
|
7
|
+
class ClusterDisconnectService
|
8
|
+
class << self
|
9
|
+
def handle(options)
|
10
|
+
kubeconfig_path = options[:kubeconfig] || KubeconfigService.default_path
|
11
|
+
is_ask_origin_current_context = options[:ask]
|
12
|
+
|
13
|
+
prev_current_context = Uffizzi::ConfigHelper.previous_current_context_by_path(kubeconfig_path)&.fetch(:current_context, nil)
|
14
|
+
kubeconfig = KubeconfigService.read_kubeconfig(kubeconfig_path)
|
15
|
+
|
16
|
+
if kubeconfig.nil?
|
17
|
+
return Uffizzi.ui.say("Kubeconfig does not exist by path #{kubeconfig_path}")
|
18
|
+
end
|
19
|
+
|
20
|
+
contexts = KubeconfigService.get_cluster_contexts(kubeconfig)
|
21
|
+
current_context = KubeconfigService.get_current_context(kubeconfig)
|
22
|
+
|
23
|
+
if contexts.empty?
|
24
|
+
return Uffizzi.ui.say("No contexts by kubeconfig path #{kubeconfig_path}")
|
25
|
+
end
|
26
|
+
|
27
|
+
if KubeconfigService.find_cluster_contexts_by_name(kubeconfig, prev_current_context).present? &&
|
28
|
+
prev_current_context != current_context &&
|
29
|
+
!is_ask_origin_current_context
|
30
|
+
update_current_context_by_filepath(kubeconfig_path, prev_current_context)
|
31
|
+
say_success(prev_current_context, kubeconfig_path)
|
32
|
+
return
|
33
|
+
end
|
34
|
+
|
35
|
+
new_current_context = ask_context(contexts, current_context)
|
36
|
+
update_current_context_by_filepath(kubeconfig_path, new_current_context)
|
37
|
+
set_previous_current_context_to_config(kubeconfig_path, new_current_context)
|
38
|
+
say_success(new_current_context, kubeconfig_path)
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def say_success(current_context, kubeconfig_path)
|
44
|
+
Uffizzi.ui.say("Now your current context is '#{current_context}' for kubeconfig path '#{kubeconfig_path}'")
|
45
|
+
end
|
46
|
+
|
47
|
+
def update_current_context_by_filepath(filepath, current_context)
|
48
|
+
KubeconfigService.save_to_filepath(filepath) do |kubeconfig|
|
49
|
+
KubeconfigService.update_current_context(kubeconfig, current_context)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def set_previous_current_context_to_config(kubeconfig_path, current_context)
|
54
|
+
previous_current_contexts = Uffizzi::ConfigHelper.set_previous_current_context_by_path(kubeconfig_path, current_context)
|
55
|
+
Uffizzi::ConfigFile.write_option(:previous_current_contexts, previous_current_contexts)
|
56
|
+
end
|
57
|
+
|
58
|
+
def ask_context(contexts, current_context)
|
59
|
+
context_names = contexts
|
60
|
+
.map { |c| { name: c['name'], value: c['name'] } }
|
61
|
+
.reject { |c| c[:value] == current_context }
|
62
|
+
|
63
|
+
if context_names.empty?
|
64
|
+
return Uffizzi.ui.say_error_and_exit('No other contexts')
|
65
|
+
end
|
66
|
+
|
67
|
+
question = 'Select origin context to switch on:'
|
68
|
+
Uffizzi.prompt.select(question, context_names)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -41,15 +41,25 @@ class KubeconfigService
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def get_first_context(kubeconfig)
|
44
|
-
kubeconfig
|
44
|
+
get_cluster_contexts(kubeconfig)[0]
|
45
45
|
end
|
46
46
|
|
47
47
|
def get_current_cluster_name(kubeconfig)
|
48
|
-
kubeconfig
|
48
|
+
get_cluster_contexts(kubeconfig)
|
49
49
|
.detect { |c| c['name'] == get_current_context(kubeconfig) }
|
50
50
|
.dig('context', 'cluster')
|
51
51
|
end
|
52
52
|
|
53
|
+
def get_cluster_contexts(kubeconfig)
|
54
|
+
kubeconfig.fetch('contexts', [])
|
55
|
+
end
|
56
|
+
|
57
|
+
def find_cluster_contexts_by_name(kubeconfig, context_name)
|
58
|
+
return if context_name.nil?
|
59
|
+
|
60
|
+
get_cluster_contexts(kubeconfig).detect { |c| c['name'] == context_name }
|
61
|
+
end
|
62
|
+
|
53
63
|
def update_current_context(kubeconfig, current_context)
|
54
64
|
new_kubeconfig = kubeconfig.deep_dup
|
55
65
|
new_kubeconfig['current-context'] = current_context
|
@@ -57,9 +67,8 @@ class KubeconfigService
|
|
57
67
|
new_kubeconfig
|
58
68
|
end
|
59
69
|
|
60
|
-
def save_to_filepath(filepath, kubeconfig)
|
61
|
-
|
62
|
-
target_kubeconfig = File.exist?(real_file_path) ? Psych.safe_load(File.read(real_file_path)) : nil
|
70
|
+
def save_to_filepath(filepath, kubeconfig = nil)
|
71
|
+
target_kubeconfig = read_kubeconfig(filepath)
|
63
72
|
|
64
73
|
if target_kubeconfig.present? && !valid_kubeconfig?(target_kubeconfig)
|
65
74
|
raise InvalidKubeconfigError.new(filepath)
|
@@ -68,15 +77,31 @@ class KubeconfigService
|
|
68
77
|
new_kubeconfig = block_given? ? yield(target_kubeconfig) : kubeconfig
|
69
78
|
return if new_kubeconfig.nil?
|
70
79
|
|
71
|
-
|
72
|
-
FileUtils.mkdir_p(dir_path) unless File.directory?(dir_path)
|
73
|
-
File.write(real_file_path, new_kubeconfig.to_yaml)
|
80
|
+
write_kubeconfig(filepath, new_kubeconfig)
|
74
81
|
end
|
75
82
|
|
76
83
|
def default_path
|
77
84
|
kubeconfig_env_path || Uffizzi.configuration.default_kubeconfig_path
|
78
85
|
end
|
79
86
|
|
87
|
+
def read_kubeconfig(filepath)
|
88
|
+
real_file_path = File.expand_path(filepath)
|
89
|
+
kubeconfig = File.exist?(real_file_path) ? Psych.safe_load(File.read(real_file_path)) : nil
|
90
|
+
|
91
|
+
if kubeconfig.present? && !valid_kubeconfig?(kubeconfig)
|
92
|
+
raise InvalidKubeconfigError.new(filepath)
|
93
|
+
end
|
94
|
+
|
95
|
+
kubeconfig
|
96
|
+
end
|
97
|
+
|
98
|
+
def write_kubeconfig(filepath, kubeconfig)
|
99
|
+
real_file_path = File.expand_path(filepath)
|
100
|
+
dir_path = File.dirname(real_file_path)
|
101
|
+
FileUtils.mkdir_p(dir_path) unless File.directory?(dir_path)
|
102
|
+
File.write(real_file_path, kubeconfig.to_yaml)
|
103
|
+
end
|
104
|
+
|
80
105
|
private
|
81
106
|
|
82
107
|
def cluster_exists_in_kubeconfig?(kubeconfig, cluster_name)
|
data/lib/uffizzi/version.rb
CHANGED
data/man/uffizzi
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
.\" generated with Ronn-NG/v0.9.1
|
2
|
+
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
|
3
|
+
.TH "UFFIZZI" "" "September 2023" ""
|
4
|
+
.SH "NAME"
|
5
|
+
\fBuffizzi\fR \- manage Uffizzi resources
|
6
|
+
.SH "SYNOPSIS"
|
7
|
+
.nf
|
8
|
+
uffizzi GROUP | COMMAND
|
9
|
+
.fi
|
10
|
+
.SH "DESCRIPTION"
|
11
|
+
.nf
|
12
|
+
The uffizzi CLI manages authentication, configuration, and
|
13
|
+
interaction with Uffizzi APIs\.
|
14
|
+
|
15
|
+
For more information on the uffizzi CLI, see:
|
16
|
+
https://docs\.uffizzi\.com/references/cli/
|
17
|
+
.fi
|
18
|
+
.SH "GROUP"
|
19
|
+
.nf
|
20
|
+
GROUP is one of the following:
|
21
|
+
cluster
|
22
|
+
Manage virtual clusters
|
23
|
+
|
24
|
+
config
|
25
|
+
Configure the uffizzi CLI
|
26
|
+
|
27
|
+
connect
|
28
|
+
Grant a Uffizzi user account access to external services
|
29
|
+
|
30
|
+
compose
|
31
|
+
Manage Uffizzi compose environments (previews) and view logs
|
32
|
+
|
33
|
+
project
|
34
|
+
Manage Uffizzi project resources including compose files for
|
35
|
+
specifying compose environment (preview) configurations and secrets
|
36
|
+
.fi
|
37
|
+
.SH "COMMAND"
|
38
|
+
.nf
|
39
|
+
COMMAND is one of the following:
|
40
|
+
|
41
|
+
help
|
42
|
+
Show uffizzi documentation
|
43
|
+
|
44
|
+
login
|
45
|
+
Log in to a Uffizzi user account
|
46
|
+
|
47
|
+
logout
|
48
|
+
Log out of a Uffizzi user account
|
49
|
+
|
50
|
+
version
|
51
|
+
Print version information for uffizzi CLI
|
52
|
+
.fi
|
53
|
+
|
data/man/uffizzi-account
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
.\" generated with Ronn-NG/v0.9.1
|
2
|
+
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
|
3
|
+
.TH "UFFIZZI\-ACCOUNT" "" "August 2023" ""
|
4
|
+
.SH "NAME"
|
5
|
+
\fBuffizzi\-account\fR \- manage Uffizzi accounts
|
6
|
+
.SH "SYNOPSIS"
|
7
|
+
.nf
|
8
|
+
uffizzi account COMMAND [UFFIZZI_WIDE_FLAG \|\.\|\.\|\.]
|
9
|
+
.fi
|
10
|
+
.SH "DESCRIPTION"
|
11
|
+
.nf
|
12
|
+
Manage Uffizzi accounts
|
13
|
+
|
14
|
+
For more information on Uffizzi accounts, see:
|
15
|
+
https://docs\.uffizzi\.com/references/cli/
|
16
|
+
.fi
|
17
|
+
.SH "COMMANDS"
|
18
|
+
.nf
|
19
|
+
COMMAND is one of the following:
|
20
|
+
|
21
|
+
list
|
22
|
+
List all accounts associated with the user\'s credentials
|
23
|
+
|
24
|
+
set\-default
|
25
|
+
Set the default account in the uffizzi configuration\. Also see
|
26
|
+
$ uffizzi config help for details\.
|
27
|
+
.fi
|
28
|
+
.P
|
29
|
+
Run $ uffizzi account COMMAND \-\-help for more information on a command\.
|
@@ -0,0 +1,26 @@
|
|
1
|
+
.\" generated with Ronn-NG/v0.9.1
|
2
|
+
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
|
3
|
+
.TH "UFFIZZI\-ACCOUNT\-LIST" "" "August 2023" ""
|
4
|
+
.SH "NAME"
|
5
|
+
\fBuffizzi\-account\-list\fR \- list the accounts of the user
|
6
|
+
.SH "SYNOPSIS"
|
7
|
+
.nf
|
8
|
+
uffizzi account list
|
9
|
+
.fi
|
10
|
+
.SH "DESCRIPTION"
|
11
|
+
.nf
|
12
|
+
This command lists all accounts (not projects) for the associated user
|
13
|
+
|
14
|
+
This command can fail for the following reasons:
|
15
|
+
\- The user is not authenticated
|
16
|
+
|
17
|
+
For more information on preview services, see:
|
18
|
+
https://docs\.uffizzi\.com/references/cli/
|
19
|
+
.fi
|
20
|
+
.SH "EXAMPLES"
|
21
|
+
.nf
|
22
|
+
The following command lists the user\'s accounts:
|
23
|
+
|
24
|
+
$ uffizzi account list
|
25
|
+
.fi
|
26
|
+
|
@@ -0,0 +1,103 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv='content-type' content='text/html;charset=utf8'>
|
5
|
+
<meta name='generator' content='Ronn-NG/v0.9.1 (http://github.com/apjanke/ronn-ng/tree/0.9.1)'>
|
6
|
+
<title>list the accounts of the user</title>
|
7
|
+
<style type='text/css' media='all'>
|
8
|
+
/* style: man */
|
9
|
+
body#manpage {margin:0}
|
10
|
+
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
|
11
|
+
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
|
12
|
+
.mp h2 {margin:10px 0 0 0}
|
13
|
+
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
|
14
|
+
.mp h3 {margin:0 0 0 4ex}
|
15
|
+
.mp dt {margin:0;clear:left}
|
16
|
+
.mp dt.flush {float:left;width:8ex}
|
17
|
+
.mp dd {margin:0 0 0 9ex}
|
18
|
+
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
|
19
|
+
.mp pre {margin-bottom:20px}
|
20
|
+
.mp pre+h2,.mp pre+h3 {margin-top:22px}
|
21
|
+
.mp h2+pre,.mp h3+pre {margin-top:5px}
|
22
|
+
.mp img {display:block;margin:auto}
|
23
|
+
.mp h1.man-title {display:none}
|
24
|
+
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
|
25
|
+
.mp h2 {font-size:16px;line-height:1.25}
|
26
|
+
.mp h1 {font-size:20px;line-height:2}
|
27
|
+
.mp {text-align:justify;background:#fff}
|
28
|
+
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
|
29
|
+
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
|
30
|
+
.mp u {text-decoration:underline}
|
31
|
+
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
|
32
|
+
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
|
33
|
+
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
|
34
|
+
.mp b.man-ref {font-weight:normal;color:#434241}
|
35
|
+
.mp pre {padding:0 4ex}
|
36
|
+
.mp pre code {font-weight:normal;color:#434241}
|
37
|
+
.mp h2+pre,h3+pre {padding-left:0}
|
38
|
+
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
|
39
|
+
ol.man-decor {width:100%}
|
40
|
+
ol.man-decor li.tl {text-align:left}
|
41
|
+
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
|
42
|
+
ol.man-decor li.tr {text-align:right;float:right}
|
43
|
+
</style>
|
44
|
+
</head>
|
45
|
+
<!--
|
46
|
+
The following styles are deprecated and will be removed at some point:
|
47
|
+
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
|
48
|
+
|
49
|
+
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
|
50
|
+
.man-navigation should be used instead.
|
51
|
+
-->
|
52
|
+
<body id='manpage'>
|
53
|
+
<div class='mp' id='man'>
|
54
|
+
|
55
|
+
<div class='man-navigation' style='display:none'>
|
56
|
+
<a href="#NAME">NAME</a>
|
57
|
+
<a href="#SYNOPSIS">SYNOPSIS</a>
|
58
|
+
<a href="#DESCRIPTION">DESCRIPTION</a>
|
59
|
+
<a href="#EXAMPLES">EXAMPLES</a>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<ol class='man-decor man-head man head'>
|
63
|
+
<li class='tl'>uffizzi-account-list</li>
|
64
|
+
<li class='tc'></li>
|
65
|
+
<li class='tr'>uffizzi-account-list</li>
|
66
|
+
</ol>
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
<h2 id="NAME">NAME</h2>
|
71
|
+
<p class="man-name">
|
72
|
+
<code>uffizzi-account-list</code> - <span class="man-whatis">list the accounts of the user</span>
|
73
|
+
</p>
|
74
|
+
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
75
|
+
<pre><code>uffizzi account list
|
76
|
+
</code></pre>
|
77
|
+
|
78
|
+
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
79
|
+
<pre><code>Shows a list of the container services that make up a given preview
|
80
|
+
deployment.
|
81
|
+
|
82
|
+
This command can fail for the following reasons:
|
83
|
+
- The user is not authenticated
|
84
|
+
|
85
|
+
For more information on preview services, see:
|
86
|
+
https://github.com/UffizziCloud/uffizzi_cli
|
87
|
+
</code></pre>
|
88
|
+
|
89
|
+
<h2 id="EXAMPLES">EXAMPLES</h2>
|
90
|
+
<pre><code>The following command lists the user's accounts:
|
91
|
+
|
92
|
+
$ uffizzi account list
|
93
|
+
</code></pre>
|
94
|
+
|
95
|
+
<ol class='man-decor man-foot man foot'>
|
96
|
+
<li class='tl'></li>
|
97
|
+
<li class='tc'>July 2023</li>
|
98
|
+
<li class='tr'>uffizzi-account-list</li>
|
99
|
+
</ol>
|
100
|
+
|
101
|
+
</div>
|
102
|
+
</body>
|
103
|
+
</html>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
uffizzi-account-list - list the accounts of the user
|
2
|
+
================================================================
|
3
|
+
|
4
|
+
## SYNOPSIS
|
5
|
+
uffizzi account list
|
6
|
+
|
7
|
+
## DESCRIPTION
|
8
|
+
This command lists all accounts (not projects) for the associated user
|
9
|
+
|
10
|
+
This command can fail for the following reasons:
|
11
|
+
- The user is not authenticated
|
12
|
+
|
13
|
+
For more information on preview services, see:
|
14
|
+
https://docs.uffizzi.com/references/cli/
|
15
|
+
|
16
|
+
## EXAMPLES
|
17
|
+
The following command lists the user's accounts:
|
18
|
+
|
19
|
+
$ uffizzi account list
|
@@ -0,0 +1,29 @@
|
|
1
|
+
.\" generated with Ronn-NG/v0.9.1
|
2
|
+
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
|
3
|
+
.TH "UFFIZZI\-ACCOUNT\-SET\-DEFAULT" "" "August 2023" ""
|
4
|
+
.SH "NAME"
|
5
|
+
\fBuffizzi\-account\-set\-default\fR \- set the default account
|
6
|
+
.SH "SYNOPSIS"
|
7
|
+
.nf
|
8
|
+
uffizzi account set\-default ACCOUNT_NAME
|
9
|
+
.fi
|
10
|
+
.SH "DESCRIPTION"
|
11
|
+
.nf
|
12
|
+
This command sets the default account (project) for the uffizzi configuration\.
|
13
|
+
When set, all commands use this account as the default context unless
|
14
|
+
overridden by the \-\-project flag\.
|
15
|
+
|
16
|
+
This command can fail for the following reasons:
|
17
|
+
\- There is no account with the given account name
|
18
|
+
|
19
|
+
For more information on Uffizzi projects, see:
|
20
|
+
https://docs\.uffizzi\.com/references/cli/
|
21
|
+
.fi
|
22
|
+
.SH "EXAMPLES"
|
23
|
+
.nf
|
24
|
+
The following sets the default account with account name
|
25
|
+
example for the active account:
|
26
|
+
|
27
|
+
$ uffizzi account set\-default example
|
28
|
+
.fi
|
29
|
+
|
@@ -0,0 +1,105 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv='content-type' content='text/html;charset=utf8'>
|
5
|
+
<meta name='generator' content='Ronn-NG/v0.9.1 (http://github.com/apjanke/ronn-ng/tree/0.9.1)'>
|
6
|
+
<title>set the default account</title>
|
7
|
+
<style type='text/css' media='all'>
|
8
|
+
/* style: man */
|
9
|
+
body#manpage {margin:0}
|
10
|
+
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
|
11
|
+
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
|
12
|
+
.mp h2 {margin:10px 0 0 0}
|
13
|
+
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
|
14
|
+
.mp h3 {margin:0 0 0 4ex}
|
15
|
+
.mp dt {margin:0;clear:left}
|
16
|
+
.mp dt.flush {float:left;width:8ex}
|
17
|
+
.mp dd {margin:0 0 0 9ex}
|
18
|
+
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
|
19
|
+
.mp pre {margin-bottom:20px}
|
20
|
+
.mp pre+h2,.mp pre+h3 {margin-top:22px}
|
21
|
+
.mp h2+pre,.mp h3+pre {margin-top:5px}
|
22
|
+
.mp img {display:block;margin:auto}
|
23
|
+
.mp h1.man-title {display:none}
|
24
|
+
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
|
25
|
+
.mp h2 {font-size:16px;line-height:1.25}
|
26
|
+
.mp h1 {font-size:20px;line-height:2}
|
27
|
+
.mp {text-align:justify;background:#fff}
|
28
|
+
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
|
29
|
+
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
|
30
|
+
.mp u {text-decoration:underline}
|
31
|
+
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
|
32
|
+
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
|
33
|
+
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
|
34
|
+
.mp b.man-ref {font-weight:normal;color:#434241}
|
35
|
+
.mp pre {padding:0 4ex}
|
36
|
+
.mp pre code {font-weight:normal;color:#434241}
|
37
|
+
.mp h2+pre,h3+pre {padding-left:0}
|
38
|
+
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
|
39
|
+
ol.man-decor {width:100%}
|
40
|
+
ol.man-decor li.tl {text-align:left}
|
41
|
+
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
|
42
|
+
ol.man-decor li.tr {text-align:right;float:right}
|
43
|
+
</style>
|
44
|
+
</head>
|
45
|
+
<!--
|
46
|
+
The following styles are deprecated and will be removed at some point:
|
47
|
+
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
|
48
|
+
|
49
|
+
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
|
50
|
+
.man-navigation should be used instead.
|
51
|
+
-->
|
52
|
+
<body id='manpage'>
|
53
|
+
<div class='mp' id='man'>
|
54
|
+
|
55
|
+
<div class='man-navigation' style='display:none'>
|
56
|
+
<a href="#NAME">NAME</a>
|
57
|
+
<a href="#SYNOPSIS">SYNOPSIS</a>
|
58
|
+
<a href="#DESCRIPTION">DESCRIPTION</a>
|
59
|
+
<a href="#EXAMPLES">EXAMPLES</a>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<ol class='man-decor man-head man head'>
|
63
|
+
<li class='tl'>uffizzi-account-set-default</li>
|
64
|
+
<li class='tc'></li>
|
65
|
+
<li class='tr'>uffizzi-account-set-default</li>
|
66
|
+
</ol>
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
<h2 id="NAME">NAME</h2>
|
71
|
+
<p class="man-name">
|
72
|
+
<code>uffizzi-account-set-default</code> - <span class="man-whatis">set the default account</span>
|
73
|
+
</p>
|
74
|
+
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
75
|
+
<pre><code>uffizzi account set-default ACCOUNT_NAME
|
76
|
+
</code></pre>
|
77
|
+
|
78
|
+
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
79
|
+
<pre><code>Sets the default account given with the given account name. When set,
|
80
|
+
all commands use this account as the default context unless
|
81
|
+
overridden by the --project flag.
|
82
|
+
|
83
|
+
This command can fail for the following reasons:
|
84
|
+
- There is no account with the given account name
|
85
|
+
|
86
|
+
For more information on Uffizzi projects, see:
|
87
|
+
https://github.com/UffizziCloud/uffizzi_cli
|
88
|
+
</code></pre>
|
89
|
+
|
90
|
+
<h2 id="EXAMPLES">EXAMPLES</h2>
|
91
|
+
<pre><code>The following sets the default account with account name
|
92
|
+
example for the active account:
|
93
|
+
|
94
|
+
$ uffizzi account set-default example
|
95
|
+
</code></pre>
|
96
|
+
|
97
|
+
<ol class='man-decor man-foot man foot'>
|
98
|
+
<li class='tl'></li>
|
99
|
+
<li class='tc'>July 2023</li>
|
100
|
+
<li class='tr'>uffizzi-account-set-default</li>
|
101
|
+
</ol>
|
102
|
+
|
103
|
+
</div>
|
104
|
+
</body>
|
105
|
+
</html>
|