Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for slices when using environement variables #1785

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

TheoBrigitte
Copy link

Fixes: #1732

Following up on @lwlee2608 great work from #1733, here is a PR which adds support for using slices with environment variables and provide an additional fix to ensure we are not limited by the original config slice length.

Here is an example yaml config file :

clients:
  - name: foo
  - name: bar
  - name: baz

Values can now be overriden using

CLIENTS_0_NAME=one
CLIENTS_1_NAME=two
CLIENTS_2_NAME=three

Note that for this solution to work the config must be initialized as folow:

	var yamlConfig = []byte(`
clients:
  - name: foo
  - name: bar
  - name: baz
`)

	viper.SetConfigType("yaml")
	r := strings.NewReader(string(yamlConfig))
	viper.ReadConfig(r)
	SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
	AutomaticEnv()
	// Configuration must have the same structure as yamlConfig
	var config Configuration
	v.Unmarshal(&config)

@CLAassistant
Copy link

CLAassistant commented Mar 18, 2024

CLA assistant check
All committers have signed the CLA.

Copy link

👋 Thanks for contributing to Viper! You are awesome! 🎉

A maintainer will take a look at your pull request 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! ❤️

@sagikazarmark
Copy link
Collaborator

Thanks @TheoBrigitte ! I'm gonna need some time to review this, but it looks good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

AutomaticEnv does not override Unmarshaled config slice values
4 participants