uffizzi-cli 0.7.3 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 989c225e4940286c4f59590bb5c7141a8dc3f599f3f1a42db6bc90142a0bc68e
4
- data.tar.gz: 3fb2ef986ac257598cd09f5353fe9361a9d06ad8c0b8f665e4c911c40fb63ddc
3
+ metadata.gz: 17ac6475e11de6c24b044f64e19541587683aaad4bd3b72cafbc5160b92364a8
4
+ data.tar.gz: 228b5a14b359af42f9698eba6bd98c94155dfd05791b55378dfc99cf6ffe365d
5
5
  SHA512:
6
- metadata.gz: 95b249607598f13d887b701516fcd83990a7aeec69ffcf0c04a80a59e61ee5496a9b56e0768123b81fa521e12424d71eb0b240d83cca2add2039aa7741f97b2b
7
- data.tar.gz: 367ca2486d780e9d1c864f730e66f024cfef2f0c3ccb0886d6e9572a4aa39c6c9677e4a6e6049c48ada72e5ecccea42ea23d86f2d93d810b80240b5c1e4caaa2
6
+ metadata.gz: 4d9e8d2f99a297d2fac8452bc03e180c71f7b1e05d71ac333704b2e1649fffdfd2bb4f6b86ffb0d186e441629cb809b2d5c450984b2a36af49080b9b08fab700
7
+ data.tar.gz: ce3cdb192caa7ab39a7edec3b5d01788505cae7a4a2d5f440b99ef203f86f18d67c22ec5c07ef67603dc6ebb35871857f3f536ac71720b4634c46579f8e771d6
data/README.md CHANGED
@@ -177,3 +177,9 @@ Supported credential types - `docker-hub`, `acr`, `ecr`, `gcr`
177
177
  ## Contributing
178
178
 
179
179
  Bug reports and pull requests are welcome on GitHub at https://github.com/UffizziCloud/uffizzi_cli. See `CONTRIBUTING.md` in this repository.
180
+
181
+ ## License
182
+
183
+ This project is licensed under the terms of the Apache-2.0 license.
184
+
185
+ See this license at [`LICENSE`](LICENSE).
@@ -23,7 +23,7 @@ module Uffizzi
23
23
  run('create', file_path: file_path)
24
24
  end
25
25
 
26
- desc 'uffizzi preview update [DEPLOYMENT_ID] [COMPOSE_FILE]', 'create'
26
+ desc 'uffizzi preview update [DEPLOYMENT_ID] [COMPOSE_FILE]', 'Update a preview'
27
27
  method_option :output, required: false, type: :string, aliases: '-o', enum: ['json', 'github-action']
28
28
  def update(deployment_name, file_path)
29
29
  run('update', deployment_name: deployment_name, file_path: file_path)
@@ -86,33 +86,39 @@ module Uffizzi
86
86
  params = file_path.nil? ? {} : prepare_params(file_path)
87
87
  response = create_deployment(ConfigFile.read_option(:server), project_slug, params)
88
88
 
89
- if ResponseHelper.created?(response)
90
- deployment = response[:body][:deployment]
91
- success_message = "Preview created with name deployment-#{deployment[:id]}"
92
- PreviewService.start_deploy_containers(project_slug, deployment, success_message)
93
- else
89
+ if !ResponseHelper.created?(response)
94
90
  ResponseHelper.handle_failed_response(response)
95
91
  end
92
+
93
+ deployment = response[:body][:deployment]
94
+ Uffizzi.ui.say("Preview created with name deployment-#{deployment[:id]}")
95
+
96
+ success = PreviewService.run_containers_deploy(project_slug, deployment)
97
+
98
+ display_deployment_data(deployment, success)
96
99
  rescue SystemExit, Interrupt, SocketError
97
100
  deployment_id = response[:body][:deployment][:id]
98
- handle_preview_interruption(deployment_id, hostname, project_slug)
101
+ handle_preview_interruption(deployment_id, ConfigFile.read_option(:server), project_slug)
99
102
  end
100
103
 
101
104
  def handle_update_command(deployment_name, file_path, project_slug)
102
105
  deployment_id = PreviewService.read_deployment_id(deployment_name)
103
106
 
104
- return Uffizzi.ui.say("Preview should be specified in 'deployment-PREVIEW_ID' format") if deployment_id.nil?
107
+ raise Uffizzi::Error.new("Preview should be specified in 'deployment-PREVIEW_ID' format") if deployment_id.nil?
105
108
 
