Fix rendering of the 'outputs:' header in the diff view. (#2020)

This commit is contained in:
CyrusNajmabadi 2018-10-03 13:06:20 -07:00 committed by GitHub
parent 43674dcef5
commit 16ae1f2a81
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 22 deletions

View file

@ -114,20 +114,28 @@ func RenderDiffEvent(action apitype.UpdateKind, event engine.Event,
switch event.Type {
case engine.CancelEvent:
return ""
// Currently, prelude, summar, and stdout events are printed the same for both the diff and
// progress displays.
case engine.PreludeEvent:
return renderPreludeEvent(event.Payload.(engine.PreludeEventPayload), opts)
case engine.SummaryEvent:
return renderSummaryEvent(action, event.Payload.(engine.SummaryEventPayload), opts)
case engine.ResourceOperationFailed:
return renderResourceOperationFailedEvent(event.Payload.(engine.ResourceOperationFailedPayload), opts)
case engine.ResourceOutputsEvent:
return renderResourceOutputsEvent(event.Payload.(engine.ResourceOutputsEventPayload), seen, opts)
case engine.ResourcePreEvent:
return renderResourcePreEvent(event.Payload.(engine.ResourcePreEventPayload), seen, opts)
case engine.StdoutColorEvent:
return renderStdoutColorEvent(event.Payload.(engine.StdoutEventPayload), opts)
// Resource operations have very specific displays for either diff or progress displays.
// These functions should not be directly used by the progress display without validating
// that the display is appropriate for both.
case engine.ResourceOperationFailed:
return renderDiffResourceOperationFailedEvent(event.Payload.(engine.ResourceOperationFailedPayload), opts)
case engine.ResourceOutputsEvent:
return renderDiffResourceOutputsEvent(event.Payload.(engine.ResourceOutputsEventPayload), seen, opts)
case engine.ResourcePreEvent:
return renderDiffResourcePreEvent(event.Payload.(engine.ResourcePreEventPayload), seen, opts)
case engine.DiagEvent:
return renderDiffDiagEvent(event.Payload.(engine.DiagEventPayload), opts)
default:
contract.Failf("unknown event type '%s'", event.Type)
return ""
@ -216,7 +224,7 @@ func renderPreludeEvent(event engine.PreludeEventPayload, opts Options) string {
return out.String()
}
func renderResourceOperationFailedEvent(
func renderDiffResourceOperationFailedEvent(
payload engine.ResourceOperationFailedPayload, opts Options) string {
// It's not actually useful or interesting to print out any details about
@ -229,7 +237,7 @@ func renderResourceOperationFailedEvent(
return ""
}
func renderResourcePreEvent(
func renderDiffResourcePreEvent(
payload engine.ResourcePreEventPayload,
seen map[resource.URN]engine.StepEventMetadata,
opts Options) string {
@ -253,7 +261,7 @@ func renderResourcePreEvent(
return out.String()
}
func renderResourceOutputsEvent(
func renderDiffResourceOutputsEvent(
payload engine.ResourceOutputsEventPayload,
seen map[resource.URN]engine.StepEventMetadata,
opts Options) string {
@ -271,7 +279,11 @@ func renderResourceOutputsEvent(
text := engine.GetResourceOutputsPropertiesString(
payload.Metadata, indent+1, payload.Planning, payload.Debug, refresh)
fprintIgnoreError(out, opts.Color.Colorize(text))
if text != "" {
fprintfIgnoreError(out, "%v%v--outputs:--%v\n",
payload.Metadata.Op.Color(), engine.GetIndentationString(indent+1), colors.Reset)
fprintIgnoreError(out, opts.Color.Colorize(text))
}
}
return out.String()
}

View file

@ -732,6 +732,7 @@ func (display *ProgressDisplay) processEndSteps() {
}
wroteOutputs = true
display.writeSimpleMessage(colors.SpecHeadline + "Outputs:" + colors.Reset)
display.writeSimpleMessage(props)
}
}

View file

@ -62,23 +62,27 @@ func printStepHeader(b *bytes.Buffer, step StepEventMetadata) {
writeString(b, fmt.Sprintf("%s: (%s)%s\n", string(step.Type), step.Op, extra))
}
func getIndentationString(indent int, op deploy.StepOp, prefix bool) string {
func GetIndentationString(indent int) string {
var result string
for i := 0; i < indent; i++ {
result += " "
}
return result
}
func getIndentationString(indent int, op deploy.StepOp, prefix bool) string {
var result = GetIndentationString(indent)
if !prefix {
return result
}
if result == "" {
contract.Assertf(!prefix, "Expected indention for a prefixed line")
return result
}
var rp string
if prefix {
rp = op.RawPrefix()
} else {
rp = " "
}
rp := op.RawPrefix()
contract.Assert(len(rp) == 2)
contract.Assert(len(result) >= 2)
return result[:len(result)-2] + rp
@ -281,7 +285,6 @@ func GetResourceOutputsPropertiesString(
maxkey := maxKey(keys)
// Now sort the keys and enumerate each output property in a deterministic order.
firstout := true
for _, k := range keys {
out := outs[k]
@ -293,10 +296,6 @@ func GetResourceOutputsPropertiesString(
}
if print {
if firstout {
writeString(b, colors.SpecHeadline+"Outputs:"+colors.Reset+"\n")
firstout = false
}
if outputDiff != nil {
printObjectPropertyDiff(b, k, maxkey, *outputDiff, planning, indent, false, debug)
} else {