-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Closed
Labels
kind/bugSomething isn't workingSomething isn't working
Description
Preflight Checklist
- I have searched the issue tracker for an issue that matches the one I want to file, without success.
- I am not looking for support or already pursued the available support channels without success.
- I have checked the troubleshooting guide for my problem, without success.
Viper Version
1.15
Go Version
1.18
Config Source
Manual set
Format
No response
Repl.it link
No response
Code reproducing the issue
package main
import (
"fmt"
"time"
"github.com/spf13/pflag"
"github.com/spf13/viper"
)
func f1() {
v := viper.New()
flagSet := pflag.NewFlagSet("test", pflag.ContinueOnError)
flagSet.String("name", "", "test")
v.BindPFlags(flagSet)
flagSet.VisitAll(func(flag *pflag.Flag) {
flag.Value.Set("set")
flag.Changed = true
})
fmt.Print(v.Get("name"))
}
func main() {
flagSet := pflag.NewFlagSet("test", pflag.ContinueOnError)
flagSet.IntSlice("ok2", []int{1, 2}, "")
flagSet.StringSlice("ok1", []string{"s1", "s2"}, "")
flagSet.DurationSlice("fail", []time.Duration{time.Second, time.Hour}, "")
v := viper.New()
v.BindPFlags(flagSet)
ok1 := v.AllSettings()["ok1"]
fmt.Printf("%v %T\n", ok1, ok1) //[s1 s2] []string
ok2 := v.AllSettings()["ok2"]
fmt.Printf("%v %T\n", ok2, ok2) //[1 2] []int
fail := v.AllSettings()["fail"]
fmt.Printf("%v %T\n", fail, fail) //[1s,1h0m0s] string
}Expected Behavior
DurationSlice in AllSettings()["fail"] should return set of time.Duration in similar fashion as IntSlice and StringSlice
AllSettings()["fail"] returns:
[]time.Duration{time.Second, time.Hour}
Actual Behavior
AllSettings()["fail"] returns string
"[1s,1h0m0s]"
Steps To Reproduce
run example from this issue
Additional Information
No response
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
kind/bugSomething isn't workingSomething isn't working