feat: find kid first arg

This commit is contained in:
2023-10-09 22:28:16 +08:00
parent 6833a1a7d3
commit 308c6561bc
3 changed files with 14 additions and 10 deletions

View File

@@ -270,13 +270,9 @@ fn read_slot(config: &Option<TinyEncryptConfig>, kid: &str, slot: &Option<String
Some(slot) => Ok(slot.to_string()),
None => {
if let Some(config) = config {
if let Some(e) = config.find_by_kid(kid) {
if let Some(args) = &e.args {
if let Some(first_arg) = args.iter().next() {
information!("Found kid: {}'s slot: {}", kid, first_arg);
return Ok(first_arg.to_string());
}
}
if let Some(first_arg) = config.find_first_arg_by_kid(kid) {
information!("Found kid: {}'s slot: {}", kid, first_arg);
return Ok(first_arg.to_string());
}
}
print!("Input slot(eg 82, 83 ...): ");

View File

@@ -72,6 +72,14 @@ impl TinyEncryptConfig {
Ok(config)
}
pub fn find_first_arg_by_kid(&self, kid: &str) -> Option<&String> {
self.find_args_by_kid(kid).map(|a| a.iter().next()).flatten()
}
pub fn find_args_by_kid(&self, kid: &str) -> Option<&Vec<String>> {
self.find_by_kid(kid).map(|e| e.args.as_ref()).flatten()
}
pub fn find_by_kid(&self, kid: &str) -> Option<&TinyEncryptConfigEnvelop> {
self.envelops.iter().find(|e| e.kid == kid)
}