uffizzi-cli 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -48,7 +48,7 @@ module Uffizzi
48
48
  Uffizzi.ui.disable_stdout
49
49
  end
50
50
  raise Uffizzi::Error.new('You are not logged in.') unless Uffizzi::AuthHelper.signed_in?
51
- raise Uffizzi::Error.new('This command needs project to be set in config file') unless Uffizzi::AuthHelper.project_set?
51
+ raise Uffizzi::Error.new('This command needs project to be set in config file') unless Uffizzi::AuthHelper.project_set?(options)
52
52
 
53
53
  project_slug = options[:project].nil? ? ConfigFile.read_option(:project) : options[:project]
54
54
 
@@ -67,7 +67,7 @@ module Uffizzi
67
67
  end
68
68
 
69
69
  def handle_list_command(project_slug)
70
- response = fetch_deployments(ConfigFile.read_option(:hostname), project_slug)
70
+ response = fetch_deployments(ConfigFile.read_option(:server), project_slug)
71
71
 
72
72
  if ResponseHelper.ok?(response)
73
73
  handle_succeed_list_response(response)
@@ -78,7 +78,7 @@ module Uffizzi
78
78
 
79
79
  def handle_create_command(file_path, project_slug)
80
80
  params = file_path.nil? ? {} : prepare_params(file_path)
81
- response = create_deployment(ConfigFile.read_option(:hostname), project_slug, params)
81
+ response = create_deployment(ConfigFile.read_option(:server), project_slug, params)
82
82
 
83
83
  if ResponseHelper.created?(response)
84
84
  handle_succeed_create_response(project_slug, response)
@@ -92,7 +92,7 @@ module Uffizzi
92
92
 
93
93
  return Uffizzi.ui.say("Preview should be specified in 'deployment-PREVIEW_ID' format") if deployment_id.nil?
94
94
 
95
- response = fetch_events(ConfigFile.read_option(:hostname), project_slug, deployment_id)
95
+ response = fetch_events(ConfigFile.read_option(:server), project_slug, deployment_id)
96
96
 
97
97
  if ResponseHelper.ok?(response)
98
98
  handle_succeed_events_response(response)
@@ -110,7 +110,7 @@ module Uffizzi
110
110
  deployment_id = deployment[:id]
111
111
  params = { id: deployment_id }
112
112
 
113
- response = deploy_containers(ConfigFile.read_option(:hostname), project_slug, deployment_id, params)
113
+ response = deploy_containers(ConfigFile.read_option(:server), project_slug, deployment_id, params)
114
114
 
115
115
  if ResponseHelper.no_content?(response)
116
116
  Uffizzi.ui.say("Preview created with name deployment-#{deployment_id}")
@@ -129,7 +129,7 @@ module Uffizzi
129
129
  activity_items = []
130
130
 
131
131
  loop do
132
- response = get_activity_items(ConfigFile.read_option(:hostname), project_slug, deployment_id)
132
+ response = get_activity_items(ConfigFile.read_option(:server), project_slug, deployment_id)
133
133
  handle_activity_items_response(response)
134
134
  return unless @spinner.spinning?
135
135
 
@@ -164,7 +164,7 @@ module Uffizzi
164
164
 
165
165
  def wait_containers_deploying(project_slug, deployment_id, containers_spinners)
166
166
  loop do
167
- response = get_activity_items(ConfigFile.read_option(:hostname), project_slug, deployment_id)
167
+ response = get_activity_items(ConfigFile.read_option(:server), project_slug, deployment_id)
168
168
  handle_activity_items_response(response)
169
169
  return if @spinner.done?
170
170
 
@@ -208,7 +208,7 @@ module Uffizzi
208
208
 
209
209
  return Uffizzi.ui.say("Preview should be specified in 'deployment-PREVIEW_ID' format") if deployment_id.nil?
210
210
 
211
- response = delete_deployment(ConfigFile.read_option(:hostname), project_slug, deployment_id)
211
+ response = delete_deployment(ConfigFile.read_option(:server), project_slug, deployment_id)
212
212
 
213
213
  if ResponseHelper.no_content?(response)
214
214
  handle_succeed_delete_response(deployment_id)
