Fail on unknown values of -on-error

This commit is contained in:
Orivej Desh 2016-09-17 14:34:37 +00:00
parent 389603cc0f
commit 639bf356aa
3 changed files with 32 additions and 4 deletions

View File

@ -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

View File

@ -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
View 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)
}