2023-11-12 17:19:34 -05:00
|
|
|
package opt
|
2023-11-11 19:28:58 -05:00
|
|
|
|
2023-11-11 21:18:18 -05:00
|
|
|
import (
|
|
|
|
"strconv"
|
|
|
|
)
|
2023-11-11 19:28:58 -05:00
|
|
|
|
|
|
|
type BoolOption struct {
|
|
|
|
name string
|
|
|
|
shortName string
|
|
|
|
description string
|
|
|
|
value bool
|
|
|
|
}
|
|
|
|
|
2023-11-11 20:49:38 -05:00
|
|
|
var _ Option = (*BoolOption)(nil)
|
2023-11-11 19:28:58 -05:00
|
|
|
|
|
|
|
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 == "" {
|
2023-11-11 20:49:38 -05:00
|
|
|
o.value = !o.value
|
2023-11-11 19:28:58 -05:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
boolVal, err := strconv.ParseBool(raw)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
o.value = boolVal
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2023-11-12 17:07:38 -05:00
|
|
|
// RequiresVal implements Option.
|
|
|
|
func (*BoolOption) RequiresVal() bool {
|
2023-11-11 20:49:38 -05:00
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
2023-11-11 19:28:58 -05:00
|
|
|
func (o *BoolOption) Value() bool {
|
|
|
|
return o.value
|
|
|
|
}
|