diff --git a/Cargo.lock b/Cargo.lock index 03f78686981..33327b71589 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1764,9 +1764,9 @@ dependencies = [ [[package]] name = "cargo_metadata" -version = "0.15.4" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", @@ -5690,7 +5690,7 @@ dependencies = [ name = "router_env" version = "0.1.0" dependencies = [ - "cargo_metadata 0.15.4", + "cargo_metadata 0.18.1", "config", "error-stack", "gethostname", diff --git a/crates/router_env/Cargo.toml b/crates/router_env/Cargo.toml index 3a4dcf128be..a028dfb8e56 100644 --- a/crates/router_env/Cargo.toml +++ b/crates/router_env/Cargo.toml @@ -8,7 +8,7 @@ readme = "README.md" license.workspace = true [dependencies] -cargo_metadata = "0.15.4" +cargo_metadata = "0.18.1" config = { version = "0.13.3", features = ["toml"] } error-stack = "0.3.1" gethostname = "0.4.3" @@ -34,7 +34,7 @@ vergen = { version = "8.2.1", optional = true, features = ["cargo", "git", "git2 tokio = { version = "1.36.0", features = ["macros", "rt-multi-thread"] } [build-dependencies] -cargo_metadata = "0.15.4" +cargo_metadata = "0.18.1" vergen = { version = "8.2.1", features = ["cargo", "git", "git2", "rustc"], optional = true } [features] diff --git a/crates/router_env/src/cargo_workspace.rs b/crates/router_env/src/cargo_workspace.rs index 3fd92fc57c4..fd4ce38712a 100644 --- a/crates/router_env/src/cargo_workspace.rs +++ b/crates/router_env/src/cargo_workspace.rs @@ -14,17 +14,11 @@ pub fn set_cargo_workspace_members_env() { let metadata = cargo_metadata::MetadataCommand::new() .exec() .expect("Failed to obtain cargo metadata"); - let workspace_members = metadata.workspace_members; - let workspace_members = workspace_members + let workspace_members = metadata + .workspace_packages() .iter() - .map(|package_id| { - package_id - .repr - .split_once(' ') - .expect("Unknown cargo metadata package ID format") - .0 - }) + .map(|package| package.name.as_str()) .collect::>() .join(","); @@ -35,7 +29,7 @@ pub fn set_cargo_workspace_members_env() { .expect("Failed to set `CARGO_WORKSPACE_MEMBERS` environment variable"); } -/// Verify that the cargo metadata workspace members format matches that expected by +/// Verify that the cargo metadata workspace packages format matches that expected by /// [`set_cargo_workspace_members_env`] to set the `CARGO_WORKSPACE_MEMBERS` environment variable. /// /// This function should be typically called within build scripts, before the @@ -43,24 +37,20 @@ pub fn set_cargo_workspace_members_env() { /// /// # Panics /// -/// Panics if running the `cargo metadata` command fails, or if the workspace members package ID -/// format cannot be determined. +/// Panics if running the `cargo metadata` command fails, or if the workspace member package names +/// cannot be determined. pub fn verify_cargo_metadata_format() { #[allow(clippy::expect_used)] let metadata = cargo_metadata::MetadataCommand::new() .exec() .expect("Failed to obtain cargo metadata"); - let workspace_members = metadata.workspace_members; - let package_id_entry_prefix = - format!("{} {}", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION")); assert!( - workspace_members + metadata + .workspace_packages() .iter() - .any(|package_id| package_id.repr.starts_with(&package_id_entry_prefix)), - "Unknown workspace members package ID format. \ - Please run `cargo metadata --format-version=1 | jq '.workspace_members'` and update this \ - build script to match the updated package ID format." + .any(|package| package.name == env!("CARGO_PKG_NAME")), + "Unable to determine workspace member package names from `cargo metadata`" ); }