A tiny tool to manage values in your env file. Useful in some rare circumstances e.g. swapping variables in local development, when you don't want to maintain multiple separate env files.
pipx install useenv- Create a
.useenv.ymlconfig file in your project root.- If this contains secret values then make sure to add
.useenv.ymlto your project or global.gitignore.
- If this contains secret values then make sure to add
useenv <env_identifier>
Example .useenv.yml config file:
env_file: .env
envs:
foo:
DATABASE_HOST: foo-host
DATABASE_USER: foo-user
DATABASE_PASSWORD: foo-pw
bar:
DATABASE_HOST: bar-host
DATABASE_USER: bar-user
DATABASE_PASSWORD: bar-pw--mode flag or mode field of the config.
Values will be merged into the existing env file, or create it if it doesn't exist.
Env file will be created/overwritten.
In this case you may want to define a common set of values. YAML gives us the tools to do this:
_common: &common
DATABASE_USER: common-user
env_file: .env
mode: create
envs:
foo:
<< : *common
DATABASE_HOST: foo-host
DATABASE_PASSWORD: foo-pw
bar:
<< : *common
DATABASE_HOST: bar-host
DATABASE_PASSWORD: bar-pwIf you have the 1password CLI installed then you can pull values from 1password:
...
envs:
foo:
DATABASE_PASSWORD: 1pw::<item-id>::<field> # e.g. 1pw::abcdefqwerty::password