Compare commits

...

3 Commits

Author SHA1 Message Date
Jay 113f1a1945 Merge pull request '[fix] dup empty name check ignore' (#2) from fix/empty-key-dup-and-required into master
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details
Reviewed-on: #2
2020-12-13 14:57:05 +00:00
Jay 6f460a33db [fix] dup empty name check ignore
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details
2020-12-13 22:56:38 +08:00
Jay 5bb2198684 fix no set default value bug
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/tag Build is passing Details
2020-02-19 09:38:33 +00:00
2 changed files with 10 additions and 4 deletions

View File

@ -39,7 +39,7 @@ func New() *Parser {
func (p *Parser) addArg(a *arg) error {
for _, v := range p.args {
if v.sname == a.sname || v.lname == a.lname {
if (a.sname != "" && v.sname == a.sname) || (a.lname != "" && v.lname == a.lname) {
return errors.New("option name dup")
}
}
@ -129,8 +129,14 @@ func (p *Parser) parse(args *[]string) error {
func (p *Parser) setDefaultValue() {
for _, v := range p.args {
// fmt.Printf("show %s , parsed: %v, defVal: %v\n", v.name(), v.parsed, v.defaultValue)
if !v.parsed {
v.value = v.defaultValue
t := reflect.ValueOf(v.value)
if t.Kind() == reflect.Ptr {
t = t.Elem()
}
t.Set(reflect.ValueOf(v.defaultValue))
// *v.value = v.defaultValue
}
}
}

View File

@ -17,7 +17,7 @@ func main() {
// "-n", "name!!",
// "-i", "item1",
// "-i", "item2",
"-h",
// "-h",
}
p := argparse.New()
@ -37,7 +37,7 @@ func main() {
p.FloatVar(&floatVal, 1.2, "ff", "float", "float value", nil)
p.StringSliceVar(&sarr, []string{}, "i", "item", "item list", nil)
// uncomment to test required arg missing
p.IntVar(&missReq, -1, "m", "miss", "require value", &argparse.Option{Require: true})
// p.IntVar(&missReq, -1, "m", "miss", "require value", &argparse.Option{Require: true})
p.Help("h", "help")
name = p.String("", "n", "name", "show name", nil)