use hemlib::{add_feed, list_feeds, read_feed_fast, read_feed_fast_duration, remove};
use structopt::StructOpt;
#[derive(StructOpt, Debug)]
#[structopt(
name = "Hemingway",
about = "An economical RSS reader for your terminal."
)]
struct Cli {
#[structopt(subcommand)]
sub_cmd: Option<Cmd>,
}
#[derive(StructOpt, Debug)]
enum Cmd {
Add { feed_url: String },
Top {
#[structopt(default_value = "1")]
num_entries: usize,
},
List,
Remove,
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = Cli::from_args();
match args.sub_cmd {
None => {
let processed = read_feed_fast_duration().await?; for e in processed {
println!("{}", e);
}
None
}
Some(i) => {
match &i {
Cmd::Add { feed_url } => add_feed(feed_url),
Cmd::Top { num_entries } => {
let top_entries = read_feed_fast(*num_entries).await?;
for e in top_entries {
println!("{}", e);
}
}
Cmd::List => {
list_feeds();
}
Cmd::Remove => {
remove();
}
};
Some(i)
}
};
Ok(())
}