@@ -222,7 +222,7 @@ module Uffizzi
222
222
 
223
223
  return Uffizzi.ui.say("Preview should be specified in 'deployment-PREVIEW_ID' format") if deployment_id.nil?
224
224
 
225
- response = describe_deployment(ConfigFile.read_option(:hostname), project_slug, deployment_id)
225
+ response = describe_deployment(ConfigFile.read_option(:server), project_slug, deployment_id)
226
226
 
227
227
  if ResponseHelper.ok?(response)
228
228
  handle_succeed_describe_response(response)
@@ -12,25 +12,27 @@ module Uffizzi
12
12
 
13
13
  desc 'set [OPTIONS]', 'set'
14
14
  def set
15
- run(options, 'set')
15
+ run('set')
16
16
  end
17
17
 
18
18
  desc 'unset', 'unset'
19
19
  def unset
20
- run(options, 'unset')
20
+ run('unset')
21
21
  end
22
22
 
23
23
  desc 'describe', 'describe'
24
24
  def describe
25
- run(options, 'describe')
25
+ run('describe')
26
26
  end
27
27
 
28
28
  private
29
29
 
30
- def run(options, command)
30
+ def run(command)
31
31
  return Uffizzi.ui.say('You are not logged in.') unless Uffizzi::AuthHelper.signed_in?
32
- return Uffizzi.ui.say('This command needs project to be set in config file') unless Uffizzi::AuthHelper.project_set?
32
+ return Uffizzi.ui.say('This command needs project to be set in config file') unless Uffizzi::AuthHelper.project_set?(options)
33
33
 
34
+ @project_slug = options[:project].nil? ? ConfigFile.read_option(:project) : options[:project]
35
+ @server = ConfigFile.read_option(:server)
34
36
  file_path = options[:file]
35
37
  case command
36
38
  when 'set'
@@ -39,18 +41,14 @@ module Uffizzi
39
41
  handle_unset_command
40
42
  when 'describe'
41
43
  handle_describe_command
42
- when 'validate'
43
- handle_validate_command(file_path)
44
44
  end
45
45
  end
46
46
 
47
47
  def handle_set_command(file_path)
48
48
  return Uffizzi.ui.say('No file provided') if file_path.nil?
49
49
 
50
- hostname = ConfigFile.read_option(:hostname)
51
- project_slug = ConfigFile.read_option(:project)
52
50
  params = prepare_params(file_path)
53
- response = set_compose_file(hostname, params, project_slug)
51
+ response = set_compose_file(@server, params, @project_slug)
54
52
 
55
53
  if ResponseHelper.created?(response)
56
54
  Uffizzi.ui.say('compose file created')
@@ -60,9 +58,9 @@ module Uffizzi
60
58
  end
61
59
 
62
60
  def handle_unset_command
63
- hostname = ConfigFile.read_option(:hostname)
61
+ server = ConfigFile.read_option(:server)
64
62
  project_slug = ConfigFile.read_option(:project)
65
- response = unset_compose_file(hostname, project_slug)
63
+ response = unset_compose_file(server, project_slug)
66
64
 
67
65
  if ResponseHelper.no_content?(response)
68
66
  Uffizzi.ui.say('compose file deleted')
@@ -72,9 +70,9 @@ module Uffizzi
72
70
  end
73
71
 
74
72
  def handle_describe_command
75
- hostname = ConfigFile.read_option(:hostname)
73
+ server = ConfigFile.read_option(:server)
76
74
  project_slug = ConfigFile.read_option(:project)
77
- response = describe_compose_file(hostname, project_slug)
75
+ response = describe_compose_file(server, project_slug)
78
76
  compose_file = response[:body][:compose_file]
79
77
 
80
78
  if ResponseHelper.ok?(response)
@@ -48,8 +48,8 @@ module Uffizzi
48
48
  end
49
49
 
50
50
  def handle_list_command(project_slug)
51
- hostname = ConfigFile.read_option(:hostname)
52
- response = fetch_secrets(hostname, project_slug)
51
+ server = ConfigFile.read_option(:server)
52
+ response = fetch_secrets(server, project_slug)
53
53
  secrets = response[:body][:secrets].map { |secret| [secret[:name]] }
