44 lines
1.5 KiB
Go
44 lines
1.5 KiB
Go
package flags
|
|
|
|
// GetFlagValue is a generic function to get flag values with type safety
|
|
func GetFlagValue[T any](registry FlagRegistry, name string) (T, bool) {
|
|
var zero T
|
|
values := registry.GetValues()
|
|
if value, exists := values[name]; exists {
|
|
if typedValue, ok := value.(*T); ok {
|
|
return *typedValue, true
|
|
}
|
|
}
|
|
return zero, false
|
|
}
|
|
|
|
// GetBoolFlagValue is a convenience function to get a boolean flag value
|
|
func GetBoolFlagValue(registry FlagRegistry, name string) (bool, bool) {
|
|
return GetFlagValue[bool](registry, name)
|
|
}
|
|
|
|
// GetStringFlagValue is a convenience function to get a string flag value
|
|
func GetStringFlagValue(registry FlagRegistry, name string) (string, bool) {
|
|
return GetFlagValue[string](registry, name)
|
|
}
|
|
|
|
// GetStringSliceFlagValue is a convenience function to get a string slice flag value
|
|
func GetStringSliceFlagValue(registry FlagRegistry, name string) ([]string, bool) {
|
|
return GetFlagValue[[]string](registry, name)
|
|
}
|
|
|
|
// GetIntFlagValue is a convenience function to get an integer flag value
|
|
func GetIntFlagValue(registry FlagRegistry, name string) (int, bool) {
|
|
return GetFlagValue[int](registry, name)
|
|
}
|
|
|
|
// GetInt64FlagValue is a convenience function to get an int64 flag value
|
|
func GetInt64FlagValue(registry FlagRegistry, name string) (int64, bool) {
|
|
return GetFlagValue[int64](registry, name)
|
|
}
|
|
|
|
// GetFloat64FlagValue is a convenience function to get a float64 flag value
|
|
func GetFloat64FlagValue(registry FlagRegistry, name string) (float64, bool) {
|
|
return GetFlagValue[float64](registry, name)
|
|
}
|