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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
# File 'lib/redipress/cli/configurations.rb', line 9
def execute
prepare
prompt.ok("Hello, let's configure a server!")
host = prompt_for_host
new_line
configurations = prompt_for_configurations
options = Hash.new
configurations.each do |configuration|
new_line
options[configuration.slug] = prompt_for_configuration_options(configuration)
end
new_line
exit(1) unless prompt.yes?("Proceed with the above settings?")
configurations.each do |configuration|
new_line
begin
compatible = configuration.compatible?(host, options)
rescue => e
new_line
prompt.error("An exception was raised whilst running a configuration:")
prompt.error("-------------------------------------------------------")
raise e
end
unless compatible
prompt.warning("'#{configuration.name}' is not compatible with #{host.username}@#{host.hostname}")
exit 1
end
end
prompt.ok("The selected configurations appear to be compatible with #{host.username}@#{host.hostname}")
results = Hash.new
configurations.each do |configuration|
new_line
prompt.ok("Configuring '#{configuration.name}' ...")
prompt.ok("------------------------------------------------------------")
begin
results[configuration.slug] = configuration.configure(host, options[configuration.slug])
rescue RediPress::ConfigurationFailed => e
new_line
prompt.error("Configuration '#{configuration.name}' failed:")
prompt.error("------------------------------------------------------------")
prompt.error(e.error)
exit 1
rescue => e
new_line
prompt.error("Configuration '#{configuration.name}' raised an error:")
prompt.error("------------------------------------------------------------")
raise e
end
end
new_line
prompt.ok("Woo hoo! Your server has been configured.")
configurations.each do |configuration|
result = results[configuration.slug]
next if result.nil? || result.empty? || false == result.is_a?(Hash)
new_line
prompt.ok(configuration.name)
prompt.ok("------------------------------------------------------------")
puts TTY::Table.new(rows: result.map { |k, v| [" #{k} ", " #{v} "] }).render(:ascii)
end
nil
end
|