Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/project-model/src/cargo_workspace.rs')
| -rw-r--r-- | crates/project-model/src/cargo_workspace.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/crates/project-model/src/cargo_workspace.rs b/crates/project-model/src/cargo_workspace.rs index 5d8273832b..004d62967a 100644 --- a/crates/project-model/src/cargo_workspace.rs +++ b/crates/project-model/src/cargo_workspace.rs @@ -133,6 +133,8 @@ pub struct CargoConfig { pub extra_args: Vec<String>, /// Extra args passed only to `cargo metadata`, not other cargo commands. pub metadata_extra_args: Vec<String>, + /// Path to an extra config file passed to every cargo invocation via `--config`. + pub config_path: Option<AbsPathBuf>, /// Extra env vars to set when invoking the cargo command pub extra_env: FxHashMap<String, Option<String>>, pub invocation_strategy: InvocationStrategy, @@ -324,6 +326,8 @@ pub struct CargoMetadataConfig { pub extra_args: Vec<String>, /// Extra args passed directly to `cargo metadata` without filtering. pub metadata_extra_args: Vec<String>, + /// Path to an extra config file passed to `cargo metadata` via `--config`. + pub config_path: Option<AbsPathBuf>, /// Extra env vars to set when invoking the cargo command pub extra_env: FxHashMap<String, Option<String>>, /// What kind of metadata are we fetching: workspace, rustc, or sysroot. @@ -684,6 +688,10 @@ impl FetchMetadata { } } other_options.extend(config.metadata_extra_args.iter().cloned()); + if let Some(config_path) = &config.config_path { + other_options.push("--config".to_owned()); + other_options.push(config_path.to_string()); + } let mut lockfile_copy = None; if cargo_toml.is_rust_manifest() { |