Better binding to Pflag
diff --git a/viper.go b/viper.go
index 2037881..709349c 100644
--- a/viper.go
+++ b/viper.go
@@ -123,7 +123,15 @@
return fmt.Errorf("flag for %q is nil", key)
}
pflags[key] = flag
- SetDefault(key, flag.Value.String())
+
+ switch flag.Value.Type() {
+ case "int", "int8", "int16", "int32", "int64":
+ SetDefault(key, cast.ToInt(flag.Value.String()))
+ case "bool":
+ SetDefault(key, cast.ToBool(flag.Value.String()))
+ default:
+ SetDefault(key, flag.Value.String())
+ }
return nil
}