Class: CuffSert::ProgressbarRenderer

Inherits:
BaseRenderer show all
Defined in:
lib/cuffsert/rendering.rb

Instance Method Summary collapse

Methods inherited from BaseRenderer

#initialize

Constructor Details

This class inherits a constructor from CuffSert::BaseRenderer

Instance Method Details

#abort(event) ⇒ Object



187
188
189
# File 'lib/cuffsert/rendering.rb', line 187

def abort(event)
  @error.write("\n" + event.message.colorize(:red) + "\n") unless @verbosity < 1
end

#action(rc) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/cuffsert/rendering.rb', line 80

def action(rc)
  if rc[:action] == 'Modify'
    if ['True', 'Always'].include?(rc[:replacement])
      'Replace!'
    elsif ['False', 'Never'].include?(rc[:replacement])
      'Modify'
    elsif rc[:replacement] == 'Conditional'
      'Replace?'
    else
      "#{rc[:action]}/#{rc[:replacement]}"
    end
  else
    rc[:action]
  end
end

#action_color(action) ⇒ Object



96
97
98
99
100
101
102
103
104
# File 'lib/cuffsert/rendering.rb', line 96

def action_color(action)
  action.colorize(
    case action
    when 'Add' then :green
    when 'Modify' then :yellow
    else :red
    end
  )
end

#change_set(change_set) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/cuffsert/rendering.rb', line 56

def change_set(change_set)
  @output.write(sprintf("Updating stack %s\n", change_set[:stack_name]))
  change_set[:changes].sort do |l, r|
    lr = l[:resource_change]
    rr = r[:resource_change]
    [
      ACTION_ORDER.index(action(lr)),
      lr[:logical_resource_id]
    ] <=> [
      ACTION_ORDER.index(action(rr)),
      rr[:logical_resource_id]
    ]
  end.map do |change|
    rc = change[:resource_change]
    sprintf("%s[%s] %-10s %s\n%s",
      rc[:logical_resource_id],
      rc[:resource_type],
      action_color(action(rc)),
      scope_desc(rc),
      change_details(rc)
    )
  end.each { |row| @output.write(row) }
end

#clearObject



152
153
154
# File 'lib/cuffsert/rendering.rb', line 152

def clear
  @output.write("\r") unless @verbosity < 1
end

#done(event) ⇒ Object



191
192
193
# File 'lib/cuffsert/rendering.rb', line 191

def done(event)
  @output.write(event.message.colorize(:green) + "\n") unless @verbosity < 1
end

#event(event, resource) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/cuffsert/rendering.rb', line 123

def event(event, resource)
  return if @verbosity == 0
  return if resource[:states][-1] != :bad && @verbosity <= 1
  color, _ = interpret_states(resource)
  message = sprintf('%s %s  %s[%s] %s',
    event[:resource_status],
    event[:timestamp].strftime('%H:%M:%S%z'),
    event[:logical_resource_id],
    event[:resource_type].sub(/.*::/, ''),
    event[:resource_status_reason] || ""
  ).colorize(color)
  @output.write("\r#{message}\n")
end

#report(event) ⇒ Object



183
184
185
# File 'lib/cuffsert/rendering.rb', line 183

def report(event)
  @output.write(event.message.colorize(:white) + "\n") unless @verbosity < 2
end

#resource(resource) ⇒ Object



156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/cuffsert/rendering.rb', line 156

def resource(resource)
  return if @verbosity < 1
  color, symbol = interpret_states(resource)
  table = {
    :check => "+",
    :tripple_dot => ".", # "\u2026"
    :cross  => "!",
    :qmark => "?",
  }

  @output.write(table[symbol].colorize(
    :color => :white,
    :background => color
  ))
end

#scope_desc(rc) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/cuffsert/rendering.rb', line 106

def scope_desc(rc)
  (rc[:scope] || []).map do |scope|
    case scope
    when 'Properties'
      properties = rc[:details]
        .select { |detail| detail[:target][:attribute] == 'Properties' }
        .map { |detail| detail[:target][:name] }
        .uniq
        .join(", ")
      sprintf("Properties: %s", properties)
    else
      rc[:scope]
    end
  end
  .join("; ")
end

#stack(event, stack) ⇒ Object



137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/cuffsert/rendering.rb', line 137

def stack(event, stack)
  case event
  when :create
    @output.write("Creating stack #{stack}\n")
  when :recreate
    message = sprintf(
      "Deleting and re-creating stack %s",
      stack[:stack_name]
    )
    @output.write(message.colorize(:red) + "\n")
  else
    puts event, stack
  end
end

#templates(current, pending) ⇒ Object



172
173
174
175
176
177
178
179
180
181
# File 'lib/cuffsert/rendering.rb', line 172

def templates(current, pending)
  @current_template = current
  @pending_template = pending
  @template_changes = Hashdiff.best_diff(current, pending, array_path: true)
  @template_changes.each {|c| p c} if ENV['CUFFSERT_EXPERIMENTAL']
  present_changes(extract_changes(@template_changes, 'Conditions'), 'Conditions') unless @verbosity < 1
  present_changes(extract_changes(@template_changes, 'Parameters'), 'Parameters') unless @verbosity < 1
  present_changes(extract_changes(@template_changes, 'Mappings'), 'Mappings') unless @verbosity < 1
  present_changes(extract_changes(@template_changes, 'Outputs'), 'Outputs') unless @verbosity < 1
end