From 251231e3eea4ab7775722ce7ad3c5a344bb5d283 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 21 Nov 2016 15:05:49 -0800 Subject: [PATCH] command: more manageable shadow error output --- command/meta.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/command/meta.go b/command/meta.go index 4655f6d1b..2d68eff98 100644 --- a/command/meta.go +++ b/command/meta.go @@ -5,10 +5,12 @@ import ( "flag" "fmt" "io" + "io/ioutil" "log" "os" "path/filepath" "strconv" + "time" "github.com/hashicorp/errwrap" "github.com/hashicorp/go-getter" @@ -496,6 +498,14 @@ func (m *Meta) outputShadowError(err error, output bool) bool { return false } + // Write the shadow error output to a file + path := fmt.Sprintf("terraform-error-%d.log", time.Now().UTC().Unix()) + if err := ioutil.WriteFile(path, []byte(err.Error()), 0644); err != nil { + // If there is an error writing it, just let it go + log.Printf("[ERROR] Error writing shadow error: %s", err) + return false + } + // Output! m.Ui.Output(m.Colorize().Color(fmt.Sprintf( "[reset][bold][yellow]\nExperimental feature failure! Please report a bug.\n\n"+ @@ -505,14 +515,13 @@ func (m *Meta) outputShadowError(err error, output bool) bool { "background. These features cannot affect real state and never touch\n"+ "real infrastructure. If the features work properly, you see nothing.\n"+ "If the features fail, this message appears.\n\n"+ - "The following failures happened while running experimental features.\n"+ - "Please report a Terraform bug so that future Terraform versions that\n"+ - "enable these features can be improved!\n\n"+ "You can report an issue at: https://github.com/hashicorp/terraform/issues\n\n"+ - "%s\n\n"+ + "The failure was written to %q. Please\n"+ + "double check this file contains no sensitive information and report\n"+ + "it with your issue.\n\n"+ "This is not an error. Your terraform operation completed successfully\n"+ "and your real infrastructure is unaffected by this message.", - err, + path, ))) return true