uffizzi-cli 0.1.2 → 0.1.4.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: aca9ee61a74b9ee91500b97af8f476eaac87bec45004666cc530ae126ec5e805
4
- data.tar.gz: 7e5dbaf9b1f1f83290131462001abce49beb00672c6f64e4149f8d712dcdc9c6
3
+ metadata.gz: 22ba7aad922d83a3168cba4c93f476c334359ca83663f6fd9e10a9bbface0ae9
4
+ data.tar.gz: e32af9850d0dca8b4ba93675cd5f19d4c4fcdf8b86df5e4231125aa56ef63341
5
5
  SHA512:
6
- metadata.gz: d849aef9e9351c04857da29352c8c9844baa3e4893cbe92a4d81993969de1d42aa3c83337d81585a88ec0dcf5502480c296abae714d3ef3946026f81cb9ca0f0
7
- data.tar.gz: 6547b542070250bd421b88cdd3eca67e1eb84f49ad43664f18db2ca977c7098842146b5ffd30e373bb45e0a92c53defe32727bc097555881a4e0af04b37bd4ad
6
+ metadata.gz: 013051664b8bdf93ed677b3ceff71053f283800dc4493f98c1326de0a85db99ba2e58217d8c6a16ec3502c7cf4898a3612208f2343ec177d7f44eae32ddb8d63
7
+ data.tar.gz: a1054b99e188dbbb6e13c5d19dec8134996386a42730dd5f2d9af857fc1b05b02cca00543e0c9158942a61d1b5e51a1d483f60c16ff74a4adca3f924d6819ed9
data/Dockerfile CHANGED
@@ -2,7 +2,7 @@ FROM ruby:3.0.2-alpine3.14
2
2
 
3
3
  RUN apk update && apk upgrade
4
4
  RUN apk add bash
5
- RUN apk add curl-dev ruby-dev build-base git curl ruby-json openssl
5
+ RUN apk add curl-dev ruby-dev build-base git curl ruby-json openssl groff mandoc man-pages
6
6
 
7
7
  RUN mkdir -p /gem
8
8
  WORKDIR /gem
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- uffizzi-cli (0.1.2)
4
+ uffizzi-cli (0.1.4.3)
5
5
  thor
6
6
 
7
7
  GEM
@@ -26,12 +26,18 @@ GEM
26
26
  hashdiff (1.0.1)
27
27
  i18n (1.8.11)
28
28
  concurrent-ruby (~> 1.0)
29
+ kramdown (2.3.1)
30
+ rexml
29
31
  method_source (1.0.0)
30
32
  minitest (5.14.4)
31
33
  minitest-power_assert (0.3.1)
32
34
  minitest
33
35
  power_assert (>= 1.1)
34
36
  mocha (1.13.0)
37
+ mustache (0.99.8)
38
+ nokogiri (1.13.1-x86_64-linux)
39
+ racc (~> 1.4)
40
+ open3 (0.1.1)
35
41
  parallel (1.21.0)
36
42
  parser (3.0.2.0)
37
43
  ast (~> 2.4.1)
@@ -46,10 +52,15 @@ GEM
46
52
  pry (> 0.10.0)
47
53
  unicode (~> 0.4.4)
48
54
  public_suffix (4.0.6)
55
+ racc (1.6.0)
49
56
  rainbow (3.0.0)
50
57
  rake (13.0.6)
51
58
  regexp_parser (2.1.1)
52
59
  rexml (3.2.5)
60
+ ronn-ng (0.9.1)
61
+ kramdown (~> 2.1)
62
+ mustache (~> 0.7, >= 0.7.0)
63
+ nokogiri (~> 1.9, >= 1.9.0)
53
64
  rubocop (1.22.3)
54
65
  parallel (~> 1.10)
55
66
  parser (>= 3.0.0.0)
@@ -87,9 +98,11 @@ DEPENDENCIES
87
98
  minitest
88
99
  minitest-power_assert
89
100
  mocha
101
+ open3
90
102
  pry-byebug
91
103
  pry-inline
92
104
  rake
105
+ ronn-ng
93
106
  rubocop
94
107
  rubocop-minitest
95
108
  rubocop-rake
data/README.md CHANGED
@@ -108,6 +108,37 @@ $ uffizzi config delete OPTION
108
108
 
109
109
  Deletes specified option.
110
110
 
111
+ ## Git workflow for the app:
112
+
113
+ 1. Clone the repository and checkout to `develop` branch
114
+
115
+ 2. Pull repository to ensure you have the latest changes
116
+ ```
117
+ git pull --rebase develop
118
+ ```
119
+
120
+ 3. Start new branch from `develop`
121
+ ```
122
+ git checkout -b feature/short_issue_description (e.g. feature/add_domain_settings)
123
+ ```
124
+
125
+ 4. Make changes you need for the feature, commit them to the repo
126
+ ```
127
+ git add .
128
+ git commit -m 'short commit description' (e.g. git commit -m 'added domain settings')
129
+ git push origin FEATURE_NAME
130
+ ```
131
+
132
+ 4. You already can create PR with develop branch as a target. Once the feature is ready let us know in the channel - we will review
133
+
134
+ 5. Merge your feature to `qa` branch and push. Ensure your pipeline is successful
135
+ ```
136
+ git checkout qa
137
+ git pull --rebase qa
138
+ git merge --no-ff FEATURE_NAME
139
+ git push origin qa
140
+ ```
141
+
111
142
  ## Contributing
112
143
 
113
144
  Bug reports and pull requests are welcome on GitHub at https://github.com/UffizziCloud/uffizzi_cli.
data/Rakefile CHANGED
@@ -14,3 +14,8 @@ require 'rubocop/rake_task'
14
14
  RuboCop::RakeTask.new
15
15
 
16
16
  task default: [:test, :rubocop]
17
+
18
+ desc 'Generate roff output files from ronn format'
19
+ task :generate_docs do
20
+ sh 'ronn --roff man/*.ronn'
21
+ end
@@ -4,14 +4,10 @@ module Uffizzi
4
4
  module AuthHelper
5
5
  class << self
6
6
  def signed_in?
7
- logged_in = ConfigFile.exists? &&
7
+ ConfigFile.exists? &&
8
8
  ConfigFile.option_exists?(:account_id) &&
9
9
  ConfigFile.option_exists?(:cookie) &&
10
10
  ConfigFile.option_exists?(:hostname)
11
-
12
- puts 'You are not logged in.' unless logged_in
13
-
14
- logged_in
15
11
  end
16
12
  end
17
13
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'open3'
4
+
5
+ module Cli
6
+ class Common
7
+ class << self
8
+ def show_manual(method_name)
9
+ manual_doc_path = "man/uffizzi-#{method_name}"
10
+
11
+ Open3.pipeline("man #{manual_doc_path}")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'io/console'
4
4
  require 'uffizzi'
5
+ require 'uffizzi/response_helper'
5
6
 
6
7
  module Uffizzi
7
8
  class CLI::Login
@@ -13,12 +14,10 @@ module Uffizzi
13
14
 
14
15
  def run
15
16
  password = IO::console.getpass('Enter Password: ')
16
-
17
17
  params = prepare_request_params(password)
18
-
19
18
  response = create_session(@options[:hostname], params)
20
19
 
21
- if response[:code] == Net::HTTPCreated
20
+ if Uffizzi::ResponseHelper.created?(response)
22
21
  handle_succeed_response(response)
23
22
  else
24
23
  handle_failed_response(response)
@@ -41,12 +40,10 @@ module Uffizzi
41
40
  end
42
41
 
43
42
  def handle_succeed_response(response)
44
- unless account_valid?(response[:body][:user][:accounts].first)
45
- puts 'No account related to this email'
46
- return
47
- end
48
- account_id = response[:body][:user][:accounts].first[:id]
49
- ConfigFile.create(account_id, response[:headers], @options[:hostname])
43
+ account = response[:body][:user][:accounts].first
44
+ return Uffizzi.ui.say('No account related to this email') unless account_valid?(account)
45
+
46
+ ConfigFile.create(account[:id], response[:headers], @options[:hostname])
50
47
  end
51
48
 
