uffizzi-cli 2.1.0 → 2.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8fc9021c07ec1fbbbd32baab4e37dcdf3eb9b7368843701e9c0a086da8eefefe
4
- data.tar.gz: ccf95b0bd9ae6fffa906a15012825a9c9d4b209263e0735ce200d5ba5ca953b8
3
+ metadata.gz: 53375ab753d707ea69a899c201838dcc0874a185185532b64f3a3cb8b07720fa
4
+ data.tar.gz: 177486674f4ba6f11935536cd538ddc6e587ba5a330b738196f082b8fff96c3a
5
5
  SHA512:
6
- metadata.gz: aeb135bb03097b24c39b408e10bc31fa995d3cd4da3284eacc07be126b04a5aaf18a02e5cf432e5e9f46a24bb842c79209d3100ec8d0b94efde7f8c9a5b43ae4
7
- data.tar.gz: 29d2160ec30fd61f9f5bf96ef24dea226b6388e9ab1bcf47b3c6a66a2b518df17bc9013d5d036dc5f3c6b517e30f2de0015a46d2ce933f8332113943e84a9b54
6
+ metadata.gz: 7278e21c0ce0a61da3403a874d7ce1e1d9771fd9f45867e4fdf126840fb4ddbc0e86c037be58a3bd9d0311631a819081361c4626c78cf11fdab3e6c89380fee6
7
+ data.tar.gz: 3d09264798892e9c97074d073940922bb2e7703941496bc5a77c6ba555ba6de3e275c3151b7dbd480d9e7b6be6f350ea1e939898c33b2bcfc8e64b8f562d6193
@@ -11,8 +11,6 @@ require 'uffizzi/services/cluster_service'
11
11
  require 'uffizzi/services/kubeconfig_service'
12
12
  require 'uffizzi/services/cluster/disconnect_service'
13
13
 
14
- MANUAL = 'manual'
15
-
16
14
  module Uffizzi
17
15
  class Cli::Cluster < Thor
18
16
  class Error < StandardError; end
@@ -115,7 +113,7 @@ module Uffizzi
115
113
  end
116
114
 
117
115
  cluster_name = command_args[:name] || options[:name] || ClusterService.generate_name
118
- creation_source = options[:"creation-source"] || MANUAL
116
+ creation_source = options[:"creation-source"] || ClusterService::MANUAL_CREATION_SOURCE
119
117
 
120
118
  unless ClusterService.valid_name?(cluster_name)
121
119
  Uffizzi.ui.say_error_and_exit("Cluster name: #{cluster_name} is not valid.")
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'uffizzi/services/command_service'
4
4
  require 'uffizzi/services/cluster_service'
5
+ require 'uffizzi/services/dev_service'
5
6
  require 'uffizzi/services/kubeconfig_service'
6
7
 
7
8
  module Uffizzi
@@ -9,12 +10,22 @@ module Uffizzi
9
10
  include ApiClient
10
11
 
11
12
  desc 'start [CONFIG]', 'Start dev environment'
13
+ method_option :quiet, type: :boolean, aliases: :q
14
+ method_option :'default-repo', type: :string
15
+ method_option :kubeconfig, type: :string
12
16
  def start(config_path = 'skaffold.yaml')
13
- check_skaffold_existence
17
+ DevService.check_skaffold_existence
18
+ DevService.check_running_daemon if options[:quiet]
19
+ DevService.check_skaffold_config_existence(config_path)
14
20
  check_login
15
21
  cluster_id, cluster_name = start_create_cluster
16
22
  kubeconfig = wait_cluster_creation(cluster_name)
17
- launch_scaffold(config_path)
23
+
24
+ if options[:quiet]
25
+ launch_demonise_skaffold(config_path)
26
+ else
27
+ DevService.start_basic_skaffold(config_path, options)
28
+ end
18
29
  ensure
19
30
  if defined?(cluster_name).present? && defined?(cluster_id).present?
20
31
  kubeconfig = defined?(kubeconfig).present? ? kubeconfig : nil
@@ -22,6 +33,20 @@ module Uffizzi
22
33
  end
23
34
  end
24
35
 
36
+ desc 'stop', 'Stop dev environment'
37
+ def stop
38
+ return Uffizzi.ui.say('Uffizzi dev is not running') unless File.exist?(DevService.pid_path)
39
+
40
+ pid = File.read(DevService.pid_path).to_i
41
+ File.delete(DevService.pid_path)
42
+
43
+ Uffizzi.process.kill('QUIT', pid)
44
+ Uffizzi.ui.say('Uffizzi dev was stopped')
45
+ rescue Errno::ESRCH
46
+ Uffizzi.ui.say('Uffizzi dev is not running')
47
+ File.delete(DevService.pid_path)
48
+ end
49
+
25
50
  private
