Skip to content

Add support for slices when using environement variables#1785

Open
TheoBrigitte wants to merge 5 commits intospf13:masterfrom
TheoBrigitte:master
Open

Add support for slices when using environement variables#1785
TheoBrigitte wants to merge 5 commits intospf13:masterfrom
TheoBrigitte:master

Conversation

@TheoBrigitte
Copy link
Copy Markdown

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
Copy Markdown

CLAassistant commented Mar 18, 2024

CLA assistant check
All committers have signed the CLA.

@github-actions
Copy link
Copy Markdown

👋 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
Copy Markdown
Collaborator

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

@kadirakinkorkunc
Copy link
Copy Markdown

any news on this topic? @sagikazarmark

@janekolszak
Copy link
Copy Markdown

@sagikazarmark Maybe it's time to merge?

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

6 participants