52
49
  def account_valid?(account)
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'io/console'
4
+ require 'uffizzi'
5
+ require 'uffizzi/auth_helper'
6
+
7
+ module Uffizzi
8
+ class CLI::Logout
9
+ include ApiClient
10
+
11
+ def run
12
+ return Uffizzi.ui.say('You are not logged in') unless Uffizzi::AuthHelper.signed_in?
13
+
14
+ hostname = ConfigFile.read_option(:hostname)
15
+ destroy_session(hostname)
16
+
17
+ ConfigFile.delete
18
+ Uffizzi.ui.say('You have been successfully logged out')
19
+ end
20
+ end
21
+ end
@@ -9,7 +9,7 @@ module Uffizzi
9
9
  include ApiClient
10
10
 
11
11
  def run
12
- return unless Uffizzi::AuthHelper.signed_in?
12
+ return 'You are not logged in' unless Uffizzi::AuthHelper.signed_in?
13
13
 
14
14
  hostname = ConfigFile.read_option(:hostname)
15
15
  response = fetch_projects(hostname)
data/lib/uffizzi/cli.rb CHANGED
@@ -4,13 +4,17 @@ require 'thor'
4
4
 
5
5
  module Uffizzi
6
6
  class CLI < Thor
7
- desc 'version', 'show version'
7
+ require_relative 'cli/common'
8
+
9
+ class_option :help, type: :boolean, aliases: HELP_MAPPINGS
10
+
11
+ desc 'version', 'Show Version'
8
12
  def version
9
13
  require_relative 'version'
10
14
  puts Uffizzi::VERSION
11
15
  end
12
16
 
13
- desc 'login', 'login'
17
+ desc 'login', 'Login into Uffizzi'
14
18
  method_option :user, required: true, aliases: '-u'
15
19
  method_option :hostname, required: true, aliases: '-h'
16
20
  def login
@@ -18,6 +22,14 @@ module Uffizzi
18
22
  Login.new(options).run
19
23
  end
20
24
 
25
+ desc 'logout', 'Logout from Uffizzi'
26
+ def logout(help = nil)
27
+ return Cli::Common.show_manual(:logout) if help || options[:help]
28
+
29
+ require_relative 'cli/logout'
30
+ Logout.new.run
31
+ end
32
+
21
33
  desc 'projects', 'projects'
22
34
  def projects
23
35
  require_relative 'cli/projects'
@@ -12,6 +12,13 @@ module ApiClient
12
12
  build_response(response)
13
13
  end
14
14
 
15
+ def destroy_session(hostname)
16
+ uri = session_uri(hostname)
17
+ response = Uffizzi::HttpClient.make_request(uri, :delete, true)
18
+
19
+ build_response(response)
20
+ end
21
+
15
22
  def fetch_projects(hostname)
16
23
  uri = projects_uri(hostname)
17
24
  response = Uffizzi::HttpClient.make_request(uri, :get, true)
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Uffizzi
4
+ module ResponseHelper
5
+ class << self
6
+ def created?(response)
7
+ response[:code] == Net::HTTPCreated
8
+ end
9
+
10
+ def unprocessable_entity?(response)
11
+ response[:code] == Net::HTTPUnprocessableEntity
12
+ end
13
+
14
+ def not_found?(response)
15
+ response[:code] == Net::HTTPNotFound
16
+ end
17
+
18
+ def forbidden?(response)
19
+ response[:code] == Net::HTTPForbidden
20
+ end
21
+
22
+ def no_content?(response)
23
+ response[:code] == Net::HTTPNoContent
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor'
4
+
5
+ module Uffizzi
6
+ module UI
7
+ class Shell
8
+ def initialize
9
+ @shell = Thor::Shell::Basic.new
10
+ end
11
+
12
+ def say(msg)
13
+ @shell.say(msg)
14
+ end
15
+
16
+ def last_message
17
+ @shell.send(:stdout).string.strip
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Uffizzi
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.4.3'
5
5
  end
data/lib/uffizzi.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'uffizzi/shell'
3
4
  require_relative 'uffizzi/version'
4
5
  require_relative 'uffizzi/clients/api/api_client'
5
6
  require_relative 'uffizzi/clients/api/api_routes'
@@ -7,4 +8,9 @@ require_relative 'uffizzi/config_file'
7
8
 
8
9
  module Uffizzi
9
10
  class Error < StandardError; end
11
+ class << self
12
+ def ui
13
+ @ui ||= Uffizzi::UI::Shell.new
14
+ end
15
+ end
10
16
  end
