Fix rendering of the 'outputs:' header in the diff view. (#2020)
This commit is contained in:
parent
43674dcef5
commit
16ae1f2a81
|
@ -114,20 +114,28 @@ func RenderDiffEvent(action apitype.UpdateKind, event engine.Event,
|
||||||
switch event.Type {
|
switch event.Type {
|
||||||
case engine.CancelEvent:
|
case engine.CancelEvent:
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
// Currently, prelude, summar, and stdout events are printed the same for both the diff and
|
||||||
|
// progress displays.
|
||||||
case engine.PreludeEvent:
|
case engine.PreludeEvent:
|
||||||
return renderPreludeEvent(event.Payload.(engine.PreludeEventPayload), opts)
|
return renderPreludeEvent(event.Payload.(engine.PreludeEventPayload), opts)
|
||||||
case engine.SummaryEvent:
|
case engine.SummaryEvent:
|
||||||
return renderSummaryEvent(action, event.Payload.(engine.SummaryEventPayload), opts)
|
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:
|
case engine.StdoutColorEvent:
|
||||||
return renderStdoutColorEvent(event.Payload.(engine.StdoutEventPayload), opts)
|
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:
|
case engine.DiagEvent:
|
||||||
return renderDiffDiagEvent(event.Payload.(engine.DiagEventPayload), opts)
|
return renderDiffDiagEvent(event.Payload.(engine.DiagEventPayload), opts)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
contract.Failf("unknown event type '%s'", event.Type)
|
contract.Failf("unknown event type '%s'", event.Type)
|
||||||
return ""
|
return ""
|
||||||
|
@ -216,7 +224,7 @@ func renderPreludeEvent(event engine.PreludeEventPayload, opts Options) string {
|
||||||
return out.String()
|
return out.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func renderResourceOperationFailedEvent(
|
func renderDiffResourceOperationFailedEvent(
|
||||||
payload engine.ResourceOperationFailedPayload, opts Options) string {
|
payload engine.ResourceOperationFailedPayload, opts Options) string {
|
||||||
|
|
||||||
// It's not actually useful or interesting to print out any details about
|
// It's not actually useful or interesting to print out any details about
|
||||||
|
@ -229,7 +237,7 @@ func renderResourceOperationFailedEvent(
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func renderResourcePreEvent(
|
func renderDiffResourcePreEvent(
|
||||||
payload engine.ResourcePreEventPayload,
|
payload engine.ResourcePreEventPayload,
|
||||||
seen map[resource.URN]engine.StepEventMetadata,
|
seen map[resource.URN]engine.StepEventMetadata,
|
||||||
opts Options) string {
|
opts Options) string {
|
||||||
|
@ -253,7 +261,7 @@ func renderResourcePreEvent(
|
||||||
return out.String()
|
return out.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func renderResourceOutputsEvent(
|
func renderDiffResourceOutputsEvent(
|
||||||
payload engine.ResourceOutputsEventPayload,
|
payload engine.ResourceOutputsEventPayload,
|
||||||
seen map[resource.URN]engine.StepEventMetadata,
|
seen map[resource.URN]engine.StepEventMetadata,
|
||||||
opts Options) string {
|
opts Options) string {
|
||||||
|
@ -271,7 +279,11 @@ func renderResourceOutputsEvent(
|
||||||
|
|
||||||
text := engine.GetResourceOutputsPropertiesString(
|
text := engine.GetResourceOutputsPropertiesString(
|
||||||
payload.Metadata, indent+1, payload.Planning, payload.Debug, refresh)
|
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()
|
return out.String()
|
||||||
}
|
}
|
||||||
|
|
|
@ -732,6 +732,7 @@ func (display *ProgressDisplay) processEndSteps() {
|
||||||
}
|
}
|
||||||
|
|
||||||
wroteOutputs = true
|
wroteOutputs = true
|
||||||
|
display.writeSimpleMessage(colors.SpecHeadline + "Outputs:" + colors.Reset)
|
||||||
display.writeSimpleMessage(props)
|
display.writeSimpleMessage(props)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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))
|
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
|
var result string
|
||||||
for i := 0; i < indent; i++ {
|
for i := 0; i < indent; i++ {
|
||||||
result += " "
|
result += " "
|
||||||
}
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
func getIndentationString(indent int, op deploy.StepOp, prefix bool) string {
|
||||||
|
var result = GetIndentationString(indent)
|
||||||
|
|
||||||
|
if !prefix {
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
if result == "" {
|
if result == "" {
|
||||||
contract.Assertf(!prefix, "Expected indention for a prefixed line")
|
contract.Assertf(!prefix, "Expected indention for a prefixed line")
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
var rp string
|
rp := op.RawPrefix()
|
||||||
if prefix {
|
|
||||||
rp = op.RawPrefix()
|
|
||||||
} else {
|
|
||||||
rp = " "
|
|
||||||
}
|
|
||||||
contract.Assert(len(rp) == 2)
|
contract.Assert(len(rp) == 2)
|
||||||
contract.Assert(len(result) >= 2)
|
contract.Assert(len(result) >= 2)
|
||||||
return result[:len(result)-2] + rp
|
return result[:len(result)-2] + rp
|
||||||
|
@ -281,7 +285,6 @@ func GetResourceOutputsPropertiesString(
|
||||||
maxkey := maxKey(keys)
|
maxkey := maxKey(keys)
|
||||||
|
|
||||||
// Now sort the keys and enumerate each output property in a deterministic order.
|
// Now sort the keys and enumerate each output property in a deterministic order.
|
||||||
firstout := true
|
|
||||||
for _, k := range keys {
|
for _, k := range keys {
|
||||||
out := outs[k]
|
out := outs[k]
|
||||||
|
|
||||||
|
@ -293,10 +296,6 @@ func GetResourceOutputsPropertiesString(
|
||||||
}
|
}
|
||||||
|
|
||||||
if print {
|
if print {
|
||||||
if firstout {
|
|
||||||
writeString(b, colors.SpecHeadline+"Outputs:"+colors.Reset+"\n")
|
|
||||||
firstout = false
|
|
||||||
}
|
|
||||||
if outputDiff != nil {
|
if outputDiff != nil {
|
||||||
printObjectPropertyDiff(b, k, maxkey, *outputDiff, planning, indent, false, debug)
|
printObjectPropertyDiff(b, k, maxkey, *outputDiff, planning, indent, false, debug)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue