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



190
191
192
193
194
195
196
197
198
# File 'lib/engineyard/cli/ui.rb', line 190

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



160
161
162
163
164
165
166
167
168
# File 'lib/engineyard/cli/ui.rb', line 160

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



223
224
225
# File 'lib/engineyard/cli/ui.rb', line 223

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

#outObject



227
228
229
# File 'lib/engineyard/cli/ui.rb', line 227

def out
  $stdout
end


135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/engineyard/cli/ui.rb', line 135

def print_envs(apps, default_env_name = nil)
  apps.sort_by {|app| "#{app.account.name}/#{app.name}" }.each do |app|
    puts "#{app.account.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


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

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


215
216
217
# File 'lib/engineyard/cli/ui.rb', line 215

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


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

def print_simple_envs(envs)
  puts envs.map{|env| env.name }.uniq.sort
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



219
220
221
# File 'lib/engineyard/cli/ui.rb', line 219

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

#show_deployment(dep) ⇒ Object



170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# File 'lib/engineyard/cli/ui.rb', line 170

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