106
109
  params = prepare_params(file_path)
107
110
  response = update_deployment(ConfigFile.read_option(:server), project_slug, deployment_id, params)
108
111
 
109
- if ResponseHelper.ok?(response)
110
- deployment = response[:body][:deployment]
111
- success_message = "Preview with ID deployment-#{deployment_id} was successfully updated."
112
- PreviewService.start_deploy_containers(project_slug, deployment, success_message)
113
- else
112
+ if !ResponseHelper.ok?(response)
114
113
  ResponseHelper.handle_failed_response(response)
115
114
  end
115
+
116
+ deployment = response[:body][:deployment]
117
+ Uffizzi.ui.say("Preview with ID deployment-#{deployment_id} was successfully updated.")
118
+
119
+ success = PreviewService.run_containers_deploy(project_slug, deployment)
120
+
121
+ display_deployment_data(deployment, success)
116
122
  end
117
123
 
118
124
  def handle_events_command(deployment_name, project_slug)
@@ -218,8 +224,8 @@ module Uffizzi
218
224
  }
219
225
  end
220
226
 
221
- def handle_preview_interruption(deployment_id, hostname, project_slug)
222
- deletion_response = delete_deployment(hostname, project_slug, deployment_id)
227
+ def handle_preview_interruption(deployment_id, server, project_slug)
228
+ deletion_response = delete_deployment(server, project_slug, deployment_id)
223
229
  deployment_name = "deployment-#{deployment_id}"
224
230
  preview_deletion_message = if ResponseHelper.no_content?(deletion_response)
225
231
  "The preview #{deployment_name} has been disabled."
@@ -229,5 +235,23 @@ module Uffizzi
229
235
 
230
236
  raise Uffizzi::Error.new("The preview creation was interrupted. #{preview_deletion_message}")
231
237
  end
238
+
239
+ def display_deployment_data(deployment, success)
240
+ if Uffizzi.ui.output_format.nil?
241
+ Uffizzi.ui.say('Done')
242
+ preview_url = "https://#{deployment[:preview_url]}"
243
+ Uffizzi.ui.say(preview_url) if success
244
+ else
245
+ deployment_data = build_deployment_data(deployment)
246
+ Uffizzi.ui.output(deployment_data)
247
+ end
248
+ end
249
+
250
+ def build_deployment_data(deployment)
251
+ {
252
+ id: "deployment-#{deployment[:id]}",
253
+ url: "https://#{deployment[:preview_url]}",
254
+ }
255
+ end
232
256
  end
233
257
  end
@@ -8,17 +8,21 @@ module Uffizzi
8
8
  CONFIG_PATH = "#{Dir.home}/.config/uffizzi/config_default.json"
9
9
 
10
10
  class << self
11
+ def config_path
12
+ CONFIG_PATH
13
+ end
14
+
11
15
  def create(account_id, cookie, server)
12
16
  data = prepare_config_data(account_id, cookie, server)
13
17
  data.each_pair { |key, value| write_option(key, value) }
14
18
  end
15
19
 
16
20
  def delete
17
- File.delete(CONFIG_PATH) if exists?
21
+ File.delete(config_path) if exists?
18
22
  end
19
23
 
20
24
  def exists?
21
- File.exist?(CONFIG_PATH)
25
+ File.exist?(config_path)
22
26
  end
23
27
 
24
28
  def read_option(option)
@@ -79,7 +83,7 @@ module Uffizzi
79
83
  end
80
84
 
81
85
  def read
82
- data = File.read(CONFIG_PATH)
86
+ data = File.read(config_path)
83
87
  options = data.split("\n")
84
88
  options.reduce({}) do |acc, option|
85
89
  key, value = option.split('=', 2)
@@ -112,11 +116,11 @@ module Uffizzi
112
116
  end
113
117
 
114
118
  def create_file
115
- dir = File.dirname(CONFIG_PATH)
119
+ dir = File.dirname(config_path)
116
120
 
117
121
  FileUtils.mkdir_p(dir) unless File.directory?(dir)
118
122
 
119
- File.new(CONFIG_PATH, 'w')
123
+ File.new(config_path, 'w')
120
124
  end
121
125
  end
122
126
  end
@@ -5,6 +5,7 @@ require 'uffizzi/clients/api/api_client'
5
5
  class PreviewService
6
6
  class << self
7
7
  include ApiClient
8
+
8
9
  def read_deployment_id(deployment_name)
9
10
  return nil unless deployment_name.start_with?('deployment-')
