From 2e1afbd7d75b876c7cdb10c1310c5f724a1545b8 Mon Sep 17 00:00:00 2001 From: Andrew Phillips Date: Mon, 18 Sep 2023 14:26:36 +0000 Subject: [PATCH] Get meta keys/values from env when using --save --- src/main.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6eb429c..eb97cb2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -350,10 +350,12 @@ fn mode_save(cmd: &mut Command, args: Args, ids: &mut Vec, tags: &mut Vec = HashMap::new(); + let mut item_meta: HashMap = get_meta_from_env(); if let Ok(hostname) = gethostname().into_string() { - item_meta.insert("hostname".to_string(), hostname); + if ! item_meta.contains_key("hostname") { + item_meta.insert("hostname".to_string(), hostname); + } } for item in args.item.meta.iter() { @@ -457,7 +459,6 @@ fn mode_list(cmd: &mut Command, args: Args, ids: &mut Vec, tags: &Vec db::get_items(conn)?, false => db::get_items_matching(conn, tags, &meta)? @@ -467,7 +468,6 @@ fn mode_list(cmd: &mut Command, args: Args, ids: &mut Vec, tags: &Vec> = HashMap::new(); let mut meta_by_item: HashMap> = HashMap::new(); - let mut meta_columns = HashSet::new(); for item in items.iter() { 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(()) } + +fn get_meta_from_env() -> HashMap { + debug!("MAIN: Getting meta from KEEP_META_*"); + let re = Regex::new(r"^KEEP_META_(.+)$").unwrap(); + let mut meta_env: HashMap = 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 +}