Open
Description
Most configuration read through cargo uses helpers like Config::get_string
which automatically read env vars, but configuration reading portions of Cargo that go through Config::get_table
do not read environment variables. The return value here is a HashMap
which doesn't proxy reads to an environment variable.
This affects, for example, source replacement. Source replacement is not configurable through environment variables (a bug) because of its use of get_table
.
We should tackle this via one of two routes:
- First, remove
get_table
entirely. Just don't expose the ability to read a table and force all configuration reads to go throughget_string
and friends. This may or may not be uniformly possible as IIRC there's portions of Cargo that rely oniter
which is a bit of a bummer. - Second, change
get_table
to return a wrapper rather than aHashMap
. Reads of theHashMap
would "do the right thing" with environment variables. Again though it's not clear how such a wrapper would implementiter
as well...
In any case, some questions to still work through here!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment