func NewFlagKeyValue()

in flag/value.go [48:79]


func NewFlagKeyValue(cfg *ucfg.Config, autoBool bool, opts ...ucfg.Option) *FlagValue {
	return newFlagValue(cfg, opts, func(arg string) (*ucfg.Config, error, error) {
		var key string
		var val interface{}
		var err error

		args := strings.SplitN(arg, "=", 2)
		if len(args) < 2 {
			if !autoBool || len(args) == 0 {
				err := fmt.Errorf("argument '%v' is empty ", arg)
				return nil, err, err
			}

			key = arg
			val = true
		} else {
			key = args[0]
			if args[1] == "" {
				return nil, nil, nil
			}

			val, err = parse.Value(args[1])
			if err != nil {
				return nil, err, err
			}
		}

		tmp := map[string]interface{}{key: val}
		cfg, err := ucfg.NewFrom(tmp, opts...)
		return cfg, err, err
	})
}