Files
gocommon/flag/flag_helper.go

57 lines
1.2 KiB
Go

package flag
import (
"flag"
"fmt"
"os"
"strings"
)
var flaged = make(map[string]interface{})
func IntNoCase(name string, value int, usage string) *int {
test := fmt.Sprintf("--%s=", name)
for _, arg := range os.Args {
if strings.HasPrefix(strings.ToLower(arg), test) || strings.HasPrefix(strings.ToLower(arg), test[1:]) {
kv := strings.Split(arg, "=")
realname := strings.TrimLeft(kv[0], "-")
oldptr, ok := flaged[realname]
if !ok {
ptr := flag.Int(realname, value, usage)
flaged[realname] = ptr
return ptr
}
return oldptr.(*int)
}
}
defval := new(int)
*defval = value
return defval
}
func StringNoCase(name string, value string, usage string) *string {
test := fmt.Sprintf("--%s=", name)
for _, arg := range os.Args {
if strings.HasPrefix(strings.ToLower(arg), test) || strings.HasPrefix(strings.ToLower(arg), test[1:]) {
kv := strings.Split(arg, "=")
realname := strings.TrimLeft(kv[0], "-")
oldptr, ok := flaged[realname]
if !ok {
ptr := flag.String(realname, value, usage)
flaged[realname] = ptr
return ptr
}
return oldptr.(*string)
}
}
defval := new(string)
*defval = value
return defval
}