summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs
index 8c94843..b36e08f 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,6 +1,6 @@
1use chrono::{naive::Days, prelude::*}; 1use chrono::{naive::Days, prelude::*};
2use clap::{Args, Parser, Subcommand, ValueEnum}; 2use clap::{Args, Parser, Subcommand, ValueEnum};
3use syn::{manager::Manager, PrintResult}; 3use syn::manager::Manager;
4 4
5#[derive(Parser)] 5#[derive(Parser)]
6#[command(author, version, about, long_about = None)] 6#[command(author, version, about, long_about = None)]
@@ -29,7 +29,7 @@ impl Default for Command {
29 29
30#[derive(Args)] 30#[derive(Args)]
31struct AddCommand { 31struct AddCommand {
32 url: String, 32 urls: Vec<String>,
33} 33}
34 34
35#[derive(Args)] 35#[derive(Args)]
@@ -49,11 +49,28 @@ struct PullCommand {
49 target: Option<String>, 49 target: Option<String>,
50} 50}
51 51
52pub trait PrintResult {
53 fn print(&self);
54}
55
56impl<T, E> PrintResult for Result<T, E>
57where
58 T: std::fmt::Display,
59 E: std::fmt::Display,
60{
61 fn print(&self) {
62 match self {
63 Ok(ok) => println!("{ok}"),
64 Err(err) => eprintln!("{err}"),
65 }
66 }
67}
68
52#[tokio::main(flavor = "current_thread")] 69#[tokio::main(flavor = "current_thread")]
53async fn main() { 70async fn main() {
54 let opts = Cli::parse(); 71 let opts = Cli::parse();
55 match &opts.command.unwrap_or_default() { 72 match &opts.command.unwrap_or_default() {
56 Command::Add(AddCommand { url }) => { 73 Command::Add(AddCommand { urls }) => {
57 let mut manager = Manager::load().unwrap_or_else(|e| { 74 let mut manager = Manager::load().unwrap_or_else(|e| {
58 eprintln!("{e}"); 75 eprintln!("{e}");
59 Manager::default() 76 Manager::default()