uffizzi-cli 0.11.0 → 0.11.3

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: 6a77480fa0ba3272d145f85b529890db26cbe746a1c24e4ab06bdd5722440a97
4
- data.tar.gz: 81490020eded539424fc962df0513fab070948bf8ed11a4e4cb5e11eb9be48ea
3
+ metadata.gz: 180b017f63db77067a36ac80286e244bed3c363e9c884c6c65e7f0157c5342dd
4
+ data.tar.gz: 024ad78f5e85209b2970324f68b8017f1a9fb919e3c9b7dcfbc31ef903dad548
5
5
  SHA512:
6
- metadata.gz: 1deeb99a694ad314a86980bbd2d320234f893824cad9c325077145e05d586bff507e2b881ccd1990926dc7bbf94c60babe8008ad58c06b4f8da82df66a89737b
7
- data.tar.gz: 3bbe1123c922b6117a1794e81fa93d4059581c15b5de3f8d15bc76b5ec52df43d4f0f86c662ef196bb98ce0b80a4434114533a23f51a7cdb95213204666ba1c1
6
+ metadata.gz: d2c0eb580b2b290b03bbbab9069020b150929cdeb3eeca9ec10bd238b9325a48c77716b19f30e638435ad00c9c406a6d0d4bfa7049aa63afc7861233700d71a3
7
+ data.tar.gz: 39bc279bb44a2ed422220d517fe104942efb17ccbcc0a7ee58bb0698b923aea2396d3cc493303cadc92cc723cba8114dde62bc3a9c4564e7e6e3b53ff17ac7d2
@@ -126,12 +126,14 @@ module Uffizzi
126
126
  desc 'ghcr', 'Connect to GitHub Container Registry (ghcr.io)'
127
127
  method_option :skip_raise_existence_error, type: :boolean, default: false,
128
128
  desc: 'Skip raising an error within check the credential'
129
+ method_option :username, type: :string, aliases: :u
130
+ method_option :token, type: :string, aliases: :t
129
131
  def ghcr
130
132
  type = Uffizzi.configuration.credential_types[:github_registry]
131
133
  check_credential_existence(type, 'ghcr')
132
134
 
133
- username = ENV['GITHUB_USERNAME'] || Uffizzi.ui.ask('Github Username: ')
134
- password = ENV['GITHUB_ACCESS_TOKEN'] || Uffizzi.ui.ask('Access Token: ', echo: false)
135
+ username = options[:username] || ENV['GITHUB_USERNAME'] || Uffizzi.ui.ask('Github Username:')
136
+ password = options[:token] || ENV['GITHUB_ACCESS_TOKEN'] || Uffizzi.ui.ask('Access Token:', echo: false)
135
137
 
