WIP fix #4670
This commit is contained in:
parent
286fe78bfc
commit
262c8dc24a
|
@ -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)
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue