7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/aptible/cli/subcommands/config.rb', line 7
def self.included(thor)
thor.class_eval do
include Helpers::Operation
include Helpers::App
desc 'config', "Print an app's current configuration"
app_options
def config
app = ensure_app(options)
config = app.current_configuration
env = config ? config.env : {}
Formatter.render(Renderer.current) do |root|
root.keyed_list('shell_export') do |list|
env.each_pair do |k, v|
list.object do |node|
node.value('key', k)
node.value('value', v)
node.value('shell_export', "#{k}=#{Shellwords.escape(v)}")
end
end
end
end
end
desc 'config:get [VAR1]',
"Print a specific key within an app's current configuration"
app_options
define_method 'config:get' do |*args|
app = ensure_app(options)
config = app.current_configuration
env = config ? config.env : {}
Formatter.render(Renderer.current) do |root|
key = args[0]
value = env
.select { |k| k == key }
.map { |_, v| v }
root.value(value)
end
end
desc 'config:add [VAR1=VAL1] [VAR2=VAL2] [...]',
'Add an ENV variable to an app'
app_options
define_method 'config:add' do |*args|
app = ensure_app(options)
env = (args)
operation = app.create_operation!(type: 'configure', env: env)
CLI.logger.info 'Updating configuration and restarting app...'
attach_to_operation_logs(operation)
end
desc 'config:set [VAR1=VAL1] [VAR2=VAL2] [...]',
'Add an ENV variable to an app'
app_options
define_method 'config:set' do |*args|
send('config:add', *args)
end
desc 'config:rm [VAR1] [VAR2] [...]',
'Remove an ENV variable from an app'
app_options
define_method 'config:rm' do |*args|
app = ensure_app(options)
env = Hash[args.map do |arg|
validate_env_key!(arg)
[arg, '']
end]
operation = app.create_operation!(type: 'configure', env: env)
CLI.logger.info 'Updating configuration and restarting app...'
attach_to_operation_logs(operation)
end
desc 'config:unset [VAR1] [VAR2] [...]',
'Remove an ENV variable from an app'
app_options
define_method 'config:unset' do |*args|
send('config:rm', *args)
end
end
end
|