mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-03 13:30:39 +08:00
build(router_env): obtain workspace member package names from cargo_metadata more deterministically (#4139)
Co-authored-by: Sampras Lopes <lsampras@pm.me>
This commit is contained in:
6
Cargo.lock
generated
6
Cargo.lock
generated
@ -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",
|
||||
|
||||
@ -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]
|
||||
|
||||
@ -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::<Vec<_>>()
|
||||
.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`"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user