pub(crate) fn get_rmk_features() -> Option<Vec<String>> {
match cargo_toml::Manifest::from_path("./Cargo.toml") {
Ok(manifest) => manifest
.dependencies
.iter()
.find(|(name, _dep)| *name == "rmk")
.map(|(_name, dep)| {
let default_features = if let Some(d) = dep.detail() {
d.default_features
} else {
true
};
let mut feature_set = dep.req_features().to_vec();
if default_features {
feature_set.push("defmt".to_string());
feature_set.push("storage".to_string());
feature_set.push("vial".to_string());
feature_set.push("vial_lock".to_string());
}
if feature_set.contains(&"split".to_string()) {
feature_set.push("controller".to_string());
}
feature_set
}),
Err(_e) => None,
}
}
pub(crate) fn is_feature_enabled(feature_list: &Option<Vec<String>>, feature: &str) -> bool {
if let Some(rmk_features) = feature_list {
for f in rmk_features {
if f == feature {
return true;
}
}
}
false
}