From 14c99e638057adb745cd0cbd4364de0ac93f612f Mon Sep 17 00:00:00 2001 From: Troy Date: Tue, 14 Jan 2025 15:00:12 +0000 Subject: [PATCH] all but main function out of main --- src/config.rs | 41 ++++++++++++++++++++++++++++++++++++++ src/main.rs | 54 +++------------------------------------------------ src/utils.rs | 9 +++++++++ 3 files changed, 53 insertions(+), 51 deletions(-) create mode 100644 src/utils.rs diff --git a/src/config.rs b/src/config.rs index 5c13f05..7fb4f4c 100644 --- a/src/config.rs +++ b/src/config.rs @@ -31,6 +31,47 @@ pub fn parse_cli() -> Cli { args } +pub fn collate_values(args: Cli, config: &Config) -> (u8, u8, String) { + if args.verbose { + println!("{:?}", args); + println!("Selected list: {:?}", config.selected_list); + println!("Items: {:?}", config.lists); + } + + let count: u8 = if args.count.is_some() { + args.count.expect("Count flag wrong?") + } else if config.count.is_some() { + config.count.expect("Unable to use count value from config") + } else { + 8 + }; + + let skip_amount: u8 = if args.skip_amount.is_some() { + args.skip_amount.expect("Skip amount flag wrong?") + } else if config.skip_amount.is_some() { + config + .skip_amount + .expect("Unable to use skip amount value from config") + } else { + 0 + }; + + let list: String = if args.selected_list.is_some() { + args.selected_list + .clone() + .expect("Error getting selected list from flag") + } else if config.selected_list.is_some() { + config + .selected_list + .clone() + .expect("Need to specify a selected list") + } else { + panic!("Need to set selected list") + }; + + (count, skip_amount, list) +} + pub fn validate_config() -> Config { let xdg_dirs = BaseDirectories::new().expect("Failed to get XDG directories"); let config_path = xdg_dirs diff --git a/src/main.rs b/src/main.rs index d1140f5..720e8b5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,67 +1,19 @@ -use indicatif::ProgressStyle; use std::error::Error; use terminal_link::Link; use tokio; mod config; mod data; - -fn trim_chars(input: &str) -> String { - let trimmed: String = input.chars().take(256).collect(); - - if trimmed.len() < input.len() { - format!("{}...", trimmed) - } else { - trimmed - } -} +mod utils; #[tokio::main] async fn main() -> Result<(), Box> { let config = config::validate_config(); let args = config::parse_cli(); - - if args.verbose { - println!("{:?}", args); - println!("Selected list: {:?}", config.selected_list); - println!("Items: {:?}", config.lists); - } - - let count: u8 = if args.count.is_some() { - args.count.expect("Count flag wrong?") - } else if config.count.is_some() { - config.count.expect("Unable to use count value from config") - } else { - 8 - }; - - let skip_amount: u8 = if args.skip_amount.is_some() { - args.skip_amount.expect("Skip amount flag wrong?") - } else if config.skip_amount.is_some() { - config - .skip_amount - .expect("Unable to use skip amount value from config") - } else { - 0 - }; - - let list: String = if args.selected_list.is_some() { - args.selected_list - .expect("Error getting selected list from flag") - } else if config.selected_list.is_some() { - config - .selected_list - .expect("Need to specify a selected list") - } else { - panic!("Need to set selected list") - }; + let (count, skip_amount, list) = config::collate_values(args, &config); if let Some(values) = config.lists.get(&list) { let pb = indicatif::ProgressBar::new(12); - pb.set_style( - ProgressStyle::with_template("[{elapsed}] {bar:40.green/black} {msg}").unwrap(), - ); - let all_items = data::run_tasks(values.to_vec(), count, skip_amount, &pb).await; pb.finish_and_clear(); @@ -69,7 +21,7 @@ async fn main() -> Result<(), Box> { println!( "\x1b[1m>\x1b[0m \x1b[1;32m{}\x1b[0m\n\x1b[3m\x1b[2m{}\x1b[0m\n\x1b[2m{}\x1b[0m\n", Link::new(&item.title, &item.link), - trim_chars(&item.description), + utils::trim_chars(&item.description), item.pub_date.to_string() ); } diff --git a/src/utils.rs b/src/utils.rs new file mode 100644 index 0000000..ce6124d --- /dev/null +++ b/src/utils.rs @@ -0,0 +1,9 @@ +pub fn trim_chars(input: &str) -> String { + let trimmed: String = input.chars().take(256).collect(); + + if trimmed.len() < input.len() { + format!("{}...", trimmed) + } else { + trimmed + } +}