Fail on unknown values of -on-error
This commit is contained in:
parent
389603cc0f
commit
639bf356aa
@ -10,6 +10,7 @@ import (
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/mitchellh/packer/helper/enumflag"
|
||||
"github.com/mitchellh/packer/packer"
|
||||
"github.com/mitchellh/packer/template"
|
||||
)
|
||||
@ -26,7 +27,8 @@ func (c BuildCommand) Run(args []string) int {
|
||||
flags.BoolVar(&cfgColor, "color", true, "")
|
||||
flags.BoolVar(&cfgDebug, "debug", false, "")
|
||||
flags.BoolVar(&cfgForce, "force", false, "")
|
||||
flags.StringVar(&cfgOnError, "on-error", "cleanup", "")
|
||||
flagOnError := enumflag.New(&cfgOnError, "cleanup", "abort", "ask")
|
||||
flags.Var(flagOnError, "on-error", "")
|
||||
flags.BoolVar(&cfgParallel, "parallel", true, "")
|
||||
if err := flags.Parse(args); err != nil {
|
||||
return 1
|
||||
|
@ -14,7 +14,7 @@ import (
|
||||
|
||||
func newRunner(steps []multistep.Step, config PackerConfig, ui packer.Ui) (multistep.Runner, multistep.DebugPauseFn) {
|
||||
switch config.PackerOnError {
|
||||
case "cleanup":
|
||||
case "", "cleanup":
|
||||
case "abort":
|
||||
for i, step := range steps {
|
||||
steps[i] = abortStep{step, ui}
|
||||
@ -23,8 +23,6 @@ func newRunner(steps []multistep.Step, config PackerConfig, ui packer.Ui) (multi
|
||||
for i, step := range steps {
|
||||
steps[i] = askStep{step, ui}
|
||||
}
|
||||
default:
|
||||
ui.Error(fmt.Sprintf("Ignoring -on-error=%q argument: unknown on-error value", config.PackerOnError))
|
||||
}
|
||||
|
||||
if config.PackerDebug {
|
||||
|
28
helper/enumflag/flag.go
Normal file
28
helper/enumflag/flag.go
Normal file
@ -0,0 +1,28 @@
|
||||
package enumflag
|
||||
|
||||
import "fmt"
|
||||
|
||||
type enumFlag struct {
|
||||
target *string
|
||||
options []string
|
||||
}
|
||||
|
||||
// New returns a flag.Value implementation for parsing flags with a one-of-a-set value
|
||||
func New(target *string, options ...string) *enumFlag {
|
||||
return &enumFlag{target: target, options: options}
|
||||
}
|
||||
|
||||
func (f *enumFlag) String() string {
|
||||
return *f.target
|
||||
}
|
||||
|
||||
func (f *enumFlag) Set(value string) error {
|
||||
for _, v := range f.options {
|
||||
if v == value {
|
||||
*f.target = value
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
return fmt.Errorf("expected one of %q", f.options)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user