Get meta keys/values from env when using --save

This commit is contained in:
Andrew Phillips
2023-09-18 14:26:36 +00:00
parent 96eb309c3e
commit 2e1afbd7d7

View File

@@ -350,11 +350,13 @@ fn mode_save(cmd: &mut Command, args: Args, ids: &mut Vec<i64>, tags: &mut Vec<S
db::set_item_tags(&conn, item.clone(), tags)?; db::set_item_tags(&conn, item.clone(), tags)?;
let mut item_meta: HashMap<String, String> = HashMap::new(); let mut item_meta: HashMap<String, String> = get_meta_from_env();
if let Ok(hostname) = gethostname().into_string() { if let Ok(hostname) = gethostname().into_string() {
if ! item_meta.contains_key("hostname") {
item_meta.insert("hostname".to_string(), hostname); item_meta.insert("hostname".to_string(), hostname);
} }
}
for item in args.item.meta.iter() { for item in args.item.meta.iter() {
let item = item.clone(); let item = item.clone();
@@ -457,7 +459,6 @@ fn mode_list(cmd: &mut Command, args: Args, ids: &mut Vec<i64>, tags: &Vec<Strin
meta.insert(item.key, item.value); meta.insert(item.key, item.value);
} }
let items = match tags.is_empty() && meta.is_empty() { let items = match tags.is_empty() && meta.is_empty() {
true => db::get_items(conn)?, true => db::get_items(conn)?,
false => db::get_items_matching(conn, tags, &meta)? false => db::get_items_matching(conn, tags, &meta)?
@@ -467,7 +468,6 @@ fn mode_list(cmd: &mut Command, args: Args, ids: &mut Vec<i64>, tags: &Vec<Strin
let mut tags_by_item: HashMap<i64, Vec<String>> = HashMap::new(); let mut tags_by_item: HashMap<i64, Vec<String>> = HashMap::new();
let mut meta_by_item: HashMap<i64, HashMap<String, String>> = HashMap::new(); let mut meta_by_item: HashMap<i64, HashMap<String, String>> = HashMap::new();
let mut meta_columns = HashSet::new();
for item in items.iter() { for item in items.iter() {
let item_id = item.id.unwrap(); let item_id = item.id.unwrap();
@@ -803,3 +803,17 @@ fn mode_status(_cmd: &mut Command, args: Args, data_path: PathBuf, db_path: Path
Ok(()) Ok(())
} }
fn get_meta_from_env() -> HashMap<String,String> {
debug!("MAIN: Getting meta from KEEP_META_*");
let re = Regex::new(r"^KEEP_META_(.+)$").unwrap();
let mut meta_env: HashMap<String,String> = HashMap::new();
for (key, value) in env::vars() {
if let Some(meta_name_caps) = re.captures(key.as_str()) {
let name = String::from(meta_name_caps.get(1).unwrap().as_str());
debug!("MAIN: Found meta: {}={}", name.clone(), value.clone());
meta_env.insert(name, value.clone());
}
}
meta_env
}