Class: EY::CLI::UI

Inherits:
Object
  • Object
show all
Defined in:
lib/engineyard/cli/ui.rb

Defined Under Namespace

Classes: Prompter, Tee

Instance Method Summary collapse

Instance Method Details

#agree(message, default) ⇒ Object



121
122
123
# File 'lib/engineyard/cli/ui.rb', line 121

def agree(message, default)
  Prompter.agree(message, default)
end

#ask(message, password = false, default = nil) ⇒ Object



125
126
127
128
129
# File 'lib/engineyard/cli/ui.rb', line 125

def ask(message, password = false, default = nil)
  Prompter.ask(message, password, default)
rescue EOFError
  return ''
end

#debug(name, message = nil) ⇒ Object



101
102
103
104
105
106
107
# File 'lib/engineyard/cli/ui.rb', line 101

def debug(name, message = nil)
  if ENV["DEBUG"]
    name    = name.inspect    unless name.nil? or name.is_a?(String)
    message = message.inspect unless message.nil? or message.is_a?(String)
    say_with_status(name, message, :blue)
  end
end

#deployment_result(dep) ⇒ Object



232
233
234
235
236
237
238
239
240
# File 'lib/engineyard/cli/ui.rb', line 232

def deployment_result(dep)
  if dep.successful?
    say 'Deployment was successful.', :green
  elsif dep.finished_at.nil?
    say 'Deployment is not finished.', :yellow
  else
    say 'Deployment failed.', :red
  end
end

#deployment_status(deployment) ⇒ Object



202
203
204
205
206
207
208
209
210
# File 'lib/engineyard/cli/ui.rb', line 202

def deployment_status(deployment)
  unless quiet?
    say "# Status of last deployment of #{deployment.app_environment.hierarchy_name}:"
    say "#"
    show_deployment(deployment)
    say "#"
  end
  deployment_result(deployment)
end

#errObject



265
266
267
# File 'lib/engineyard/cli/ui.rb', line 265

def err
  $stderr
end

#error(name, message = nil) ⇒ Object



85
86
87
88
89
90
# File 'lib/engineyard/cli/ui.rb', line 85

def error(name, message = nil)
  $stdout = $stderr
  say_with_status(name, message, :red)
ensure
  $stdout = STDOUT
end

#info(message, color = nil) ⇒ Object



96
97
98
99
# File 'lib/engineyard/cli/ui.rb', line 96

def info(message, color = nil)
  return if quiet?
  say_with_status(message, nil, color)
end

#interactive?Boolean

Returns:

  • (Boolean)


117
118
119
# File 'lib/engineyard/cli/ui.rb', line 117

def interactive?
  Prompter.interactive?
end

#mute_if(bool, &block) ⇒ Object



131
132
133
# File 'lib/engineyard/cli/ui.rb', line 131

def mute_if(bool, &block)
  bool ? mute(&block) : yield
end

#outObject



269
270
271
# File 'lib/engineyard/cli/ui.rb', line 269

def out
  $stdout
end


177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# File 'lib/engineyard/cli/ui.rb', line 177

def print_envs(apps, default_env_name = nil)
  apps.sort_by {|app| "#{app..name}/#{app.name}" }.each do |app|
    puts "#{app..name}/#{app.name}"
    if app.environments.any?
      app.environments.sort_by {|env| env.name }.each do |env|
        icount = env.instances_count
        iname = case icount
                when 0 then "(stopped)"
                when 1 then "1 instance"
                else "#{icount} instances"
                end

        name = env.name == default_env_name ? "#{env.name} (default)" : env.name
        framework_env = env.framework_env && "[#{env.framework_env.center(12)}]"

        puts "    #{name.ljust(30)} #{framework_env}  #{iname}"
      end
    else
      puts "    (No environments)"
    end

    puts ""
  end
end


242
243
244
245
246
247
248
249
250
251
252
253
254
255
# File 'lib/engineyard/cli/ui.rb', line 242

def print_exception(e)
  if e.message.empty? || (e.message == e.class.to_s)
    message = nil
  else
    message = e.message
  end

  if ENV["DEBUG"]
    error(e.class, message)
    e.backtrace.each{|l| say(" "*3 + l) }
  else
    error(message || e.class.to_s)
  end
end


257
258
259
# File 'lib/engineyard/cli/ui.rb', line 257

def print_help(table)
  print_table(table, ident: 2, truncate: true, colwidth: 20)
end


145
146
147
148
149
# File 'lib/engineyard/cli/ui.rb', line 145

def print_hostnames(servers, username=nil)
  server_tuples(servers, username).each do |server_tuple|
    puts server_tuple.first
  end
end


157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# File 'lib/engineyard/cli/ui.rb', line 157

def print_servers(servers, name, username=nil)
  tuples = server_tuples(servers, username)
  count = tuples.size
  puts "# #{count} server#{count == 1 ? '' : 's'} on #{name}"

  host_width = tuples.map {|s| s[0].length }.max
  host_format = "%-#{host_width}s" # "%-10s" left align

  role_width = tuples.map {|s| s[2].length }.max
  role_format = "%-#{role_width}s" # "%-10s" left align

  tuples.each do |server_tuple|
    puts "#{host_format}\t%s\t#{role_format}\t%s" % server_tuple
  end
end


173
174
175
# File 'lib/engineyard/cli/ui.rb', line 173

def print_simple_envs(envs)
  puts envs.map{|env| env.name }.uniq.sort
end


151
152
153
154
155
# File 'lib/engineyard/cli/ui.rb', line 151

def print_simple_servers(servers, username=nil)
  server_tuples(servers, username).each do |server_tuple|
    puts server_tuple.join("\t")
  end
end

#say_with_status(name, message = nil, color = nil) ⇒ Object



109
110
111
112
113
114
115
# File 'lib/engineyard/cli/ui.rb', line 109

def say_with_status(name, message=nil, color=nil)
  if message
    say_status name, message, color
  elsif name
    say name, color
  end
end

#set_color(string, color, bold = false) ⇒ Object



261
262
263
# File 'lib/engineyard/cli/ui.rb', line 261

def set_color(string, color, bold=false)
  ($stdout.tty? || ENV['THOR_SHELL']) ? super : string
end

#show_deployment(dep) ⇒ Object



212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
# File 'lib/engineyard/cli/ui.rb', line 212

def show_deployment(dep)
  return if quiet?
  output = []
  output << ["Account",         dep.app..name]
  output << ["Application",     dep.app.name]
  output << ["Environment",     dep.environment.name]
  output << ["Input Ref",       dep.ref]
  output << ["Resolved Ref",    dep.resolved_ref]
  output << ["Commit",          dep.commit || '(not resolved)']
  output << ["Migrate",         dep.migrate]
  output << ["Migrate command", dep.migrate_command] if dep.migrate
  output << ["Deployed by",     dep.deployed_by]
  output << ["Started at",      dep.created_at] if dep.created_at
  output << ["Finished at",     dep.finished_at] if dep.finished_at

  output.each do |att, val|
    puts "#\t%-16s %s" % ["#{att}:", val.to_s]
  end
end

#warn(name, message = nil) ⇒ Object



92
93
94
# File 'lib/engineyard/cli/ui.rb', line 92

def warn(name, message = nil)
  say_with_status(name, message, :yellow)
end