54
54
  return Uffizzi.ui.say('There are no secrets for the project') if secrets.empty?
55
55
 
@@ -61,20 +61,20 @@ module Uffizzi
61
61
  end
62
62
 
63
63
  def handle_create_command(project_slug, id)
64
- hostname = ConfigFile.read_option(:hostname)
64
+ server = ConfigFile.read_option(:server)
65
65
  secret_value = $stdin.read
66
66
  return Uffizzi.ui.say('Please provide the secret value') if secret_value.nil?
67
67
 
68
68
  params = { secrets: [{ name: id, value: secret_value }] }
69
- response = bulk_create_secrets(hostname, project_slug, params)
69
+ response = bulk_create_secrets(server, project_slug, params)
70
70
  return Uffizzi.ui.say('The secret was successfully created') if ResponseHelper.created?(response)
71
71
 
72
72
  ResponseHelper.handle_failed_response(response)
73
73
  end
74
74
 
75
75
  def handle_delete_command(project_slug, id)
76
- hostname = ConfigFile.read_option(:hostname)
77
- response = delete_secret(hostname, project_slug, id)
76
+ server = ConfigFile.read_option(:server)
77
+ response = delete_secret(server, project_slug, id)
78
78
 
79
79
  if ResponseHelper.no_content?(response)
80
80
  Uffizzi.ui.say('The secret was successfully deleted')
@@ -34,8 +34,8 @@ module Uffizzi
34
34
  end
35
35
 
36
36
  def handle_list_command
37
- hostname = ConfigFile.read_option(:hostname)
38
- response = fetch_projects(hostname)
37
+ server = ConfigFile.read_option(:server)
38
+ response = fetch_projects(server)
39
39
 
40
40
  if ResponseHelper.ok?(response)
41
41
  handle_succeed_response(response)
data/lib/uffizzi/cli.rb CHANGED
@@ -4,19 +4,24 @@ require 'uffizzi'
4
4
 
5
5
  module Uffizzi
6
6
  class CLI < Thor
7
+ require_relative 'cli/common'
8
+
9
+ class_option :help, type: :boolean, aliases: HELP_MAPPINGS
10
+ class_option :project, type: :string
11
+
7
12
  def self.exit_on_failure?
8
13
  true
9
14
  end
10
15
 
11
- desc 'version', 'show version'
16
+ desc 'version', 'Show Version'
12
17
  def version
13
18
  require_relative 'version'
14
19
  Uffizzi.ui.say(Uffizzi::VERSION)
15
20
  end
16
21
 
17
22
  desc 'login [OPTIONS]', 'Login into Uffizzi'
18
- method_option :user, required: true, aliases: '-u'
19
- method_option :hostname, required: true
23
+ method_option :server, required: false, aliases: '-s'
24
+ method_option :username, required: false, aliases: '-u'
20
25
  def login
21
26
  require_relative 'cli/login'
22
27
  Login.new(options).run
@@ -6,148 +6,148 @@ require_relative 'http_client'
6
6
  module ApiClient
7
7
  include ApiRoutes
8
8
 
9
- def create_session(hostname, params = {})
10
- uri = session_uri(hostname)
9
+ def create_session(server, params = {})
10
+ uri = session_uri(server)
11
11
  response = Uffizzi::HttpClient.make_post_request(uri, params, false)
12
12
 
13
13
  build_response(response)
14
14
  end
15
15
 
16
- def destroy_session(hostname)
17
- uri = session_uri(hostname)
16
+ def destroy_session(server)
17
+ uri = session_uri(server)
18
18
  response = Uffizzi::HttpClient.make_delete_request(uri)
19
19
 
20
20
  build_response(response)
21
21
  end
22
22
 
23
- def fetch_projects(hostname)
24
- uri = projects_uri(hostname)
23
+ def fetch_projects(server)
24
+ uri = projects_uri(server)
25
25
  response = Uffizzi::HttpClient.make_get_request(uri)
26
26
 
27
27
  build_response(response)
28
28
  end
29
29
 
