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 }