mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-21 16:33:24 +00:00
Respond to Cargo metadata format change
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
10690063eb
commit
6dec96c7e1
@ -162,18 +162,48 @@ pub fn get_current_crate_info() -> CrateInfo {
|
|||||||
let metadata = get_cargo_metadata(None::<&str>, None::<&[&str]>).unwrap();
|
let metadata = get_cargo_metadata(None::<&str>, None::<&[&str]>).unwrap();
|
||||||
|
|
||||||
let default_member = get_default_member(&metadata);
|
let default_member = get_default_member(&metadata);
|
||||||
|
// Prior 202403 (Rust 1.77.1), the default member string here is in the form of
|
||||||
// The default member string here is in the form of "<crate_name> <crate_version> (path+file://<crate_path>)"
|
// "<crate_name> <crate_version> (path+file://<crate_path>)".
|
||||||
let default_member = default_member.split(' ').collect::<Vec<&str>>();
|
// After that, it's
|
||||||
let name = default_member[0].to_string();
|
// "path+file://<crate_path>#<crate_name>@<crate_version>", in which the crate
|
||||||
let version = default_member[1].to_string();
|
// name might not exist if it is the last component of the path.
|
||||||
let path = default_member[2]
|
if default_member.starts_with("path+file://") {
|
||||||
.trim_start_matches("(path+file://")
|
// After 1.77.1
|
||||||
.trim_end_matches(')')
|
if default_member.contains('@') {
|
||||||
|
let default_member = default_member.split(['#', '@']).collect::<Vec<&str>>();
|
||||||
|
CrateInfo {
|
||||||
|
name: default_member[1].to_string(),
|
||||||
|
version: default_member[2].to_string(),
|
||||||
|
path: default_member[0]
|
||||||
|
.trim_start_matches("path+file://")
|
||||||
|
.to_string(),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let default_member = default_member.split(['#']).collect::<Vec<&str>>();
|
||||||
|
let path = default_member[0]
|
||||||
|
.trim_start_matches("path+file://")
|
||||||
.to_string();
|
.to_string();
|
||||||
CrateInfo {
|
CrateInfo {
|
||||||
name,
|
name: PathBuf::from(path.clone())
|
||||||
version,
|
.file_name()
|
||||||
|
.unwrap()
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
.to_string(),
|
||||||
|
version: default_member[1].to_string(),
|
||||||
path,
|
path,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Before 1.77.1
|
||||||
|
let default_member = default_member.split(' ').collect::<Vec<&str>>();
|
||||||
|
CrateInfo {
|
||||||
|
name: default_member[0].to_string(),
|
||||||
|
version: default_member[1].to_string(),
|
||||||
|
path: default_member[2]
|
||||||
|
.trim_start_matches("(path+file://")
|
||||||
|
.trim_end_matches(')')
|
||||||
|
.to_string(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user