10
11
  return nil unless deployment_name.split('-').size == 2
@@ -15,23 +16,23 @@ class PreviewService
15
16
  deployment_id
16
17
  end
17
18
 
18
- def start_deploy_containers(project_slug, deployment, success_message)
19
+ def run_containers_deploy(project_slug, deployment)
19
20
  deployment_id = deployment[:id]
20
21
  params = { id: deployment_id }
21
22
 
22
23
  response = deploy_containers(Uffizzi::ConfigFile.read_option(:server), project_slug, deployment_id, params)
23
24
 
24
- if Uffizzi::ResponseHelper.no_content?(response)
25
- Uffizzi.ui.say(success_message)
26
- create_deployment(deployment, project_slug)
27
- else
25
+ if !Uffizzi::ResponseHelper.no_content?(response)
28
26
  Uffizzi::ResponseHelper.handle_failed_response(response)
29
27
  end
28
+
29
+ activity_items = wait_containers_creation(deployment, project_slug)
30
+ wait_containers_deploy(deployment, project_slug, activity_items)
30
31
  end
31
32
 
32
33
  private
33
34
 
34
- def create_deployment(deployment, project_slug)
35
+ def wait_containers_creation(deployment, project_slug)
35
36
  spinner = TTY::Spinner.new('[:spinner] Creating containers...', format: :dots)
36
37
  spinner.auto_spin
37
38
 
@@ -49,10 +50,10 @@ class PreviewService
49
50
 
50
51
  Uffizzi.ui.say('Done')
51
52
 
52
- display_containers_deploying_status(deployment, project_slug, activity_items)
53
+ activity_items
53
54
  end
54
55
 
55
- def display_containers_deploying_status(deployment, project_slug, activity_items)
56
+ def wait_containers_deploy(deployment, project_slug, activity_items)
56
57
  spinner = TTY::Spinner::Multi.new('[:spinner] Deploying preview...', format: :dots, style: {
57
58
  middle: ' ',
58
59
  bottom: ' ',
@@ -64,20 +65,13 @@ class PreviewService
64
65
  response = get_activity_items(Uffizzi::ConfigFile.read_option(:server), project_slug, deployment[:id])
65
66
  handle_activity_items_response(response, spinner)
66
67
  activity_items = response[:body][:activity_items]
67
- check_activity_items_state(activity_items, containers_spinners)
68
+ update_containers_spinners!(activity_items, containers_spinners)
68
69
  break if activity_items.all? { |activity_item| activity_item[:state] == 'deployed' || activity_item[:state] == 'failed' }
69
70
 
70
71
  sleep(5)
71
72
  end
72
73
 
73
- if Uffizzi.ui.output_format.nil?
74
- Uffizzi.ui.say('Done')
75
- preview_url = "https://#{deployment[:preview_url]}"
76
- Uffizzi.ui.say(preview_url) if spinner.success?
77
- else
78
- output_data = build_output_data(deployment)
79
- Uffizzi.ui.output(output_data)
80
- end
74
+ spinner.success?
81
75
  end
82
76
 
83
77
  def create_containers_spinners(activity_items, spinner)
@@ -91,10 +85,11 @@ class PreviewService
91
85
  end
92
86
  end
93
87
 
94
- def check_activity_items_state(activity_items, containers_spinners)
88
+ def update_containers_spinners!(activity_items, containers_spinners)
95
89
  finished_activity_items = activity_items.filter do |activity_item|
96
90
  activity_item[:state] == 'deployed' || activity_item[:state] == 'failed'
97
91
  end
92
+
98
93
  finished_activity_items.each do |activity_item|
99
94
  container_spinner = containers_spinners.detect { |spinner| spinner[:name] == activity_item[:name] }
100
95
  spinner = container_spinner[:spinner]
@@ -113,12 +108,5 @@ class PreviewService
113
108
  Uffizzi::ResponseHelper.handle_failed_response(response)
114
109
  end
115
110
  end
116
-
117
- def build_output_data(output_data)
118
- {
119
- id: "deployment-#{output_data[:id]}",
120
- url: "https://#{output_data[:preview_url]}",
121
- }
122
- end
123
111
  end
124
112
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uffizzi
4
- VERSION = '0.7.3'
4
+ VERSION = '0.8.0'
5
5
  end
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: 0.7.3
4
+ version: 0.8.0
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: 2022-05-13 00:00:00.000000000 Z
12
+ date: 2022-05-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: awesome_print