136
138
  params = {
137
139
  username: username,
@@ -15,7 +15,7 @@ module Uffizzi
15
15
  end
16
16
 
17
17
  def run
18
- Uffizzi.ui.say('Login to Uffizzi to view and manage your previews.')
18
+ Uffizzi.ui.say('Login to Uffizzi server.')
19
19
  server = set_server
20
20
 
21
21
  username = set_username
@@ -34,7 +34,8 @@ module Uffizzi
34
34
 
35
35
  def set_server
36
36
  config_server = ConfigFile.exists? ? read_option_from_config(:server) : nil
37
- @options[:server] || config_server || Uffizzi.ui.ask('Server: ')
37
+ server_address = @options[:server] || config_server || Uffizzi.ui.ask('Server: ')
38
+ server_address.start_with?('http:', 'https:') ? server_address : "https://#{server_address}"
38
39
  end
39
40
 
40
41
  def set_username
@@ -68,6 +69,8 @@ module Uffizzi
68
69
  ConfigFile.write_option(:cookie, response[:headers])
69
70
  ConfigFile.write_option(:account_id, account[:id])
70
71
 
72
+ Uffizzi.ui.say('Login successfull')
73
+
71
74
  default_project = ConfigFile.read_option(:project)
72
75
  return unless default_project
73
76
 
@@ -68,7 +68,7 @@ module Uffizzi
68
68
 
69
69
  def handle_succeed_logs_response(response, container_name)
70
70
  logs = response[:body][:logs] || []
71
- return Uffizzi.ui.say("The service #{container_name} has no logs") if logs.empty?
71
+ return Uffizzi.ui.say("The service '#{container_name}' has no logs") if logs.empty?
72
72
 
73
73
  logs.each do |log|
74
74
  Uffizzi.ui.say(log)
data/lib/uffizzi/cli.rb CHANGED
@@ -64,8 +64,8 @@ module Uffizzi
64
64
  super
65
65
  rescue Interrupt
66
66
  raise Uffizzi::Error.new('The command was interrupted')
67
- rescue SocketError
68
- raise Uffizzi::Error.new('A request was not sent to Uffizzi app')
67
+ rescue StandardError => e
68
+ raise Uffizzi::Error.new(e.message)
69
69
  end
70
70
 
71
71
  private
@@ -92,10 +92,9 @@ module Uffizzi
92
92
  end
93
93
 
94
94
  def write(data)
95
- file = create_file
96
95
  prepared_data = prepare_data(data)
97
- file.write(prepared_data)
98
- file.close
96
+
97
+ lock(config_path) { atomic_write(config_path, "#{config_path}.tmp", prepared_data) }
99
98
  end
100
99
 
101
100
  def prepare_data(data)
@@ -105,12 +104,18 @@ module Uffizzi
105
104
  end
106
105
  end
107
106
 
108
- def create_file
109
- dir = File.dirname(config_path)
107
+ def atomic_write(path, temp_path, content)
108
+ File.open(temp_path, 'w') { |f| f.write(content) }
109
+ FileUtils.mv(temp_path, path)
110
+ end
110
111
 
112
+ def lock(path)
113
+ dir = File.dirname(path)
111
114
  FileUtils.mkdir_p(dir) unless File.directory?(dir)
112
115
 
113
- File.new(config_path, 'w')
116
+ File.open(path).flock(File::LOCK_EX) if File.exist?(path)
117
+ yield
118
+ File.open(path).flock(File::LOCK_UN)
114
119
  end
115
120
  end
116
121
  end
@@ -42,14 +42,18 @@ module Uffizzi
42
42
  def prepare_errors(errors)
43
43
  errors.values.reduce('') do |acc, error_messages|
44
44
  if error_messages.is_a?(Array)
45
- error_messages.each { |error_message| acc = "#{acc}#{error_message}\n" }
45
+ error_messages.each { |error_message| acc = "#{acc}#{prepare_error_message(error_message)}\n" }
46
46
  else
47
- acc = "#{acc}#{error_messages}\n"
47
+ acc = "#{acc}#{prepare_error_message(error_message)}\n"
48
48
  end
49
49
 
50
50
  acc
51
51
  end
52
52
  end
53
+
54
+ def prepare_error_message(error_message)
55
+ error_message.split('::').last
56
+ end
53
57
  end
54
58
  end
55
59
  end
@@ -20,7 +20,7 @@ class PreviewService
20
20
  deployment_id = deployment[:id]
21
21
  params = { id: deployment_id }
22
22
 
23
- response = deploy_containers(Uffizzi::ConfigFile.read_option(:server), project_slug, deployment_id, params)
23
+ response = deploy_containers(server_url, project_slug, deployment_id, params)
24
24
 
25
25
  if !Uffizzi::ResponseHelper.no_content?(response)
26
26
  Uffizzi::ResponseHelper.handle_failed_response(response)
@@ -32,13 +32,17 @@ class PreviewService
32
32
 
33
33
  private
34
34
 
35
+ def server_url
36
+ @server_url ||= Uffizzi::ConfigFile.read_option(:server)
37
+ end
38
+
35
39
  def wait_containers_creation(deployment, project_slug)
36
40
  spinner = TTY::Spinner.new('[:spinner] Creating containers...', format: :dots)
37
41
  spinner.auto_spin
38
42
 
39
43
  activity_items = []
40
44
  loop do
41
- response = get_activity_items(Uffizzi::ConfigFile.read_option(:server), project_slug, deployment[:id])
45
+ response = get_activity_items(server_url, project_slug, deployment[:id])
42
46
  handle_activity_items_response(response, spinner)
43
47
  activity_items = response[:body][:activity_items]
44
48
  break if activity_items.count == deployment[:containers].count
@@ -62,7 +66,7 @@ class PreviewService
62
66
  containers_spinners = create_containers_spinners(activity_items, spinner)
63
67
 
64
68
  loop do
65
- response = get_activity_items(Uffizzi::ConfigFile.read_option(:server), project_slug, deployment[:id])
69
+ response = get_activity_items(server_url, project_slug, deployment[:id])
66
70
  handle_activity_items_response(response, spinner)
67
71
  activity_items = response[:body][:activity_items]
68
72
  update_containers_spinners!(activity_items, containers_spinners)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uffizzi
4
- VERSION = '0.11.0'
4
+ VERSION = '0.11.3'
5
5
  end
data/man/uffizzi-connect CHANGED
@@ -1,6 +1,6 @@
1
1
  .\" generated with Ronn-NG/v0.9.1
2
2
  .\" http://github.com/apjanke/ronn-ng/tree/0.9.1
3
- .TH "UFFIZZI\-CONNECT" "" "May 2022" ""
3
+ .TH "UFFIZZI\-CONNECT" "" "July 2022" ""
4
4
  .SH "NAME"
5
5
  \fBuffizzi\-connect\fR \- grant a Uffizzi user account access to external services
6
6
  .SH "SYNOPSIS"
@@ -30,7 +30,7 @@ ecr
30
30
  gcr
31
31
  Connect to Google Container Registry (gcr\.io)\.
32
32
 
33
- gchr
33
+ ghcr
34
34
  Connect to GitHub Container Registry (ghcr\.io)\.
35
35
  .fi
36
36
  .P
@@ -1,16 +1,20 @@
1
1
  .\" generated with Ronn-NG/v0.9.1
2
2
  .\" http://github.com/apjanke/ronn-ng/tree/0.9.1
3
- .TH "UFFIZZI\-CONNECT\-ECR" "" "May 2022" ""
3
+ .TH "UFFIZZI\-CONNECT\-GHCR" "" "July 2022" ""
4
4
  .SH "NAME"
5
- \fBuffizzi\-connect\-ecr\fR \- grant a Uffizzi user account access to a private GitHub Container Registry (GHCR)
5
+ \fBuffizzi\-connect\-ghcr\fR \- grant a Uffizzi user account access to a private GitHub Container Registry (GHCR)
6
6
  .SH "SYNOPSIS"
7
7
  .nf
8
- uffizzi connect ecr
8
+ uffizzi connect ghcr [OPTION]\|\.\|\.\|\.
9
9
  .fi
10
10
  .SH "DESCRIPTION"
11
11
  .nf
12
12
  Given valid credentials, grants a Uffizzi user account access
13
- to a private GitHub Container Registry
13
+ to a private GitHub Container Registry\.
14
+
15
+ Credentials can be provided interactively or non\-interactively
16
+ via command options or environment variables:
17
+ GITHUB_USERNAME, GITHUB_ACCESS_TOKEN
14
18
 
15
19
  This command can fail for the following reasons:
16
20
  \- The active user does not have permission to connect
@@ -24,12 +28,17 @@ For detailed instructions on configuring webhooks to send push
24
28
  notifications to Uffizzi, see
25
29
  https://docs\.uffizzi\.com/guides/container\-registry\-integrations
26
30
  .fi
31
+ .SH "OPTIONS"
32
+ .nf
33
+ \-u, \-\-username GitHub username
34
+ \-t, \-\-token Personal access token from GitHub
35
+ .fi
27
36
  .SH "EXAMPLES"
28
37
  .nf
29
38
  The following command will prompt the user to enter GHCR
30
39
  credentials, including GitHub account name and
31
- personal access key (PAT):
40
+ personal access token (PAT):
32
41
 
33
- $ uffizzi connect ecr
42
+ uffizzi connect ghcr
34
43
  .fi
35
44
 
@@ -1,15 +1,19 @@
1
- uffizzi-connect-ecr - grant a Uffizzi user account access to a private GitHub Container Registry (GHCR)
1
+ uffizzi-connect-ghcr - grant a Uffizzi user account access to a private GitHub Container Registry (GHCR)
2
2
  ================================================================
3
3
 
4
4
  ## SYNOPSIS
5
- uffizzi connect ecr
5
+ uffizzi connect ghcr [OPTION]...
6
6
 
7
7
  ## DESCRIPTION
8
- Given valid credentials, grants a Uffizzi user account access
9
- to a private GitHub Container Registry
8
+ Given valid credentials, grants a Uffizzi user account access
9
+ to a private GitHub Container Registry.
10
+
11
+ Credentials can be provided interactively or non-interactively
12
+ via command options or environment variables:
13
+ GITHUB_USERNAME, GITHUB_ACCESS_TOKEN
10
14
 
11
15
  This command can fail for the following reasons:
12
- - The active user does not have permission to connect
16
+ - The active user does not have permission to connect
13
17
  external services.
14
18
  - The given credentials are invalid.
15
19
 
@@ -17,12 +21,16 @@ uffizzi-connect-ecr - grant a Uffizzi user account access to a private GitHub Co
17
21
  https://github.com/UffizziCloud/uffizzi_cli
18
22
 
19
23
  For detailed instructions on configuring webhooks to send push
20
- notifications to Uffizzi, see
24
+ notifications to Uffizzi, see
21
25
  https://docs.uffizzi.com/guides/container-registry-integrations
22
26
 
27
+ ## OPTIONS
28
+ -u, --username GitHub username
29
+ -t, --token Personal access token from GitHub
30
+
23
31
  ## EXAMPLES
24
- The following command will prompt the user to enter GHCR
25
- credentials, including GitHub account name and
26
- personal access key (PAT):
27
-
28
- $ uffizzi connect ecr
32
+ The following command will prompt the user to enter GHCR
33
+ credentials, including GitHub account name and
34
+ personal access token (PAT):
35
+
36
+ uffizzi connect ghcr
@@ -24,8 +24,8 @@ uffizzi-connect - grant a Uffizzi user account access to external services
24
24
 
25
25
  gcr
26
26
  Connect to Google Container Registry (gcr.io).
27
-
28
- gchr
27
+
28
+ ghcr
29
29
  Connect to GitHub Container Registry (ghcr.io).
30
30
 
31
31
  Run 'uffizzi connect COMMAND --help' for more information on a command.
@@ -1,6 +1,6 @@
1
1
  .\" generated with Ronn-NG/v0.9.1
2
2
  .\" http://github.com/apjanke/ronn-ng/tree/0.9.1
3
- .TH "UFFIZZI\-DISCONNECT" "" "May 2022" ""
3
+ .TH "UFFIZZI\-DISCONNECT" "" "July 2022" ""
4
4
  .SH "NAME"
5
5
  \fBuffizzi\-disconnect\fR \- revoke a Uffizzi user account access to external services
6
6
  .SH "SYNOPSIS"
@@ -30,7 +30,7 @@ ecr
30
30
  gcr
31
31
  Disonnect from Google Container Registry (gcr\.io)\.
32
32
 
33
- gchr
33
+ ghcr
34
34
  Disonnect from GitHub Container Registry (ghcr\.io)\.
35
35
  .fi
36
36
  .P
@@ -24,8 +24,8 @@ uffizzi-disconnect - revoke a Uffizzi user account access to external services
24
24
 
25
25
  gcr
26
26
  Disonnect from Google Container Registry (gcr.io).
27
-
28
- gchr
27
+
28
+ ghcr
29
29
  Disonnect from GitHub Container Registry (ghcr.io).
30
30
 
31
31
  Run 'uffizzi disconnect COMMAND --help' for more information on a command.
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.11.0
4
+ version: 0.11.3
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-06-15 00:00:00.000000000 Z
12
+ date: 2022-07-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: awesome_print