30
- def create_credential(hostname, params)
31
- uri = credentials_uri(hostname)
30
+ def create_credential(server, params)
31
+ uri = credentials_uri(server)
32
32
  response = Uffizzi::HttpClient.make_post_request(uri, params)
33
33
 
34
34
  build_response(response)
35
35
  end
36
36
 
37
- def fetch_deployment_services(hostname, project_slug, deployment_id)
38
- uri = preview_services_uri(hostname, project_slug, deployment_id)
37
+ def fetch_deployment_services(server, project_slug, deployment_id)
38
+ uri = preview_services_uri(server, project_slug, deployment_id)
39
39
  response = Uffizzi::HttpClient.make_get_request(uri)
40
40
 
41
41
  build_response(response)
42
42
  end
43
43
 
44
- def delete_credential(hostname, credential_type)
45
- uri = delete_credential_uri(hostname, credential_type)
44
+ def delete_credential(server, credential_type)
45
+ uri = delete_credential_uri(server, credential_type)
46
46
  response = Uffizzi::HttpClient.make_delete_request(uri)
47
47
 
48
48
  build_response(response)
49
49
  end
50
50
 
51
- def fetch_deployment_service_logs(hostname, project_slug, deployment_id, container_name)
52
- uri = preview_service_logs_uri(hostname, project_slug, deployment_id, container_name)
51
+ def fetch_deployment_service_logs(server, project_slug, deployment_id, container_name)
52
+ uri = preview_service_logs_uri(server, project_slug, deployment_id, container_name)
53
53
  response = Uffizzi::HttpClient.make_get_request(uri)
54
54
 
55
55
  build_response(response)
56
56
  end
57
57
 
58
- def set_compose_file(hostname, params, project_slug)
59
- uri = compose_file_uri(hostname, project_slug)
58
+ def set_compose_file(server, params, project_slug)
59
+ uri = compose_file_uri(server, project_slug)
60
60
  response = Uffizzi::HttpClient.make_post_request(uri, params)
61
61
 
62
62
  build_response(response)
63
63
  end
64
64
 
65
- def unset_compose_file(hostname, project_slug)
66
- uri = compose_file_uri(hostname, project_slug)
65
+ def unset_compose_file(server, project_slug)
66
+ uri = compose_file_uri(server, project_slug)
67
67
  response = Uffizzi::HttpClient.make_delete_request(uri)
68
68
 
69
69
  build_response(response)
70
70
  end
71
71
 
72
- def fetch_secrets(hostname, project_slug)
73
- uri = secrets_uri(hostname, project_slug)
72
+ def fetch_secrets(server, project_slug)
73
+ uri = secrets_uri(server, project_slug)
74
74
  response = Uffizzi::HttpClient.make_get_request(uri)
75
75
 
76
76
  build_response(response)
77
77
  end
78
78
 
79
- def bulk_create_secrets(hostname, project_slug, params)
80
- uri = "#{secrets_uri(hostname, project_slug)}/bulk_create"
79
+ def bulk_create_secrets(server, project_slug, params)
80
+ uri = "#{secrets_uri(server, project_slug)}/bulk_create"
81
81
  response = Uffizzi::HttpClient.make_post_request(uri, params)
82
82
 
83
83
  build_response(response)
84
84
  end
85
85
 
86
- def delete_secret(hostname, project_slug, id)
87
- uri = secret_uri(hostname, project_slug, id)
86
+ def delete_secret(server, project_slug, id)
87
+ uri = secret_uri(server, project_slug, id)
88
88
  response = Uffizzi::HttpClient.make_delete_request(uri)
89
89
 
90
90
  build_response(response)
91
91
  end
92
92
 
93
- def describe_compose_file(hostname, project_slug)
94
- uri = compose_file_uri(hostname, project_slug)
93
+ def describe_compose_file(server, project_slug)
94
+ uri = compose_file_uri(server, project_slug)
95
95
  response = Uffizzi::HttpClient.make_get_request(uri)
96
96
 
97
97
  build_response(response)
98
98
  end
99
99
 
100
- def validate_compose_file(hostname, project_slug)
101
- uri = validate_compose_file_uri(hostname, project_slug)
100
+ def validate_compose_file(server, project_slug)
101
+ uri = validate_compose_file_uri(server, project_slug)
102
102
  response = Uffizzi::HttpClient.make_get_request(uri)
