cmd/opt/bool.go

65 lines
1.0 KiB
Go

package opt
import (
"strconv"
)
type BoolOption struct {
name string
shortName string
description string
value bool
}
var _ Option = (*BoolOption)(nil)
func Bool(name, shortName string, defaultValue bool, description string) *BoolOption {
return &BoolOption{
name: name,
shortName: shortName,
description: description,
value: defaultValue,
}
}
// Description implements Option.
func (o *BoolOption) Description() string {
return o.description
}
// Name implements Option.
func (o *BoolOption) Name() string {
return o.name
}
// ShortName implements Option.
func (o *BoolOption) ShortName() string {
return o.shortName
}
// Value implements Option.
func (o *BoolOption) Parse(raw string) error {
if raw == "" {
o.value = !o.value
return nil
}
boolVal, err := strconv.ParseBool(raw)
if err != nil {
return err
}
o.value = boolVal
return nil
}
// RequiresVal implements Option.
func (*BoolOption) RequiresVal() bool {
return false
}
func (o *BoolOption) Value() bool {
return o.value
}