forj 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +59 -0
- data/Gemfile +14 -15
- data/Rakefile +11 -3
- data/bin/forj +231 -338
- data/forj.gemspec +4 -7
- data/forj/defaults.yaml +3 -3
- data/lib/appinit.rb +21 -32
- data/lib/boot.rb +156 -0
- data/lib/cloud_connection.rb +42 -0
- data/lib/cloud_test.rb +86 -68
- data/lib/destroy.rb +97 -0
- data/lib/forj-settings.rb +350 -167
- data/lib/forj/ForjCli.rb +12 -14
- data/lib/forj/ForjCore.rb +78 -85
- data/lib/forj/process/ForjProcess.rb +1157 -771
- data/lib/get.rb +51 -0
- data/lib/ssh.rb +86 -78
- data/spec/boot_spec.rb +0 -1
- data/spec/spec_helper.rb +65 -65
- metadata +14 -22
data/lib/destroy.rb
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: UTF-8
|
3
|
+
|
4
|
+
# (c) Copyright 2014 Hewlett-Packard Development Company, L.P.
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
|
18
|
+
require 'highline/import'
|
19
|
+
require 'cloud_connection.rb'
|
20
|
+
#
|
21
|
+
# Destroy module
|
22
|
+
#
|
23
|
+
module Forj
|
24
|
+
# This module provides the behavior to destroy your forge's server(s)
|
25
|
+
module Destroy
|
26
|
+
def self.destroy(name, options)
|
27
|
+
account = Lorj::Account.new(options[:config])
|
28
|
+
|
29
|
+
# Setting account at runtime layer
|
30
|
+
account[:account_name] = options[:account_name] if options[:account_name]
|
31
|
+
# Setting account at account layer
|
32
|
+
account.ac_load account[:account_name]
|
33
|
+
|
34
|
+
o_cloud = Forj::CloudConnection.connect(account)
|
35
|
+
|
36
|
+
o_forge = o_cloud.get(:forge, name)
|
37
|
+
|
38
|
+
if o_forge[:servers].count > 0
|
39
|
+
destroy_server(o_cloud, o_forge, options, account)
|
40
|
+
else
|
41
|
+
PrcLib.high_level_msg("No server(s) found on forge instance '%s'.\n",
|
42
|
+
name)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.destroy_server(o_cloud, o_forge, options, account)
|
47
|
+
if options[:force]
|
48
|
+
# Destroy all servers found
|
49
|
+
o_cloud.delete(:forge)
|
50
|
+
else
|
51
|
+
server_list = get_server_list(o_forge)
|
52
|
+
|
53
|
+
o_server_number = get_server_index(server_list)
|
54
|
+
|
55
|
+
if o_server_number >= 0 && o_server_number < o_forge[:servers].count
|
56
|
+
# Destroy selected server
|
57
|
+
account.set(:forge_server, o_forge[:servers][o_server_number][:id])
|
58
|
+
o_cloud.delete(:forge)
|
59
|
+
end
|
60
|
+
|
61
|
+
# Destroy all servers found
|
62
|
+
o_cloud.delete(:forge) if o_server_number == server_list.index('all')
|
63
|
+
# esc
|
64
|
+
PrcLib.high_level_msg("No server destroyed on your demand.\n",
|
65
|
+
name
|
66
|
+
) if o_server_number == server_list.index('esc')
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.get_server_list(o_forge)
|
71
|
+
# Ask the user to get server(s) to destroy
|
72
|
+
server_list = []
|
73
|
+
index = 0
|
74
|
+
|
75
|
+
o_forge[:servers].each do |server|
|
76
|
+
server_list[index] = server[:name]
|
77
|
+
index += 1
|
78
|
+
end
|
79
|
+
|
80
|
+
server_list << 'all'
|
81
|
+
server_list << 'esc'
|
82
|
+
|
83
|
+
server_list
|
84
|
+
end
|
85
|
+
|
86
|
+
def self.get_server_index(server_list)
|
87
|
+
say('Select the index of the server you want to destroy')
|
88
|
+
value = choose do |q|
|
89
|
+
q.choices(*server_list)
|
90
|
+
end
|
91
|
+
|
92
|
+
o_server_number = server_list.index(value)
|
93
|
+
|
94
|
+
o_server_number
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
data/lib/forj-settings.rb
CHANGED
@@ -15,208 +15,391 @@
|
|
15
15
|
# limitations under the License.
|
16
16
|
|
17
17
|
module Forj
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
end
|
18
|
+
# This module helps you to setup your forge's account
|
19
|
+
module Settings
|
20
|
+
def self.common_options(options)
|
21
|
+
PrcLib.level = Logger::INFO if options[:verbose]
|
22
|
+
PrcLib.level = Logger::DEBUG if options[:debug]
|
23
|
+
unless options[:lorj_debug].nil?
|
24
|
+
PrcLib.core_level = options[:lorj_debug].to_i
|
25
|
+
PrcLib.level = Logger::DEBUG
|
27
26
|
end
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.account_show_all(account_name)
|
30
|
+
config = Lorj::Account.new
|
31
|
+
|
32
|
+
config[:account_name] = account_name
|
33
|
+
|
34
|
+
config.ac_load config[:account_name]
|
35
|
+
puts format(
|
36
|
+
"List of account settings for provider '%s': ",
|
37
|
+
config.get(:provider)
|
38
|
+
)
|
39
|
+
puts format(
|
40
|
+
"%-15s %-12s :\n------------------------------",
|
41
|
+
'key',
|
42
|
+
'section name'
|
43
|
+
)
|
44
|
+
|
45
|
+
config.meta_each do |section, found_key, hValue|
|
46
|
+
next if hValue.rh_get(:readonly)
|
47
|
+
s_desc = hValue.rh_get(:desc)
|
48
|
+
puts format('%-15s %-12s : %s', found_key, section, s_desc)
|
44
49
|
end
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
50
|
+
puts format(
|
51
|
+
"\nUse `forj set KeyName=Value -a %s` to set one.",
|
52
|
+
[account_name]
|
53
|
+
)
|
54
|
+
puts format(
|
55
|
+
'Use `forj get -a %s` to check current values.',
|
56
|
+
account_name
|
57
|
+
)
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.config_show_all
|
61
|
+
config = Lorj::Account.new
|
62
|
+
puts 'List of available FORJ default settings:'
|
63
|
+
puts format(
|
64
|
+
"%-15s %-12s :\n------------------------------",
|
65
|
+
'key',
|
66
|
+
'section name'
|
67
|
+
)
|
68
|
+
config.meta_each do |section, found_key, hValue|
|
69
|
+
next if hValue.rh_get(:readonly)
|
70
|
+
s_desc = hValue.rh_get(:desc)
|
71
|
+
puts format('%-15s %-12s : %s', found_key, section, s_desc)
|
56
72
|
end
|
73
|
+
puts "\nUse `forj set KeyName=Value` to set one. "
|
74
|
+
puts 'Use `forj get` to get current values. '
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.validate_account_set(account, account_name, account_key)
|
78
|
+
PrcLib.fatal(1,
|
79
|
+
"Unable to update protected '%s'. use `forj setup`," \
|
80
|
+
' to update it.',
|
81
|
+
account_key) if account.readonly?(account_key)
|
82
|
+
|
83
|
+
if account.meta_type?(account_key) == :default
|
84
|
+
PrcLib.fatal(1, "Unable set '%s' value. To update this one, use forj" \
|
85
|
+
' set %s, WITHOUT -a %s',
|
86
|
+
account_key, account_key, account_name)
|
87
|
+
end
|
88
|
+
end
|
57
89
|
|
58
|
-
|
59
|
-
|
90
|
+
def self.format_old_key(account, old_value, key_to_set)
|
91
|
+
s_bef = 'unset'
|
60
92
|
|
61
|
-
|
93
|
+
s_bef = format(
|
94
|
+
"'%s' (%s)",
|
95
|
+
old_value,
|
96
|
+
account.exist?(key_to_set)
|
97
|
+
) if account.exist?(key_to_set)
|
62
98
|
|
63
|
-
|
64
|
-
|
99
|
+
s_bef
|
100
|
+
end
|
65
101
|
|
66
|
-
|
67
|
-
|
68
|
-
mkey_val = key_val.match(/^(.*) *= *(.*)$/)
|
102
|
+
def self.format_new_key(_o_forj_account, key_to_set)
|
103
|
+
s_aft = 'unset'
|
69
104
|
|
70
|
-
|
105
|
+
s_aft = format(
|
106
|
+
"'%s' (%s)",
|
107
|
+
account.get(key_to_set),
|
108
|
+
account.exist?(key_to_set)
|
109
|
+
) if account.exist?(key_to_set)
|
71
110
|
|
72
|
-
|
73
|
-
|
111
|
+
s_aft
|
112
|
+
end
|
74
113
|
|
75
|
-
|
76
|
-
|
114
|
+
def self.account_set(account_name, *p)
|
115
|
+
config = Lorj::Account.new
|
77
116
|
|
78
|
-
|
79
|
-
if oForjAccount.meta_type?(key_to_set) == :default
|
80
|
-
PrcLib.fatal(1, "Unable set '%s' value. To update this one, use forj set %s, WITHOUT -a %s" % [key_to_set, key_to_set, account_name])
|
81
|
-
end
|
117
|
+
b_dirty = false
|
82
118
|
|
83
|
-
|
119
|
+
config[:account_name] = account_name
|
84
120
|
|
85
|
-
|
86
|
-
sBef = "'%s' (%s)" % [old_value, oForjAccount.exist?(key_to_set)] if oForjAccount.exist?(key_to_set)
|
121
|
+
config.ac_load config[:account_name]
|
87
122
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
end
|
92
|
-
bDirty = true
|
123
|
+
p.flatten!
|
124
|
+
p.each do |key_val|
|
125
|
+
mkey_val = valid_key_value?(key_val)
|
93
126
|
|
94
|
-
|
95
|
-
|
96
|
-
else
|
97
|
-
oForjAccount.set(key_to_set, key_value)
|
98
|
-
end
|
127
|
+
key_to_set = mkey_val[1]
|
128
|
+
key_value = mkey_val[2]
|
99
129
|
|
100
|
-
|
101
|
-
puts "%-25s: %s => %s" % [full_key, sBef, ANSI.bold+sAft+ANSI.clear]
|
102
|
-
}
|
103
|
-
oForjAccount.ac_save() if bDirty
|
104
|
-
end
|
130
|
+
validate_account_set(config, account_name, key_to_set)
|
105
131
|
|
106
|
-
|
107
|
-
|
132
|
+
full_key = format(
|
133
|
+
'%s/%s',
|
134
|
+
Lorj::Default.get_meta_auto(key_to_set),
|
135
|
+
key_to_set
|
136
|
+
)
|
108
137
|
|
109
|
-
|
110
|
-
|
111
|
-
mkey_val = key_val.match(/^(.*) *= *(.*)$/)
|
138
|
+
old_value = config.get(key_to_set)
|
139
|
+
s_bef = format_old_key(config, old_value, key_to_set)
|
112
140
|
|
113
|
-
|
141
|
+
if old_value == key_value
|
142
|
+
puts format('%-25s: No update', full_key)
|
143
|
+
next
|
144
|
+
end
|
145
|
+
b_dirty = true
|
114
146
|
|
115
|
-
|
116
|
-
|
147
|
+
if key_value == ''
|
148
|
+
config.del(key_to_set)
|
149
|
+
else
|
150
|
+
config.set(key_to_set, key_value)
|
151
|
+
end
|
117
152
|
|
118
|
-
|
119
|
-
sAft = "unset"
|
120
|
-
if Lorj::Default.get_meta_section(key_to_set).nil?
|
121
|
-
PrcLib.warning("key '%s' is not a recognized default key by forj process. " % key_to_set)
|
122
|
-
end
|
153
|
+
s_aft = format_new_key(config, key_to_set)
|
123
154
|
|
124
|
-
|
125
|
-
|
155
|
+
puts format(
|
156
|
+
'%-25s: %s => %s',
|
157
|
+
full_key,
|
158
|
+
s_bef,
|
159
|
+
ANSI.bold + s_aft + ANSI.clear
|
160
|
+
)
|
161
|
+
end
|
162
|
+
config.ac_save if b_dirty
|
163
|
+
end
|
126
164
|
|
127
|
-
|
128
|
-
|
129
|
-
next
|
130
|
-
end
|
165
|
+
def self.valid_key_value?(key_val)
|
166
|
+
mkey_val = key_val.match(/^(.*) *= *(.*)$/)
|
131
167
|
|
132
|
-
|
168
|
+
PrcLib.fatal(
|
169
|
+
1,
|
170
|
+
"Syntax error. Please set your value like: 'key=value' and retry."
|
171
|
+
) unless mkey_val
|
133
172
|
|
134
|
-
|
135
|
-
|
136
|
-
else
|
137
|
-
oConfig.localDel(key_to_set)
|
138
|
-
end
|
173
|
+
mkey_val
|
174
|
+
end
|
139
175
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
end
|
176
|
+
def self.valid_key?(key)
|
177
|
+
key = key.to_sym if key.is_a?(String)
|
178
|
+
|
179
|
+
return nil unless key.is_a?(Symbol)
|
145
180
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
PrcLib.fatal(1, "Unable to load account '%s'. Not found." % account_name) if not oForjAccount.ac_load
|
150
|
-
|
151
|
-
puts "legend: default = Application defaults, local = Local default config, %s = '%s' account config\n\n" % [account_name, account_name]
|
152
|
-
puts "%s %-15s(%-7s) %-12s:\n----------------------------------------" % ['U', 'key', 'origin', 'section name']
|
153
|
-
oForjAccount.metadata_each { | section, mykey, hValue |
|
154
|
-
key_exist = oForjAccount.exist?(mykey)
|
155
|
-
|
156
|
-
sUpdMsg = '+'
|
157
|
-
sUpdMsg = ' ' if Lorj::rhGet(hValue, :readonly)
|
158
|
-
|
159
|
-
if key_exist
|
160
|
-
highlight = ''
|
161
|
-
highlight = ANSI.bold if key_exist == account_name
|
162
|
-
highlight = ANSI.bold + ANSI.yellow if key_exist == 'local'
|
163
|
-
default_key = nil
|
164
|
-
default_key = " (from default key '%s')" % Lorj::rhGet(hValue, :default) if Lorj::rhExist?(hValue, :default) == 1 and key_exist != account_name
|
165
|
-
puts "%s %-15s(%s%-7s%s) %-12s: '%s'%s" % [sUpdMsg, mykey, highlight, key_exist, ANSI.clear, section, oForjAccount.get(mykey), default_key]
|
166
|
-
else
|
167
|
-
puts "%s %-15s( ) %-12s: unset" % [sUpdMsg, mykey, section]
|
168
|
-
end
|
169
|
-
}
|
170
|
-
puts "\nOn values identified by '+' you can:"
|
171
|
-
puts "Use `forj set <key>=<value> -a %s` to update account data." % account_name
|
172
|
-
puts "Or `forj set <key>= -a %s` to restore key default value." % account_name
|
181
|
+
if Lorj.defaults.get_meta_auto(key).nil?
|
182
|
+
PrcLib.warning("key '%s' is not a recognized default key by forj"\
|
183
|
+
' model. ', key)
|
173
184
|
end
|
174
185
|
|
175
|
-
|
176
|
-
|
177
|
-
puts "%s %-15s(%-7s) %-12s:\n----------------------------------------" % ['U', '''key', 'origin', 'section name']
|
178
|
-
|
179
|
-
oConfig.meta_each { |section, found_key, hValue|
|
180
|
-
sUpdMsg = '+'
|
181
|
-
sUpdMsg = ' ' if Lorj::rhGet(hValue, :readonly)
|
182
|
-
found_key = Lorj::rhGet(hValue, :default) if Lorj::rhExist?(hValue, :default) == 1
|
183
|
-
|
184
|
-
where = oConfig.exist?(found_key)
|
185
|
-
if where
|
186
|
-
highlight = ''
|
187
|
-
highlight = ANSI.bold + ANSI.yellow if where == 'local'
|
188
|
-
puts "%s %-15s(%s%-7s%s) %-12s: '%s'" % [sUpdMsg, found_key, highlight, where, ANSI.clear, section, oConfig.get(found_key) ]
|
189
|
-
else
|
190
|
-
puts "%s %-15s( ) %-12s: unset" % [sUpdMsg, found_key, section]
|
191
|
-
end
|
192
|
-
}
|
193
|
-
puts "\nUse 'forj set <key>=<value>' to update defaults on values identified with '+'"
|
186
|
+
key
|
187
|
+
end
|
194
188
|
|
195
|
-
|
189
|
+
def self.config_set(*p)
|
190
|
+
config = Lorj::Account.new
|
191
|
+
b_dirty = false
|
192
|
+
|
193
|
+
p.flatten!
|
194
|
+
|
195
|
+
p.each do |key_val|
|
196
|
+
mkey_val = valid_key_value?(key_val)
|
197
|
+
|
198
|
+
key_to_set = mkey_val[1]
|
199
|
+
key_value = mkey_val[2]
|
200
|
+
|
201
|
+
s_bef = 'unset'
|
202
|
+
s_aft = 'unset'
|
203
|
+
|
204
|
+
key_to_set = valid_key?(key_to_set)
|
196
205
|
|
197
|
-
|
206
|
+
old_value = config.get(key_to_set)
|
207
|
+
s_bef = format("%s: '%s'", config.where?(key_to_set)[0],
|
208
|
+
config.get(key_to_set)) if config.exist?(key_to_set)
|
198
209
|
|
199
|
-
|
200
|
-
oForjAccount = Lorj::Account.new(oConfig)
|
210
|
+
next if _no_update?(key_to_set, old_value, key_value, config)
|
201
211
|
|
202
|
-
|
212
|
+
b_dirty = true
|
213
|
+
|
214
|
+
if key_value != ''
|
215
|
+
config.local_set(key_to_set, key_value)
|
216
|
+
else
|
217
|
+
config.local_del(key_to_set)
|
218
|
+
end
|
219
|
+
|
220
|
+
s_aft = format("%s: '%s'", config.where?(key_to_set)[0],
|
221
|
+
config.get(key_to_set)) if config.exist?(key_to_set)
|
222
|
+
|
223
|
+
puts format('%-15s: %s => %s', key_to_set, s_bef, ANSI.bold(s_aft))
|
224
|
+
end
|
225
|
+
config.save_local_config if b_dirty
|
226
|
+
end
|
227
|
+
|
228
|
+
def self._no_update?(key_to_set, old_value, key_value, config)
|
229
|
+
if key_value == '' && config.where?(key_to_set)[0] != 'local'
|
230
|
+
puts format('%-15s: No update', key_to_set)
|
231
|
+
return true
|
232
|
+
end
|
233
|
+
|
234
|
+
if old_value == key_value
|
235
|
+
puts format('%-15s: No update', key_to_set)
|
236
|
+
return true
|
237
|
+
end
|
238
|
+
false
|
239
|
+
end
|
240
|
+
|
241
|
+
def self.format_highlight(account_name, config_where, where_format)
|
242
|
+
return format(where_format, config_where) if config_where == 'default'
|
243
|
+
|
244
|
+
return ANSI.bold(format(where_format,
|
245
|
+
account_name)) if config_where == 'account'
|
246
|
+
ANSI.bold(ANSI.yellow(format(where_format, config_where)))
|
247
|
+
end
|
248
|
+
|
249
|
+
def self.get_account_values(account, account_name)
|
250
|
+
Lorj.defaults.meta_each do |section, mykey, hValue|
|
251
|
+
config_where = account.where?(mykey,
|
252
|
+
:names => %w(account local default))
|
253
|
+
|
254
|
+
s_upd_msg = '+'
|
255
|
+
s_upd_msg = ' ' if hValue.rh_get(:readonly)
|
256
|
+
|
257
|
+
if config_where
|
258
|
+
where_highlight = format_highlight(account_name,
|
259
|
+
config_where[0], '%-7s')
|
260
|
+
default_key = nil
|
261
|
+
if hValue.rh_exist?(:default) && config_where[0] != 'account'
|
262
|
+
default_key = format(" (from default key '%s')",
|
263
|
+
hValue.rh_get(:default))
|
264
|
+
end
|
265
|
+
puts format("%s %-15s(%s) %-12s: '%s'%s",
|
266
|
+
s_upd_msg, mykey, where_highlight, section,
|
267
|
+
account.get(mykey), default_key)
|
268
|
+
else
|
269
|
+
puts format(
|
270
|
+
'%s %-15s( ) %-12s: unset',
|
271
|
+
s_upd_msg,
|
272
|
+
mykey,
|
273
|
+
section
|
274
|
+
)
|
275
|
+
end
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
279
|
+
def self.account_get_all(oConfig, account_name)
|
280
|
+
oConfig[:account_name] = account_name
|
281
|
+
|
282
|
+
PrcLib.fatal(1, "Unable to load account '%s'. Not found.",
|
283
|
+
account_name) unless oConfig.ac_load oConfig[:account_name]
|
284
|
+
|
285
|
+
puts format(
|
286
|
+
'legend: default = Application defaults, local = Local' \
|
287
|
+
" default config, %s = '%s' account config\n\n",
|
288
|
+
account_name,
|
289
|
+
account_name)
|
290
|
+
|
291
|
+
puts format(
|
292
|
+
'%s %-15s(%-7s) %-12s:' + "\n" + '--------------------------' \
|
293
|
+
'--------------', 'U',
|
294
|
+
'key', 'origin',
|
295
|
+
'section name'
|
296
|
+
)
|
297
|
+
|
298
|
+
get_account_values(oConfig, account_name)
|
299
|
+
|
300
|
+
puts "\nOn values identified by '+' you can:"
|
301
|
+
|
302
|
+
puts format(
|
303
|
+
'Use `forj set <key>=<value> -a %s` to update account data.',
|
304
|
+
account_name
|
305
|
+
)
|
306
|
+
puts format(
|
307
|
+
'Or `forj set <key>= -a %s` '\
|
308
|
+
'to restore key default value.',
|
309
|
+
account_name
|
310
|
+
)
|
311
|
+
end
|
312
|
+
|
313
|
+
def self.config_get_all(oConfig)
|
314
|
+
puts 'legend: default = Application defaults, local = Local default' \
|
315
|
+
" config\n\n"
|
316
|
+
puts format(
|
317
|
+
"%s %-19s(%-7s) %-12s:\n-----------------------------------" \
|
318
|
+
'-----', 'U',
|
319
|
+
'''key', 'origin',
|
320
|
+
'section name'
|
321
|
+
)
|
322
|
+
|
323
|
+
oConfig.meta_each do |section, found_key, hValue|
|
324
|
+
s_upd_msg = '+'
|
325
|
+
s_upd_msg = ' ' if hValue.rh_get(:readonly)
|
326
|
+
found_key = hValue.rh_get(:default) if hValue.rh_exist?(:default)
|
327
|
+
|
328
|
+
where = oConfig.where?(found_key)
|
329
|
+
if where
|
330
|
+
where = where[0]
|
331
|
+
highlight = ''
|
332
|
+
highlight = ANSI.bold + ANSI.yellow if where == 'local'
|
333
|
+
puts format(
|
334
|
+
"%s %-19s(%s%-7s%s) %-12s: '%s'",
|
335
|
+
s_upd_msg,
|
336
|
+
found_key,
|
337
|
+
highlight,
|
338
|
+
where,
|
339
|
+
ANSI.clear,
|
340
|
+
section,
|
341
|
+
oConfig.get(found_key)
|
342
|
+
)
|
343
|
+
else
|
344
|
+
puts format(
|
345
|
+
'%s %-19s( ) %-12s: unset',
|
346
|
+
s_upd_msg,
|
347
|
+
found_key,
|
348
|
+
section
|
349
|
+
)
|
350
|
+
end
|
351
|
+
end
|
352
|
+
puts "\nUse 'forj set <key>=<value>' to update defaults on values" \
|
353
|
+
" identified with '+'"
|
354
|
+
end
|
355
|
+
|
356
|
+
def self.account_get(oConfig, account_name, key)
|
357
|
+
oConfig[:account_name] = account_name
|
358
|
+
|
359
|
+
PrcLib.fatal(1, "Unable to load account '%s'. Not found.",
|
360
|
+
account_name) unless oConfig.ac_load oConfig[:account_name]
|
361
|
+
|
362
|
+
if oConfig.where?(key)
|
363
|
+
puts format(
|
364
|
+
"%s: '%s'",
|
365
|
+
oConfig.where?(key)[0],
|
366
|
+
oConfig.get(key)
|
367
|
+
)
|
368
|
+
elsif oConfig.where?(key.parameterize.underscore.to_sym)
|
369
|
+
key_symb = key.parameterize.underscore.to_sym
|
370
|
+
puts format(
|
371
|
+
"%s: '%s'",
|
372
|
+
oConfig.where?(key_symb)[0],
|
373
|
+
oConfig.get(key_symb)
|
374
|
+
)
|
375
|
+
else
|
376
|
+
PrcLib.message("key '%s' not found", key)
|
377
|
+
end
|
378
|
+
end
|
379
|
+
|
380
|
+
def self.config_get(oConfig, key)
|
381
|
+
where = oConfig.where?(key)
|
382
|
+
if where
|
383
|
+
puts format("%s:'%s'", where[0], oConfig[key])
|
384
|
+
else
|
385
|
+
PrcLib.message("key '%s' not found", key)
|
386
|
+
end
|
387
|
+
end
|
203
388
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
else
|
210
|
-
PrcLib.message("key '%s' not found"% [key])
|
211
|
-
end
|
389
|
+
def self.show_settings(options)
|
390
|
+
if !options[:account_name]
|
391
|
+
config_show_all
|
392
|
+
else
|
393
|
+
account_show_all(options[:account_name])
|
212
394
|
end
|
395
|
+
end
|
213
396
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
end
|
397
|
+
def self.set_settings(options, p)
|
398
|
+
if options[:account_name]
|
399
|
+
account_set(options[:account_name], p)
|
400
|
+
else
|
401
|
+
config_set(p)
|
220
402
|
end
|
221
|
-
|
403
|
+
end
|
404
|
+
end
|
222
405
|
end
|