103
103
 
104
104
  build_response(response)
105
105
  end
106
106
 
107
- def fetch_deployments(hostname, project_slug)
108
- uri = deployments_uri(hostname, project_slug)
107
+ def fetch_deployments(server, project_slug)
108
+ uri = deployments_uri(server, project_slug)
109
109
  response = Uffizzi::HttpClient.make_get_request(uri)
110
110
 
111
111
  build_response(response)
112
112
  end
113
113
 
114
- def create_deployment(hostname, project_slug, params)
115
- uri = deployments_uri(hostname, project_slug)
114
+ def create_deployment(server, project_slug, params)
115
+ uri = deployments_uri(server, project_slug)
116
116
  response = Uffizzi::HttpClient.make_post_request(uri, params)
117
117
 
118
118
  build_response(response)
119
119
  end
120
120
 
121
- def delete_deployment(hostname, project_slug, deployment_id)
122
- uri = deployment_uri(hostname, project_slug, deployment_id)
121
+ def delete_deployment(server, project_slug, deployment_id)
122
+ uri = deployment_uri(server, project_slug, deployment_id)
123
123
  response = Uffizzi::HttpClient.make_delete_request(uri)
124
124
 
125
125
  build_response(response)
126
126
  end
127
127
 
128
- def describe_deployment(hostname, project_slug, deployment_id)
129
- uri = deployment_uri(hostname, project_slug, deployment_id)
128
+ def describe_deployment(server, project_slug, deployment_id)
129
+ uri = deployment_uri(server, project_slug, deployment_id)
130
130
  response = Uffizzi::HttpClient.make_get_request(uri)
131
131
 
132
132
  build_response(response)
133
133
  end
134
134
 
135
- def fetch_events(hostname, project_slug, deployment_id)
136
- uri = events_uri(hostname, project_slug, deployment_id)
135
+ def fetch_events(server, project_slug, deployment_id)
136
+ uri = events_uri(server, project_slug, deployment_id)
137
137
  response = Uffizzi::HttpClient.make_get_request(uri)
138
138
 
139
139
  build_response(response)
140
140
  end
141
141
 
142
- def get_activity_items(hostname, project_slug, deployment_id)
143
- uri = activity_items_uri(hostname, project_slug, deployment_id)
142
+ def get_activity_items(server, project_slug, deployment_id)
143
+ uri = activity_items_uri(server, project_slug, deployment_id)
144
144
  response = Uffizzi::HttpClient.make_get_request(uri)
145
145
 
146
146
  build_response(response)
147
147
  end
148
148
 
149
- def deploy_containers(hostname, project_slug, deployment_id, params)
150
- uri = deploy_containers_uri(hostname, project_slug, deployment_id)
149
+ def deploy_containers(server, project_slug, deployment_id, params)
150
+ uri = deploy_containers_uri(server, project_slug, deployment_id)
151
151
  response = Uffizzi::HttpClient.make_post_request(uri, params)
152
152
 
153
153
  build_response(response)
@@ -3,64 +3,64 @@
3
3
  require 'cgi'
4
4
 
5
5
  module ApiRoutes
6
- def compose_file_uri(hostname, project_slug)
7
- "#{hostname}/api/cli/v1/projects/#{project_slug}/compose_file"
6
+ def compose_file_uri(server, project_slug)
7
+ "#{server}/api/cli/v1/projects/#{project_slug}/compose_file"
8
8
  end
9
9
 
10
- def projects_uri(hostname)
11
- "#{hostname}/api/cli/v1/projects"
10
+ def projects_uri(server)
11
+ "#{server}/api/cli/v1/projects"
12
12
  end
13
13
 
14
- def secret_uri(hostname, project_slug, id)
14
+ def secret_uri(server, project_slug, id)
15
15
  path_id = CGI.escape(id)
16
- "#{hostname}/api/cli/v1/projects/#{project_slug}/secrets/#{path_id}"
16
+ "#{server}/api/cli/v1/projects/#{project_slug}/secrets/#{path_id}"
17
17
  end
18
18
 
