From 652548057bd44b0698ffaae413efe80b14806342 Mon Sep 17 00:00:00 2001 From: newbee1905 Date: Wed, 1 Feb 2023 22:31:43 +0700 Subject: [PATCH 1/4] feat: switch from if else to match case for handling args --- src/main.rs | 64 +++++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 34 deletions(-) diff --git a/src/main.rs b/src/main.rs index d53215f..1393a7e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -20,45 +20,41 @@ fn main() { let mut provider: String = "gogo".to_string(); let mut cast = (false, "0".to_string()); for arg in std::env::args() { - if arg == "--help" || arg == "-h" { - help = true; - } - if arg == "--anime" || arg == "-a" { - anime = true; - } - if arg == "--provider" || arg == "-r" { - if let Some(arg) = std::env::args().nth(count + 1) { - //get the next argument and see if it is = to gogo of vrv - if arg == "vrv" { - provider = "vrv".to_string(); - count += 1; - } else if arg == "gogo" { - provider = "gogo".to_string(); - count += 1; + match &*arg { + "--help" | "-h" => help = true, + "--anime" | "-a" => anime = true, + "--provider" | "-r" => { + if let Some(arg) = std::env::args().nth(count + 1) { + //get the next argument and see if it is = to gogo of vrv + if arg == "vrv" { + provider = "vrv".to_string(); + count += 1; + } else if arg == "gogo" { + provider = "gogo".to_string(); + count += 1; + } else { + provider = "gogo".to_string(); + } } else { - provider = "gogo".to_string(); + provider = "vrv".to_string(); } - } else { - provider = "vrv".to_string(); } - } - if arg == "--cast" || arg == "-C" { - if let Some(arg) = std::env::args().nth(count + 1) { - cast = (true, String::from(arg)) - } else { - println!("{}", "please provide a ip address".red()) + "--cast" | "-C" => { + if let Some(arg) = std::env::args().nth(count + 1) { + cast = (true, String::from(arg)) + } else { + println!("{}", "please provide a ip address".red()) + } } - } - - if arg == "--ln" || arg == "-l" { - ln = true; - } - if arg == "--chapter" || arg == "-c" { - if let Some(arg) = std::env::args().nth(count + 1) { - chapter = arg.parse::().unwrap(); - } else { - chapter = 0; + "--ln" | "-l" => ln = true, + "--chapter" | "-c" => { + if let Some(arg) = std::env::args().nth(count + 1) { + chapter = arg.parse::().unwrap(); + } else { + chapter = 0; + } } + &_ => {} } count += 1; From 330eb6239a0bdefba3f70989b16b09f73a3fa67f Mon Sep 17 00:00:00 2001 From: newbee1905 Date: Wed, 1 Feb 2023 22:42:51 +0700 Subject: [PATCH 2/4] feat: add option to use glow instead of bat --- src/ln/ln.rs | 14 +++++++++----- src/ln/open_text.rs | 46 ++++++++++++++++++++++++++++++++++++++------- src/main.rs | 31 +++++++++++++++++++++--------- 3 files changed, 70 insertions(+), 21 deletions(-) diff --git a/src/ln/ln.rs b/src/ln/ln.rs index ee9acb1..0cdd130 100644 --- a/src/ln/ln.rs +++ b/src/ln/ln.rs @@ -1,4 +1,4 @@ -use crate::ln::open_text::*; +use crate::ln::open_text::{open_bat, open_glow}; use crate::ln::scraper::*; use crate::ln::tracker::*; use crossterm::{ @@ -113,7 +113,7 @@ impl<'a> App { } } -pub fn ln_ui(chapter: u32) -> Result<(), Box> { +pub fn ln_ui(chapter: u32, reader: String) -> Result<(), Box> { // setup terminal let _ = get_ln_json(); enable_raw_mode()?; @@ -130,7 +130,7 @@ pub fn ln_ui(chapter: u32) -> Result<(), Box> { app.current_page_number = (chapter / 48.0).ceil() as u32; } - let res = run_app(&mut terminal, app); + let res = run_app(&mut terminal, app, &*reader); // restore terminal disable_raw_mode()?; @@ -148,7 +148,7 @@ pub fn ln_ui(chapter: u32) -> Result<(), Box> { Ok(()) } -fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<()> { +fn run_app(terminal: &mut Terminal, mut app: App, reader: &str) -> io::Result<()> { let mut chapter_select = false; loop { @@ -244,7 +244,11 @@ fn run_app(terminal: &mut Terminal, mut app: App) -> io::Result<( file.sync_all().expect("Unable to sync file"); }; terminal.clear()?; - let _ = open_bat(); + let _ = match reader { + "bat" => open_bat(), + "glow" => open_glow(), + &_ => todo!(), + }; write_ln_progress( &app.title, &app.current_page_number, diff --git a/src/ln/open_text.rs b/src/ln/open_text.rs index 22678c9..0c389d1 100644 --- a/src/ln/open_text.rs +++ b/src/ln/open_text.rs @@ -3,16 +3,15 @@ use std::process::{Command, ExitStatus, Stdio}; #[allow(unused_assignments)] pub fn open_bat() -> Result { - let termsize::Size {rows: _, cols} = termsize::get().unwrap(); + let termsize::Size { rows: _, cols } = termsize::get().unwrap(); let mut path = String::new(); - if cfg!(target_os = "windows"){ + if cfg!(target_os = "windows") { use dirs::home_dir; - let mut home = format!("{:?}",home_dir()).replace("\\\\","/"); + let mut home = format!("{:?}", home_dir()).replace("\\\\", "/"); home.drain(0..6); - home.drain(home.len()-2..home.len()); - path = format!("{}/AppData/Roaming/log_e",home).to_string(); - } - else{ + home.drain(home.len() - 2..home.len()); + path = format!("{}/AppData/Roaming/log_e", home).to_string(); + } else { path = "/tmp/log_e".to_string(); } @@ -37,3 +36,36 @@ pub fn open_bat() -> Result { .spawn()? .wait() } + +#[allow(unused_assignments)] +pub fn open_glow() -> Result { + let termsize::Size { rows: _, cols } = termsize::get().unwrap(); + let mut path = String::new(); + if cfg!(target_os = "windows") { + use dirs::home_dir; + let mut home = format!("{:?}", home_dir()).replace("\\\\", "/"); + home.drain(0..6); + home.drain(home.len() - 2..home.len()); + path = format!("{}/AppData/Roaming/log_e", home).to_string(); + } else { + path = "/tmp/log_e".to_string(); + } + + let soft_wrap = match Command::new("fold") + .arg("-s") + .arg("-w") + .arg((cols - 9).to_string()) + .arg(path) + .stdout(Stdio::piped()) + .spawn() + { + Err(why) => panic!("couldn't spawn wc: {}", why), + Ok(soft_wrap) => soft_wrap, + }; + + Command::new("glow") + .arg("-p") + .stdin(soft_wrap.stdout.unwrap()) + .spawn()? + .wait() +} diff --git a/src/main.rs b/src/main.rs index 1393a7e..3fb391e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,6 +18,7 @@ fn main() { //let search = option string let mut count = 0; let mut provider: String = "gogo".to_string(); + let mut reader: String = "bat".to_string(); let mut cast = (false, "0".to_string()); for arg in std::env::args() { match &*arg { @@ -26,19 +27,31 @@ fn main() { "--provider" | "-r" => { if let Some(arg) = std::env::args().nth(count + 1) { //get the next argument and see if it is = to gogo of vrv - if arg == "vrv" { - provider = "vrv".to_string(); - count += 1; - } else if arg == "gogo" { - provider = "gogo".to_string(); - count += 1; - } else { - provider = "gogo".to_string(); + match arg.as_str() { + "vrv" | "gogo" => { + provider = arg; + count += 1; + } + &_ => provider = "gogo".to_string(), } } else { provider = "vrv".to_string(); } } + "--reader" | "-R" => { + if let Some(arg) = std::env::args().nth(count + 1) { + //get the next argument and see if it is = to gogo of vrv + match arg.as_str() { + "bat" | "glow" => { + reader = arg; + count += 1; + } + &_ => reader = "bat".to_string(), + } + } else { + provider = "glow".to_string(); + } + } "--cast" | "-C" => { if let Some(arg) = std::env::args().nth(count + 1) { cast = (true, String::from(arg)) @@ -80,7 +93,7 @@ fn main() { } if ln == true { //ln_read(&search, chapter); - _ = ln_ui(chapter); + _ = ln_ui(chapter, reader); } else if anime == true { //anime_stream(search, episode, resume); From 2dea2c86ecfe833a7a45a8d974d79ec10f17bb60 Mon Sep 17 00:00:00 2001 From: newbee1905 Date: Wed, 1 Feb 2023 22:49:11 +0700 Subject: [PATCH 3/4] chore: add reader args to help --- src/main.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main.rs b/src/main.rs index 3fb391e..ae5c9d5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -133,6 +133,16 @@ fn print_help() { "if no provider is entered it will default to {}", "vrv".green() ); + println!(""); + println!("reader:\t\t{}", format_args!("{}", "-R --reader".red())); + println!( + "{}", + "after this^^^ argument you can enter a reader".green() + ); + println!( + "if no reader is entered it will default to {}", + "bat".green() + ); println!( "if the -r argument is not used it will default to {}", "gogo".green() From 03166deb7e6fff64e5f31876a69f137280cef489 Mon Sep 17 00:00:00 2001 From: newbee1905 Date: Thu, 2 Feb 2023 22:24:54 +0700 Subject: [PATCH 4/4] chore: fix helpers --- src/main.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index ae5c9d5..173824e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -133,6 +133,11 @@ fn print_help() { "if no provider is entered it will default to {}", "vrv".green() ); + println!( + "if the -r argument is not used it will default to {}", + "gogo".green() + ); + println!("the providers are {} or {}", "gogo".green(), "vrv".green()); println!(""); println!("reader:\t\t{}", format_args!("{}", "-R --reader".red())); println!( @@ -144,10 +149,10 @@ fn print_help() { "bat".green() ); println!( - "if the -r argument is not used it will default to {}", - "gogo".green() + "if the -R argument is not used it will default to {}", + "bat".green() ); - println!("the providers are {} or {}", "gogo".green(), "vrv".green()); + println!("the readers are {} or {}", "bat".green(), "glow".green()); println!(""); println!("help:\t\t{}", format_args!("{}", "-h --help".red())); //kill the program