From 262c8dc24af65d27e8713508af2939192b5c0d40 Mon Sep 17 00:00:00 2001 From: Matthew Hooker Date: Wed, 15 Mar 2017 16:52:58 -0700 Subject: [PATCH 1/2] WIP fix #4670 --- common/multistep_runner.go | 8 ++++++++ .../mitchellh/multistep/debug_runner.go | 15 ++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/common/multistep_runner.go b/common/multistep_runner.go index a9b155086..512a3ecd4 100644 --- a/common/multistep_runner.go +++ b/common/multistep_runner.go @@ -61,6 +61,10 @@ type abortStep struct { ui packer.Ui } +func (s abortStep) InnerStepName() string { + return typeName(s.step) +} + func (s abortStep) Run(state multistep.StateBag) multistep.StepAction { return s.step.Run(state) } @@ -82,6 +86,10 @@ type askStep struct { ui packer.Ui } +func (s askStep) InnerStepName() string { + return typeName(s.step) +} + func (s askStep) Run(state multistep.StateBag) (action multistep.StepAction) { for { action = s.step.Run(state) diff --git a/vendor/github.com/mitchellh/multistep/debug_runner.go b/vendor/github.com/mitchellh/multistep/debug_runner.go index 42f68f242..882009494 100644 --- a/vendor/github.com/mitchellh/multistep/debug_runner.go +++ b/vendor/github.com/mitchellh/multistep/debug_runner.go @@ -17,6 +17,13 @@ const ( DebugLocationBeforeCleanup ) +// StepWrapper is an interface that wrapped steps can implement to expose their +// inner step names to the debug runner. +type StepWrapper interface { + // InnerStepName should return the human readable name of the wrapped step. + InnerStepName() string +} + // DebugPauseFn is the type signature for the function that is called // whenever the DebugRunner pauses. It allows the caller time to // inspect the state of the multi-step sequence at a given step. @@ -56,8 +63,14 @@ func (r *DebugRunner) Run(state StateBag) { steps := make([]Step, len(r.Steps)*2) for i, step := range r.Steps { steps[i*2] = step + name := "" + if wrapped, ok := step.(StepWrapper); ok { + name = wrapped.InnerStepName() + } else { + name = reflect.Indirect(reflect.ValueOf(step)).Type().Name() + } steps[(i*2)+1] = &debugStepPause{ - reflect.Indirect(reflect.ValueOf(step)).Type().Name(), + name, pauseFn, } } From 48441a3913001de51b75dcb3c476b95a92f16485 Mon Sep 17 00:00:00 2001 From: Matthew Hooker Date: Thu, 16 Mar 2017 14:20:33 -0700 Subject: [PATCH 2/2] update github.com/mitchellh/multistep --- vendor/vendor.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/vendor/vendor.json b/vendor/vendor.json index fd9ddfa96..ffe54fc9f 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -633,9 +633,10 @@ "revision": "281073eb9eb092240d33ef253c404f1cca550309" }, { - "checksumSHA1": "9Vh2o3Vs6HzI8P04ks4kvIpegco=", + "checksumSHA1": "5x1RX5m8SCkCRLyLL8wBc0qJpV8=", "path": "github.com/mitchellh/multistep", - "revision": "162146fc57112954184d90266f4733e900ed05a5" + "revision": "391576a156a54cfbb4cf5d5eda40cf6ffa3e3a4d", + "revisionTime": "2017-03-16T18:53:39Z" }, { "checksumSHA1": "VBo7ciCNRr7wNVFmBTW8sm4PQ14=",