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.rs8
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() {