26
51
 
27
52
  def check_login
@@ -31,7 +56,7 @@ module Uffizzi
31
56
 
32
57
  def start_create_cluster
33
58
  cluster_name = ClusterService.generate_name
34
- creation_source = MANUAL
59
+ creation_source = ClusterService::MANUAL_CREATION_SOURCE
35
60
  params = cluster_creation_params(cluster_name, creation_source)
36
61
  Uffizzi.ui.say('Start creating a cluster')
37
62
  response = create_cluster(ConfigFile.read_option(:server), project_slug, params)
@@ -56,7 +81,7 @@ module Uffizzi
56
81
  end
57
82
 
58
83
  def handle_succeed_cluster_creation(cluster_data)
59
- kubeconfig_path = KubeconfigService.default_path
84
+ kubeconfig_path = options[:kubeconfig] || KubeconfigService.default_path
60
85
  parsed_kubeconfig = parse_kubeconfig(cluster_data[:kubeconfig])
61
86
 
62
87
  Uffizzi.ui.say("Cluster with name: #{cluster_data[:name]} was created.")
@@ -99,6 +124,8 @@ module Uffizzi
99
124
  end
100
125
 
101
126
  def handle_delete_cluster(cluster_id, cluster_name, kubeconfig)
127
+ return if cluster_id.nil? || cluster_name.nil?
128
+
102
129
  exclude_kubeconfig(cluster_id, kubeconfig) if kubeconfig.present?
103
130
 
