Expected behavior (what you expected to happen): After calling viper.SetEnvPrefix("FOO_") and viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_")), and given viper.SetDefault("bar-1", "") and viper.SetDefault("toy_story.buzz-lightyear", "infinity-and-beyond"), a subsequent call to viper.SafeWriteConfigAs("vars.env") should a file named "vars.env" containing:

FOO_BAR_1=
FOO_TOY_STORY_BUZZ_LIGHTYEAR=infinity-and-beyond

Actual behavior (what actually happened): The file produced contains:

BAR_1=
TOY_STORY_BUZZ-LIGHTYEAR=infinity-and-beyond

Repl.it link:

Code reproducing the issue:

viper.SetEnvPrefix("FOO_")
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_"))
viper.SetDefault("bar-1", "")
viper.SetDefault("toy_story.buzz-lightyear", "inifinity-and-beyond")

Environment: - Viper version: v1.1.3 - Config source: n/a - File format: env/dotenv

Anything else we should know?: It looks like v.envKeyReplacer and v.mergeWithEnvPrefix aren't getting used in the marshalWriter call. It's using private implementation.

envName := strings.ToUpper(strings.Replace(key, ".", "_", -1))

(see https://github.com/spf13/viper/blob/master/viper.go#L1708)

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.