env-select
Releases
1.1.3 - 2024-02-13
v1.1.3
Feb 13 2024 at 13:45 UTC
1.1.2 - 2024-02-11
v1.1.2
Feb 11 2024 at 22:57 UTC
Changed
- Fix some typos in docs and warning messages (oops)
1.1.1 - 2024-02-11
v1.1.1
Feb 11 2024 at 22:17 UTC
Changed
es set
subcommand no longer requires--source-file
arg- The intention is to make the command useful even without the wrapping function (and to provide helpful hint output)
- Rename binary from
env-select
toes
- I'm not considering this a breaking change, because running the binary directly was not considered a supported use case.
1.1.0 - 2024-02-09
v1.1.0
Feb 9 2024 at 01:34 UTC
Added
- Pass a list of strings to
multiple
to filter which values are loaded from a mapping
Changed
- Resolve values in parallel
- This means profile resolution will only take as long as the slowest step, rather than the sum of all steps
1.0.0 - 2024-02-02
v1.0.0
Feb 2 2024 at 01:01 UTC
Added
Changed
- Use
es
instead ofenv-select
in CLI help output es show config
now accepts optional arguments to print for a single application or profile
v0.11.0
v0.11.0
Aug 24 2023 at 17:12 UTC
Breaking Changes
- Remove the concept of native commands
- The
command
value source is effectively gone, and theshell
value source type has to renamed tocommand
to replace the old one- In other words, the
shell
type is gone and thecommand
field for thecommand
type now takes a string instead of astring[]
- In other words, the
- Side effects can now only be shell commands (string literals)
- This is to reduce the overall complexity of the tool. I don't thi nk there's a strong use case for native commands, where you can't just use shell commands
- The
New Features
- Add
cwd
option tocommand
value source type, to force the command to execute in a particular directory - Modifications to the
PATH
variable will be prepended to the existing value, rather than replacing it- This special behavior is based on the variable name, and only applies to
PATH
- This special behavior is based on the variable name, and only applies to
v0.10.0
v0.10.0
Aug 15 2023 at 13:15 UTC
Breaking Changes
- Cascading config files are now only merged down to the profile level
New Features
- Added side effects. See usage docs for more. Imperative environment configuration!
Other
- Sourceable output from
es set
is now written to a temporary file instead of stdout. This difference is handled by the shell functions, so no change to behavior for users
v0.9.0
v0.9.0
Jul 31 2023 at 20:18 UTC
Breaking Changes
es show
is now broken into sub-subcommands:es show config
andes show shell
- Unknown keys in config will now be rejected
New Features
- Add
--run-in-shell
flag toes run
es run
andes set
no longer require an application name in the command; if not given, they will prompt, the same way they prompt for profile name
Other
- Provide more context if the subprocess in
es run
fails
v0.8.0
v0.8.0
Jul 18 2023 at 13:13 UTC
New Features
- Load multiple values from a single source with the
multiple
flag- Supported for all value source types
file
value source, which loads value(s) from a file path (combine withmultiple = true
for maximum fun!)- Support non-string primitives for simple literal values
- E.g.
VARIABLE1 = 123
orVARIABLE2 = false
- These values will simply be stringified before export, since shells only understand strings anyway
- E.g.
Other
- Improve test coverage!
v0.7.0
v0.7.0
Jul 13 2023 at 10:55 UTC
This should be the last release with major breaking changes. The config layout has changed dramatically in order to support planned (and unplanned) future features.
Breaking Changes
- Removed
vars
config section. You can no longer provide mappings for single variables. Instead, define a set of profiles with single variables- This feature didn't provide any additional functionality, it was just a slight convenience at the cost of complexity both for users and code
- Restructured profile config:
- Renamed
apps
field toapplications
- Add new
profiles
andvariables
subfields - Overall, this means
apps.app1.profile1.VARIABLE1
will now beapplications.app1.profiles.profile1.variables.VARIABLE1
- This is more tedious, but allows for current and future features to fit into the config
- Renamed
New Features
- Profile inheritance - profiles can now extend other profiles, eliminating the need to copy-paste a bunch of common content between profiles
Other
es
shell function definitions now use the full path to theenv-select
binary rather than relying onPATH
- This eliminates the need to add
env-select
to thePATH
, and also guarantees that the copy ofenv-select
that is being executed byes
is the one that generated thates
definition in the first place
- This eliminates the need to add
v0.6.2
v0.6.2
Jul 8 2023 at 14:04 UTC
Other
- Fix binaries being built for the wrong architecture
v0.6.1
v0.6.1
Jul 8 2023 at 13:14 UTC
Other
- Defer shell path loading until it's needed. This will enable env-select init on systems that don't have the specified shell present
v0.6.0
v0.6.0
Jul 8 2023 at 10:48 UTC
I tried to fit all the foreseeable breaking changes into this release, there may be some more though.
Breaking Changes
- Complex value sources (i.e. anything other than a simple string) now require the
type
field. E.g.type = "literal"
ortype = "command"
- As value sources get more intricate, options start to collide. This field makes it easy to disambiguate between source types, which allows them to have overlapping option names
- Rename
--shell-path
option back to--shell
, and it once again only requires a shell name, rather than a full path- The full path for the shell will be grabbed via the
which
command now. This means whatever shell you use must be in yourPATH
- The full path for the shell will be grabbed via the
- Rename
command
value source type toshell
- The old
command
name is now used for commands that are executed natively
- The old
New Features
- Add
run
subcommand, for one-off environment usage- This runs a single command in the configured environment, rather than modifying the shell environment. Similar to
kubectl exec
orpoetry run
- This runs a single command in the configured environment, rather than modifying the shell environment. Similar to
- Add
command
value source type, which accepts an array of strings and executes a command natively, rather than via the shell - Add
kubernetes
value source type, which executes a command in a kubernetes pod viakubectl
- Support complex literal values, enabling the
sensitive
option for literals- This option probably isn't that useful, but now the field is supported globally
- Add a third level of verbosity (
-vvv
) to enable more granularity in log filtering
Other
- Fix macOS x86 build in CI (the binary will appear on releases now)
- Add a bunch of tests
v0.5.0
v0.5.0
Jun 30 2023 at 12:38 UTC
New Features
- Shell configuration can now be loaded from
env-select init
function. Add this to your shell startup script to load it automatically. See installation instructions for more info. --shell-path
option allows you to override the$SHELL
variable. This is rarely necessary, mostly useful for debugging.- Print configured variables to stderr to give some feedback when running
es set
- Add
sensitive
option tocommand
value source, to mask data in information output - Support additional verbosity level with
-vv
Other
- Dynamic commands are now executed within the scope of env-select . Env-select will run your shell as a subprocess to execute the command, rather than print out a templated string (e.g.
$(echo def)
) to invoke a subshell. This reduces the surface area for bugs, and opens up options new kinds of dynamic values.
v0.4.1
v0.4.1
Jun 25 2023 at 17:02 UTC
Other
Fixed release process. Binaries for 0.4.0 are attached to this release
v0.4.0
v0.4.0
Jun 25 2023 at 14:04 UTC
Breaking Changes
- Renamed binary from
es
toenv-select
(to facilitate shell plugins usinges
) - Moved main functionality under
env-select set
subcommand
New Features
- Added fish plugin
- Added
show
subcommand
Bug Fixes & Tweaks
- Emit non-zero exit code for errors
- Print available variables and applications for bare
env-select set
or an invalid variable/application name
v0.3.0
v0.3.0
Jun 25 2023 at 13:53 UTC
New Features
- Add
command
variant for values, allowing lazily evaluated commands instead of static values
Other
- Add
aarch64-apple-darwin
to release build - Upgrade to rust 1.67.1
v0.2.0
v0.2.0
Nov 12 2022 at 13:33 UTC
- Reorient schema around named profiles (breaking change)
- Fix terminal cursor disappearing after ctrl-c (#5)
- Allow passing profile name (or literal value, for single variables) as a cmd arg to skip interactive prompt (#3)
- Give profiles/variables consistent ordering in prompt (#2)
- Clean up error handling a bit
- Lots of doc improvements