57 lines
1.2 KiB
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
|
|
}
|