Preflight Checklist

  • [X] I have searched the issue tracker for an issue that matches the one I want to file, without success.

Problem Description

When you define pflags like so:

rootCmd.PersistentFlags().StringVar(&opts.Color.Comment, "color-comment", defaultColorComment, fmt.Sprintf("Hex RGB color code for comments e.g., %q.", defaultColorComment))
rootCmd.PersistentFlags().StringVar(&opts.Color.Error, "color-error", defaultColorError, fmt.Sprintf("Hex RGB color code for errors e.g., %q.", defaultColorError))
v.BindPFlags(rootCmd.PersistentFlags())

The flag name e.g., "color-comment" is not automatically matched to a section like so:

color:
  comment: "#00ff00"

Proposed Solution

When calling BindPFlags, any long name that is separated by certain characters e.g., "-" or ".", would automatically consider any prefixes to be a section e.g.,

"foo-bar-baz" would look for:

foo:
  bar:
    baz: ""

To avoid backcompat issues, this could be an Option set either in NewWithOptions or via explicit function call.

Alternatives Considered

No response

Additional Information

There is a workaround after reading https://github.com/spf13/viper/issues/375#issuecomment-1437792936, but it requires binding individual flags.

Comment From: github-actions[bot]

👋 Thanks for reporting!

A maintainer will take a look at your issue shortly. 👀

In the meantime: We are working on Viper v2 and we would love to hear your thoughts about what you like or don't like about Viper, so we can improve or fix those issues.

⏰ If you have a couple minutes, please take some time and share your thoughts: https://forms.gle/R6faU74qPRPAzchZ9

📣 If you've already given us your feedback, you can still help by spreading the news, either by sharing the above link or telling people about this on Twitter:

https://twitter.com/sagikazarmark/status/1306904078967074816

Thank you! ❤️

Comment From: github-actions[bot]

Issues with no activity for 30 days are marked stale and subject to being closed.