@@ -0,0 +1,21 @@
1
+ .\" generated with Ronn-NG/v0.9.1
2
+ .\" http://github.com/apjanke/ronn-ng/tree/0.9.1
3
+ .TH "UFFIZZI\-LOGOUT" "" "February 2022" ""
4
+ .SH "NAME"
5
+ \fBuffizzi\-logout\fR \- log out of a Uffizzi user account
6
+ .SH "SYNOPSIS"
7
+ \fBuffizzi logout\fR
8
+ .SH "DESCRIPTION"
9
+ .nf
10
+ The uffizzi logout command logs out of a Uffizzi user account\.
11
+
12
+ For more information on logout, see:
13
+ https://docs\.uffizzi\.com/references/cli
14
+ .fi
15
+ .SH "UFFIZZI WIDE FLAGS"
16
+ .nf
17
+ These flags are available to all commands: \-\-project\. Run $ uffizzi
18
+ help for details\.
19
+ .fi
20
+ .SH "EXAMPLES"
21
+ uffizzi logout
@@ -0,0 +1,19 @@
1
+ uffizzi-logout - log out of a Uffizzi user account
2
+ ================================================================
3
+
4
+ ## SYNOPSIS
5
+
6
+ `uffizzi logout`
7
+
8
+ ## DESCRIPTION
9
+ The uffizzi logout command logs out of a Uffizzi user account.
10
+
11
+ For more information on logout, see:
12
+ https://docs.uffizzi.com/references/cli
13
+
14
+ ## UFFIZZI WIDE FLAGS
15
+ These flags are available to all commands: --project. Run $ uffizzi
16
+ help for details.
17
+
18
+ ## EXAMPLES
19
+ uffizzi logout
data/uffizzi.gemspec CHANGED
@@ -33,9 +33,11 @@ Gem::Specification.new do |spec|
33
33
  spec.add_development_dependency 'minitest'
34
34
  spec.add_development_dependency 'minitest-power_assert'
35
35
  spec.add_development_dependency 'mocha'
36
+ spec.add_development_dependency 'open3'
36
37
  spec.add_development_dependency 'pry-byebug'
37
38
  spec.add_development_dependency 'pry-inline'
38
39
  spec.add_development_dependency 'rake'
40
+ spec.add_development_dependency 'ronn-ng'
39
41
  spec.add_development_dependency 'rubocop'
40
42
  spec.add_development_dependency 'rubocop-minitest'
41
43
  spec.add_development_dependency 'rubocop-rake'
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.1.2
4
+ version: 0.1.4.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-02-28 00:00:00.000000000 Z
12
+ date: 2022-03-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -95,6 +95,20 @@ dependencies:
95
95
  - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: open3
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
98
112
  - !ruby/object:Gem::Dependency
99
113
  name: pry-byebug
100
114
  requirement: !ruby/object:Gem::Requirement
@@ -137,6 +151,20 @@ dependencies:
137
151
  - - ">="
138
152
  - !ruby/object:Gem::Version
139
153
  version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: ronn-ng
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
140
168
  - !ruby/object:Gem::Dependency
141
169
  name: rubocop
142
170
  requirement: !ruby/object:Gem::Requirement
@@ -232,14 +260,20 @@ files:
232
260
  - lib/uffizzi.rb
233
261
  - lib/uffizzi/auth_helper.rb
234
262
  - lib/uffizzi/cli.rb
263
+ - lib/uffizzi/cli/common.rb
235
264
  - lib/uffizzi/cli/config.rb
236
265
  - lib/uffizzi/cli/login.rb
266
+ - lib/uffizzi/cli/logout.rb
237
267
  - lib/uffizzi/cli/projects.rb
238
268
  - lib/uffizzi/clients/api/api_client.rb
239
269
  - lib/uffizzi/clients/api/api_routes.rb
240
270
  - lib/uffizzi/clients/api/http_client.rb
241
271
  - lib/uffizzi/config_file.rb
272
+ - lib/uffizzi/response_helper.rb
273
+ - lib/uffizzi/shell.rb
242
274
  - lib/uffizzi/version.rb
275
+ - man/uffizzi-logout
276
+ - man/uffizzi-logout.ronn
243
277
  - uffizzi.gemspec
244
278
  homepage: https://uffizzi.com
245
279
  licenses: