spf13 / pflag

Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
BSD 3-Clause "New" or "Revised" License
2.43k stars 348 forks source link

FlagSet.GetStringToString() drops brackets from values #413

Open lstemplinger opened 2 months ago

lstemplinger commented 2 months ago

Code Example:

package main

import (
    "fmt"

    "github.com/spf13/pflag"
)

func main() {
    fs := pflag.NewFlagSet("test", pflag.PanicOnError)
    fs.StringToString("testflag", map[string]string{}, "")
    fs.Set("testflag", "x=[]")
    fmt.Println(fs.Lookup("testflag").Value.String())
    result, _ := fs.GetStringToString("testflag")
    fmt.Println(result)
}

With pflag Version 1.0.5 the output is:

[x=[]]    
map[x:] 

I would have expected:

[x=[]]    
map[x:[]] 

Looking at the code, it looks like the Trim() here also removes brackets at the end of the flag value, not just those added by String(): https://github.com/spf13/pflag/blob/master/string_to_string.go#L80