env-select

Crates.ioenv-select
lib.rsenv-select
version1.2.0
sourcesrc
created_at2022-10-19 16:55:04.774829
updated_at2024-10-09 20:22:30.986827
descriptionEasily switch between common values for arbitrary environment variables
homepage
repositoryhttps://github.com/LucasPickering/env-select
max_upload_size
id691785
size242,559
Lucas Pickering (LucasPickering)

documentation

README

env-select

license crates.io version

Easily switch between predefined values for arbitrary environment variables Features include (but are not limited to):

  • Interative prompts to select between variable profiles
  • Cascading config system, allowing for system and repo-level value definitions
  • Grab values dynamically via shell commands
  • Modify your shell environment with es set, or run a one-off command in a modified environment with es run
  • Re-use common variables between profiles with inheritance

Example

# .env-select.toml
[applications.server.profiles.dev]
variables = {SERVICE1 = "dev", SERVICE2 = "also-dev"}

[applications.server.profiles.prd]
variables = {SERVICE1 = "prd", SERVICE2 = "also-prd"}

Now pick an environment to export:

> es set server
❯ === dev ===
SERVICE1=dev
SERVICE2=also-dev

  === prd ===
SERVICE1=prd
SERVICE2=also-prd
> echo $SERVICE1 $SERVICE2
dev also-dev

source Disclaimer

env-select runs as a subprocess to your shell (as all commands do), meaning it cannot modify your shell environment. To get around this, env-select will simply output shell commands that the shell plugins (or you) can then pipe to source (or eval) to modify your session.

If you think piping stuff to source is dangerous and sPoOky, you're right. But consider the fact that at this point, you've already downloaded and executed a mystery binary on your machine. You should've already done your due diligence.

Bugs/Feedback

If you find a bug or have a feature request, please open an issue on GitHub.

Commit count: 136

cargo fmt