19
- def secrets_uri(hostname, project_slug)
20
- "#{hostname}/api/cli/v1/projects/#{project_slug}/secrets"
19
+ def secrets_uri(server, project_slug)
20
+ "#{server}/api/cli/v1/projects/#{project_slug}/secrets"
21
21
  end
22
22
 
23
- def session_uri(hostname)
24
- "#{hostname}/api/cli/v1/session"
23
+ def session_uri(server)
24
+ "#{server}/api/cli/v1/session"
25
25
  end
26
26
 
27
- def validate_compose_file_uri(hostname, project_slug)
28
- "#{compose_files_uri(hostname, project_slug)}/validate"
27
+ def validate_compose_file_uri(server, project_slug)
28
+ "#{compose_files_uri(server, project_slug)}/validate"
29
29
  end
30
30
 
31
- def deployments_uri(hostname, project_slug)
32
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments"
31
+ def deployments_uri(server, project_slug)
32
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments"
33
33
  end
34
34
 
35
- def deployment_uri(hostname, project_slug, deployment_id)
36
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}"
35
+ def deployment_uri(server, project_slug, deployment_id)
36
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}"
37
37
  end
38
38
 
39
- def activity_items_uri(hostname, project_slug, deployment_id)
40
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/activity_items"
39
+ def activity_items_uri(server, project_slug, deployment_id)
40
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/activity_items"
41
41
  end
42
42
 
43
- def deploy_containers_uri(hostname, project_slug, deployment_id)
44
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/deploy_containers"
43
+ def deploy_containers_uri(server, project_slug, deployment_id)
44
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/deploy_containers"
45
45
  end
46
46
 
47
- def events_uri(hostname, project_slug, deployment_id)
48
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/events"
47
+ def events_uri(server, project_slug, deployment_id)
48
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/events"
49
49
  end
50
50
 
51
- def credentials_uri(hostname)
52
- "#{hostname}/api/cli/v1/account/credentials"
51
+ def credentials_uri(server)
52
+ "#{server}/api/cli/v1/account/credentials"
53
53
  end
54
54
 
55
- def preview_services_uri(hostname, project_slug, deployment_id)
56
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/containers"
55
+ def preview_services_uri(server, project_slug, deployment_id)
56
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/containers"
57
57
  end
58
58
 
59
- def delete_credential_uri(hostname, credential_type)
60
- "#{hostname}/api/cli/v1/account/credentials/#{credential_type}"
59
+ def delete_credential_uri(server, credential_type)
60
+ "#{server}/api/cli/v1/account/credentials/#{credential_type}"
61
61
  end
62
62
 
63
- def preview_service_logs_uri(hostname, project_slug, deployment_id, container_name)
64
- "#{hostname}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/containers/#{container_name}/logs"
63
+ def preview_service_logs_uri(server, project_slug, deployment_id, container_name)
64
+ "#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/containers/#{container_name}/logs"
65
65
  end
66
66
  end
@@ -57,7 +57,7 @@ module Uffizzi
57
57
  request.body = params.to_json
58
58
  end
59
59
  request['Cookie'] = ConfigFile.read_option(:cookie) if require_cookies
60
- if ConfigFile.exists? && ConfigFile.option_exists?(:basic_auth_user) && ConfigFile.option_exists?(:basic_auth_password)
60
+ if ConfigFile.exists? && ConfigFile.option_has_value?(:basic_auth_user) && ConfigFile.option_has_value?(:basic_auth_password)
61
61
  request.basic_auth(ConfigFile.read_option(:basic_auth_user), ConfigFile.read_option(:basic_auth_password))
62
62
  end
63
63
 
@@ -5,11 +5,11 @@ require 'fileutils'
5
5
 
6
6
  module Uffizzi
7
7
  class ConfigFile
8
- CONFIG_PATH = "#{Dir.home}/.uffizzi/config.json"
8
+ CONFIG_PATH = "#{Dir.home}/.config/uffizzi/config_default.json"
9
9
 
10
10
  class << self
11
- def create(account_id, cookie, hostname)
12
- data = prepare_config_data(account_id, cookie, hostname)
11
+ def create(account_id, cookie, server)
12
+ data = prepare_config_data(account_id, cookie, server)
13
13
  data.each_pair { |key, value| write_option(key, value) }
