Allow --config path without config-include

As per
https://github.com/rust-lang/cargo/issues/7722#issuecomment-1098612205
This commit is contained in:
Jon Gjengset 2022-06-13 21:51:42 +00:00
parent 8d42b0e879
commit 103cff694b

View File

@ -1165,6 +1165,7 @@ impl Config {
Some(cli_args) => cli_args, Some(cli_args) => cli_args,
None => return Ok(loaded_args), None => return Ok(loaded_args),
}; };
let mut seen = HashSet::new();
for arg in cli_args { for arg in cli_args {
let arg_as_path = self.cwd.join(arg); let arg_as_path = self.cwd.join(arg);
let tmp_table = if !arg.is_empty() && arg_as_path.exists() { let tmp_table = if !arg.is_empty() && arg_as_path.exists() {
@ -1175,9 +1176,8 @@ impl Config {
anyhow::format_err!("config path {:?} is not utf-8", arg_as_path) anyhow::format_err!("config path {:?} is not utf-8", arg_as_path)
})? })?
.to_string(); .to_string();
let value = CV::String(str_path, Definition::Cli); self._load_file(&self.cwd().join(&str_path), &mut seen, true)
let map = HashMap::from([("include".to_string(), value)]); .with_context(|| format!("failed to load config from `{}`", str_path))?
CV::Table(map, Definition::Cli)
} else { } else {
// We only want to allow "dotted key" (see https://toml.io/en/v1.0.0#keys) // We only want to allow "dotted key" (see https://toml.io/en/v1.0.0#keys)
// expressions followed by a value that's not an "inline table" // expressions followed by a value that's not an "inline table"