go-ayo/common을 gocommon으로 분리
This commit is contained in:
56
flag/flag_helper.go
Normal file
56
flag/flag_helper.go
Normal file
@ -0,0 +1,56 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user