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 withes run - Re-use common variables between profiles with inheritance
# .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-devenv-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.
If you find a bug or have a feature request, please open an issue on GitHub.