104
131
  params = {
@@ -149,25 +176,19 @@ module Uffizzi
149
176
  Psych.safe_load(Base64.decode64(kubeconfig))
150
177
  end
151
178
 
152
- def launch_scaffold(config_path)
153
- Uffizzi.ui.say('Start skaffold')
154
- cmd = "skaffold dev --filename='#{config_path}'"
179
+ def launch_demonise_skaffold(config_path)
180
+ Uffizzi.process.daemon(true)
155
181
 
156
- Uffizzi.ui.popen2e(cmd) do |_stdin, stdout_and_stderr, wait_thr|
157
- stdout_and_stderr.each { |l| puts l }
158
- wait_thr.value
182
+ at_exit do
183
+ File.delete(DevService.pid_path) if File.exist?(DevService.pid_path)
159
184
  end
160
- end
161
-
162
- def check_skaffold_existence
163
- cmd = 'skaffold version'
164
- stdout_str, stderr_str = Uffizzi.ui.capture3(cmd)
165
-
166
- return if stdout_str.present? && stderr_str.blank?
167
185
 
168
- Uffizzi.ui.say_error_and_exit(stderr_str)
186
+ File.delete(DevService.logs_path) if File.exist?(DevService.logs_path)
187
+ File.write(DevService.pid_path, Uffizzi.process.pid)
188
+ DevService.start_check_pid_file_existence
189
+ DevService.start_demonised_skaffold(config_path, options)
169
190
  rescue StandardError => e
170
- Uffizzi.ui.say_error_and_exit(e.message)
191
+ File.open(DevService.logs_path, 'a') { |f| f.puts(e.message) }
171
192
  end
172
193
 
173
194
  def project_slug
@@ -5,6 +5,7 @@ require 'uffizzi/helpers/file_helper'
5
5
 
6
6
  module Uffizzi
7
7
  class ConfigFile
8
+ CONFIG_DIR = "#{Dir.home}/.config/uffizzi"
8
9
  CONFIG_PATH = "#{Dir.home}/.config/uffizzi/config_default.json"
9
10
 
10
11
  class << self
@@ -9,6 +9,7 @@ class ClusterService
9
9
  CLUSTER_STATE_FAILED_DEPLOY_NAMESPACE = 'failed_deploy_namespace'
10
10
  CLUSTER_STATE_FAILED = 'failed'
11
11
  CLUSTER_NAME_MAX_LENGTH = 15
12
+ MANUAL_CREATION_SOURCE = 'manual'
12
13
 
13
14
  class << self
14
15
  include ApiClient
@@ -0,0 +1,108 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uffizzi/clients/api/api_client'
4
+
5
+ class DevService
6
+ class << self
7
+ include ApiClient
8
+
9
+ DEFAULT_REGISTRY_REPO = 'registry.uffizzi.com'
10
+
11
+ def check_running_daemon
12
+ return unless File.exist?(pid_path)
13
+
14
+ pid = File.read(pid_path)
15
+ File.delete(pid_path) if pid.blank?
16
+ Uffizzi.process.kill(0, pid.to_i)
17
+
18
+ Uffizzi.ui.say_error_and_exit("You have already started uffizzi dev as daemon. To stop the process do 'uffizzi dev stop'")
19
+ rescue Errno::ESRCH
20
+ File.delete(pid_path)
21
+ end
22
+
23
+ def start_check_pid_file_existence
24
+ Thread.new do
25
+ loop do
26
+ Uffizzi.process.kill('QUIT', Uffizzi.process.pid) unless File.exist?(pid_path)
27
+ sleep(1)
28
+ end
29
+ end
30
+ end
31
+
32
+ def start_basic_skaffold(config_path, options)
33
+ Uffizzi.ui.say('Start skaffold')
34
+ cmd = build_skaffold_dev_command(config_path, options)
35
+
36
+ Uffizzi.ui.popen2e(cmd) do |_stdin, stdout_and_stderr, wait_thr|
37
+ stdout_and_stderr.each { |l| Uffizzi.ui.say(l) }
38
+ wait_thr.value
39
+ end
40
+ end
41
+
42
+ def start_demonised_skaffold(config_path, options)
43
+ File.write(logs_path, "Start skaffold\n")
44
+ cmd = build_skaffold_dev_command(config_path, options)
45
+
46
+ Uffizzi.ui.popen2e(cmd) do |_stdin, stdout_and_stderr, wait_thr|
47
+ File.open(logs_path, 'a') do |f|
48
+ stdout_and_stderr.each do |line|
49
+ f.puts(line)
50
+ f.flush
51
+ end
52
+ end
53
+
54
+ wait_thr.value
55
+ end
56
+ end
57
+
58
+ def check_skaffold_existence
59
+ cmd = 'skaffold version'
60
+ stdout_str, stderr_str = Uffizzi.ui.capture3(cmd)
61
+
62
+ return if stdout_str.present? && stderr_str.blank?
63
+
64
+ Uffizzi.ui.say_error_and_exit(stderr_str)
65
+ rescue StandardError => e
66
+ Uffizzi.ui.say_error_and_exit(e.message)
67
+ end
68
+
69
+ def check_skaffold_config_existence(config_path)
70
+ msg = 'A valid dev environment configuration is required. Please provide a valid config,'\
71
+ "\r\n"\
72
+ 'or run `skaffold init` to generate a skaffold.yaml configuration.'\
73
+ "\r\n"\
74
+ 'See the `uffizzi dev start --help` page for supported configs and usage details.'
75
+
76
+ Uffizzi.ui.say_error_and_exit(msg) unless File.exist?(config_path)
77
+ end
78
+
79
+ def pid_path
80
+ File.join(Uffizzi::ConfigFile::CONFIG_DIR, 'uffizzi_dev.pid')
81
+ end
82
+
83
+ def logs_path
84
+ File.join(Uffizzi::ConfigFile::CONFIG_DIR, 'uffizzi_dev.log')
85
+ end
86
+
87
+ def build_skaffold_dev_command(config_path, options)
88
+ cmd = [
89
+ 'skaffold dev',
90
+ "--filename='#{config_path}'",
91
+ "--default-repo='#{default_registry_repo(options[:'default-repo'])}'",
92
+ "--kubeconfig='#{default_kubeconfig_path(options[:kubeconfig])}'",
93
+ ]
94
+
95
+ cmd.join(' ')
96
+ end
97
+
98
+ def default_registry_repo(repo)
99
+ repo || DEFAULT_REGISTRY_REPO
100
+ end
101
+
102
+ def default_kubeconfig_path(kubeconfig_path)
103
+ path = kubeconfig_path || KubeconfigService.default_path
104
+
105
+ File.expand_path(path)
106
+ end
107
+ end
108
+ end
@@ -81,7 +81,9 @@ class KubeconfigService
81
81
  end
82
82
 
83
83
  def default_path
84
- kubeconfig_env_path || Uffizzi.configuration.default_kubeconfig_path
84
+ path = kubeconfig_env_path || Uffizzi.configuration.default_kubeconfig_path
85
+
86
+ File.expand_path(path)
85
87
  end
86
88
 
87
89
  def read_kubeconfig(filepath)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uffizzi
4
- VERSION = '2.1.0'
4
+ VERSION = '2.1.2'
5
5
  end
data/lib/uffizzi.rb CHANGED
@@ -36,5 +36,9 @@ module Uffizzi
36
36
  def root
37
37
  @root ||= Pathname.new(File.expand_path('..', __dir__))
38
38
  end
39
+
40
+ def process
41
+ @process ||= Process
42
+ end
39
43
  end
40
44
  end
@@ -1,29 +1,99 @@
1
1
  .\" generated with Ronn-NG/v0.9.1
2
2
  .\" http://github.com/apjanke/ronn-ng/tree/0.9.1
3
- .TH "UFFIZZI\-DEV\-START" "" "September 2023" ""
3
+ .TH "UFFIZZI\-DEV\-START" "" "October 2023" ""
4
4
  .SH "NAME"
5
- \fBuffizzi\-dev\-start\fR \- start development environment
5
+ \fBuffizzi\-dev\-start\fR \- start a development environment
6
6
  .SH "SYNOPSIS"
7
7
  .nf
8
- uffizzi dev start [SKAFFOLD_CONFIG_FILE_PATH]
8
+ uffizzi dev start [CONFIG_FILE] [FLAGS]
9
9
  .fi
10
10
  .SH "DESCRIPTION"
11
11
  .nf
12
- Creates a new cluster and start skaffold\. If no SKAFFOLD_CONFIG_FILE_PATH is specified,
13
- the default path will be used\.
14
- Default SKAFFOLD_CONFIG_FILE_PATH is \'skaffold\.yaml\'
12
+ Creates a Uffizzi cluster preconfigured for development
13
+ workflows, including building, pushing, and deploying
14
+ your changes every time project files are saved\.
15
+ current\-context is updated in kubeconfig file\.
16
+
17
+ This command watches for file changes in a given local
18
+ project directory, as specified in your configuration file\.
19
+ It then serializes those changes and redeploys them onto
20
+ a Uffizzi cluster\.
21
+
22
+ The command looks for a configuration at the specified
23
+ path CONFIG_FILE\. Skaffold configurations are currently
24
+ supported\. For help creating a skaffold\.yaml file, see:
25
+ https://skaffold\.dev/docs/init/
26
+
27
+ If a kubeconfig exists
15
28
 
16
29
  For more information on Uffizzi clusters, see:
17
30
  https://docs\.uffizzi\.com/references/cli/
18
31
  .fi
32
+ .SH "POSITIONAL ARGUMENTS"
33
+ .nf
34
+ [CONFIG_FILE]
35
+ Path to the development environment configuration file\.
36
+ Currently supports skaffold\.yaml files\.
37
+ .fi
38
+ .SH "FLAGS"
39
+ .nf
40
+ \-\-build="<local\-or\-remote>"
41
+ This option specifies whether to build images on the
42
+ local environment or on the remote Uffizzi cluster\.
43
+ Possible values are "local" or "remote"\.
44
+
45
+ \-\-default\-repo="<container\-registry\-domain>"
46
+ A public or private repo used to push/pull build
47
+ artifacts\. Overrides the global default image registry:
48
+ "registry\.uffizzi\.com"\. See `uffizzi connect \-h` for
49
+ adding private registry credentials\.
50
+
51
+ \-\-quiet, \-q
52
+ Run the development process in detached mode (i\.e\., in
53
+ the background)\. Without this option, logs are streamed
54
+ to the terminal in the foreground\. Run \'uffizzi dev stop`
55
+ to stop the detached process\.
56
+
57
+ \-\-help, \-h
58
+ Show this message and exit\.
59
+
60
+ \-\-kubeconfig="/path/to/your/kubeconfig"
61
+ Path to kubeconfig file\. If this option is not specified,
62
+ this command looks for the file at ~/\.kube/config\.
63
+ .fi
19
64
  .SH "EXAMPLES"
20
65
  .nf
21
- To start development environment, run:
66
+ If your configuration file is in the current working
67
+ directory and you want to use an auto\-generated name,
68
+ run:
22
69
 
23
70
  $ uffizzi dev start
24
71
 
25
- To start development environment with custom skaffold\.yaml file, run:
72
+ To start a dev environment using a skaffold\.yaml config
73
+ file in directory \'~/foo\', run:
74
+
75
+ $ uffizzi dev start ~/foo/skaffold\.yaml
76
+
77
+ To start a dev environment in quiet mode,
78
+ run:
79
+
80
+ $ uffizzi dev start \-\-quiet
81
+
82
+ To push your build artifacts to a private Docker Hub repo
83
+ called \'acme/foo\', first add your Docker Hub credentials:
84
+
85
+ $ uffizzi connect docker\-hub
86
+ (See `uffizzi connect \-h` for other registry options)
87
+
88
+ \|\.\|\.\|\.then override the default repo:
89
+
90
+ $ uffizzi dev start \e
91
+ \-\-default\-repo="hub\.docker\.com/acme/foo"
92
+
93
+ To start a dev environment using an alternate kubeconfig file,
94
+ run:
26
95
 
27
- $ uffizzi cluster create /path/to/skaffold\.yaml
96
+ $ uffizzi dev start \e
97
+ \-\-kubeconfig="/path/to/alternate/kubeconfig"
28
98
  .fi
29
99
 
@@ -1,22 +1,90 @@
1
- uffizzi-dev-start - start development environment
1
+ uffizzi-dev-start - start a development environment
2
2
  ================================================================
3
3
 
4
4
  ## SYNOPSIS
5
- uffizzi dev start [SKAFFOLD_CONFIG_FILE_PATH]
5
+ uffizzi dev start [CONFIG_FILE] [FLAGS]
6
6
 
7
7
  ## DESCRIPTION
8
- Creates a new cluster and start skaffold. If no SKAFFOLD_CONFIG_FILE_PATH is specified,
9
- the default path will be used.
10
- Default SKAFFOLD_CONFIG_FILE_PATH is 'skaffold.yaml'
8
+ Creates a Uffizzi cluster preconfigured for development
9
+ workflows, including building, pushing, and deploying
10
+ your changes every time project files are saved.
11
+ current-context is updated in kubeconfig file.
12
+
13
+ This command watches for file changes in a given local
14
+ project directory, as specified in your configuration file.
15
+ It then serializes those changes and redeploys them onto
16
+ a Uffizzi cluster.
17
+
18
+ The command looks for a configuration at the specified
19
+ path CONFIG_FILE. Skaffold configurations are currently
20
+ supported. For help creating a skaffold.yaml file, see:
21
+ https://skaffold.dev/docs/init/
22
+
23
+ If a kubeconfig exists
11
24
 
12
25
  For more information on Uffizzi clusters, see:
13
26
  https://docs.uffizzi.com/references/cli/
14
27
 
28
+ ## POSITIONAL ARGUMENTS
29
+ [CONFIG_FILE]
30
+ Path to the development environment configuration file.
31
+ Currently supports skaffold.yaml files.
32
+
33
+ ## FLAGS
34
+ --build="<local-or-remote>"
35
+ This option specifies whether to build images on the
36
+ local environment or on the remote Uffizzi cluster.
37
+ Possible values are "local" or "remote".
38
+
39
+ --default-repo="<container-registry-domain>"
40
+ A public or private repo used to push/pull build
41
+ artifacts. Overrides the global default image registry:
42
+ "registry.uffizzi.com". See `uffizzi connect -h` for
43
+ adding private registry credentials.
44
+
45
+ --quiet, -q
46
+ Run the development process in detached mode (i.e., in
47
+ the background). Without this option, logs are streamed
48
+ to the terminal in the foreground. Run 'uffizzi dev stop`
49
+ to stop the detached process.
50
+
51
+ --help, -h
52
+ Show this message and exit.
53
+
54
+ --kubeconfig="/path/to/your/kubeconfig"
55
+ Path to kubeconfig file. If this option is not specified,
56
+ this command looks for the file at ~/.kube/config.
57
+
15
58
  ## EXAMPLES
16
- To start development environment, run:
59
+ If your configuration file is in the current working
60
+ directory and you want to use an auto-generated name,
61
+ run:
17
62
 
18
63
  $ uffizzi dev start
19
64
 
20
- To start development environment with custom skaffold.yaml file, run:
65
+ To start a dev environment using a skaffold.yaml config
66
+ file in directory '~/foo', run:
67
+
68
+ $ uffizzi dev start ~/foo/skaffold.yaml
69
+
70
+ To start a dev environment in quiet mode,
71
+ run:
72
+
73
+ $ uffizzi dev start --quiet
74
+
75
+ To push your build artifacts to a private Docker Hub repo
76
+ called 'acme/foo', first add your Docker Hub credentials:
77
+
78
+ $ uffizzi connect docker-hub
79
+ (See `uffizzi connect -h` for other registry options)
80
+
81
+ ...then override the default repo:
82
+
83
+ $ uffizzi dev start \
84
+ --default-repo="hub.docker.com/acme/foo"
85
+
86
+ To start a dev environment using an alternate kubeconfig file,
87
+ run:
21
88
 
22
- $ uffizzi cluster create /path/to/skaffold.yaml
89
+ $ uffizzi dev start \
90
+ --kubeconfig="/path/to/alternate/kubeconfig"
@@ -0,0 +1,41 @@
1
+ .\" generated with Ronn-NG/v0.9.1
2
+ .\" http://github.com/apjanke/ronn-ng/tree/0.9.1
3
+ .TH "UFFIZZI\-DEV\-STOP" "" "October 2023" ""
4
+ .SH "NAME"
5
+ \fBuffizzi\-dev\-stop\fR \- stop a development environment
6
+ .SH "SYNOPSIS"
7
+ .nf
8
+ uffizzi dev stop
9
+ .fi
10
+ .SH "DESCRIPTION"
11
+ .nf
12
+ Stops a dev environment and deletes the backing
13
+ Uffizzi cluster resources, including any persistent
14
+ volumes, and the namespace itself\. The Uffizzi
15
+ cluster config is deleted from the kubeconfig file\.
16
+
17
+ This command watches for file changes in a given local
18
+ project directory, as specified in your configuration file\.
19
+ It then serializes those changes and redeploys them onto
20
+ a Uffizzi cluster\.
21
+
22
+ The command looks for a configuration at the specified
23
+ path CONFIG_FILE\. Skaffold configurations are currently
24
+ supported\. For help creating a skaffold\.yaml file, see:
25
+ https://skaffold\.dev/docs/init/
26
+
27
+ For more information on Uffizzi clusters, see:
28
+ https://docs\.uffizzi\.com/references/cli/
29
+ .fi
30
+ .SH "FLAGS"
31
+ .nf
32
+ \-\-help, \-h
33
+ Show this message and exit\.
34
+ .fi
35
+ .SH "EXAMPLES"
36
+ .nf
37
+ To stop a dev environment, run:
38
+
39
+ $ uffizzi dev stop
40
+ .fi
41
+
@@ -0,0 +1,33 @@
1
+ uffizzi-dev-stop - stop a development environment
2
+ ================================================================
3
+
4
+ ## SYNOPSIS
5
+ uffizzi dev stop
6
+
7
+ ## DESCRIPTION
8
+ Stops a dev environment and deletes the backing
9
+ Uffizzi cluster resources, including any persistent
10
+ volumes, and the namespace itself. The Uffizzi
11
+ cluster config is deleted from the kubeconfig file.
12
+
13
+ This command watches for file changes in a given local
14
+ project directory, as specified in your configuration file.
15
+ It then serializes those changes and redeploys them onto
16
+ a Uffizzi cluster.
17
+
18
+ The command looks for a configuration at the specified
19
+ path CONFIG_FILE. Skaffold configurations are currently
20
+ supported. For help creating a skaffold.yaml file, see:
21
+ https://skaffold.dev/docs/init/
22
+
23
+ For more information on Uffizzi clusters, see:
24
+ https://docs.uffizzi.com/references/cli/
25
+
26
+ ## FLAGS
27
+ --help, -h
28
+ Show this message and exit.
29
+
30
+ ## EXAMPLES
31
+ To stop a dev environment, run:
32
+
33
+ $ uffizzi dev stop
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uffizzi-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Thurman
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-09-29 00:00:00.000000000 Z
12
+ date: 2023-10-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -450,6 +450,7 @@ files:
450
450
  - lib/uffizzi/services/cluster_service.rb
451
451
  - lib/uffizzi/services/command_service.rb
452
452
  - lib/uffizzi/services/compose_file_service.rb
453
+ - lib/uffizzi/services/dev_service.rb
453
454
  - lib/uffizzi/services/env_variables_service.rb
454
455
  - lib/uffizzi/services/github_service.rb
455
456
  - lib/uffizzi/services/kubeconfig_service.rb
@@ -521,6 +522,8 @@ files:
521
522
  - man/uffizzi-connect.ronn
522
523
  - man/uffizzi-dev-start
523
524
  - man/uffizzi-dev-start.ronn
525
+ - man/uffizzi-dev-stop
526
+ - man/uffizzi-dev-stop.ronn
524
527
  - man/uffizzi-disconnect
525
528
  - man/uffizzi-disconnect.ronn
526
529
  - man/uffizzi-login