14
14
  end
15
15
 
@@ -28,11 +28,11 @@ module Uffizzi
28
28
  data[option]
29
29
  end
30
30
 
31
- def option_exists?(option)
31
+ def option_has_value?(option)
32
32
  data = read
33
- return false unless data.is_a?(Hash)
33
+ return false if !data.is_a?(Hash) || !option_exists?(option)
34
34
 
35
- data.key?(option)
35
+ !data[option].empty?
36
36
  end
37
37
 
38
38
  def write_option(key, value)
@@ -40,15 +40,15 @@ module Uffizzi
40
40
  return nil unless data.is_a?(Hash)
41
41
 
42
42
  data[key] = value
43
- write(data.to_json)
43
+ write(data)
44
44
  end
45
45
 
46
- def delete_option(key)
46
+ def unset_option(key)
47
47
  data = read
48
- return nil unless data.is_a?(Hash)
48
+ return nil unless data.is_a?(Hash) || !option_exists?(key)
49
49
 
50
- new_data = data.except(key)
51
- write(new_data.to_json)
50
+ data[key] = ''
51
+ write(data)
52
52
  end
53
53
 
54
54
  def rewrite_cookie(cookie)
@@ -61,7 +61,7 @@ module Uffizzi
61
61
 
62
62
  content = data.reduce('') do |acc, pair|
63
63
  property, value = pair
64
- "#{acc}#{property} - #{value}\n"
64
+ "#{acc}#{property} = #{value}\n"
65
65
  end
66
66
 
67
67
  Uffizzi.ui.say(content)
@@ -71,26 +71,42 @@ module Uffizzi
71
71
 
72
72
  private
73
73
 
74
+ def option_exists?(option)
75
+ data = read
76
+ return false unless data.is_a?(Hash)
77
+
78
+ data.key?(option)
79
+ end
80
+
74
81
  def read
75
- JSON.parse(File.read(CONFIG_PATH), symbolize_names: true)
82
+ data = File.read(CONFIG_PATH)
83
+ options = data.split("\n")
84
+ options.reduce({}) do |acc, option|
85
+ key, value = option.split('=', 2)
86
+ acc.merge({ key.strip.to_sym => value.strip })
87
+ end
76
88
  rescue Errno::ENOENT => e
77
89
  Uffizzi.ui.say(e)
78
- nil
79
- rescue JSON::ParserError
80
- Uffizzi.ui.say('Config file is in incorrect format')
81
- nil
82
90
  end
83
91
 
84
92
  def write(data)
85
93
  file = create_file
86
- file.write(data)
94
+ prepared_data = prepare_data(data)
95
+ file.write(prepared_data)
87
96
  file.close
88
97
  end
89
98
 
90
- def prepare_config_data(account_id, cookie, hostname)
99
+ def prepare_data(data)
100
+ data.reduce('') do |acc, option|
101
+ key, value = option
102
+ "#{acc}#{key} = #{value}\n"
103
+ end
104
+ end
105
+
106
+ def prepare_config_data(account_id, cookie, server)
91
107
  {
92
108
  account_id: account_id,
93
- hostname: hostname,
109
+ server: server,
94
110
  cookie: cookie,
95
111
  }
96
112
  end
data/lib/uffizzi/shell.rb CHANGED
@@ -15,10 +15,6 @@ module Uffizzi
15
15
  @shell.say(message)
16
16
  end
17
17
 
18
- def ask(msg, *args)
19
- @shell.ask(msg, *args)
20
- end
21
-
22
18
  def print_in_columns(messages)
23
19
  @shell.print_in_columns(messages)
24
20
  end
@@ -27,6 +23,13 @@ module Uffizzi
27
23
  @shell.print_table(table_data)
28
24
  end
29
25
 
26
+ def ask(message, *args)
27
+ answer = @shell.ask(message, *args)
28
+ options = args.last.is_a?(Hash) ? args.pop : {}
29
+ say("\n") unless options.fetch(:echo, true)
30
+ answer
31
+ end
32
+
30
33
  def last_message
31
34
  @shell.send(:stdout).string.strip
32
35
  end