rodu 0.1.3

Tiny Todo CLI To Add Task In Current Dir
Documentation
use core::panic;

use super::opts;
use super::utils;

#[derive(Debug)]
pub struct Task {
    option: opts::Opts,

    task: Option<String>,
}

impl Task {
    pub fn new(args: Vec<String>) -> Task {
        Task {
            option: opts::Opts::new(&args[0]),
            task: {
                if args.len() > 1 {
                    Some(format!(" {}\n", &args[1..].join(" ")))
                } else {
                    None
                }
            },
        }
    }

    pub fn is_meta(&self) -> bool {
        self.option.is_meta()
    }

    pub fn do_task(&self) {
        match self.option {
            opts::Opts::Add => self.add_task(),
            opts::Opts::Done => self.done_task(),
            opts::Opts::List => self.list_task(),
            _ => panic!("option Error"),
        }
    }

    fn list_task(&self) {
        if !utils::todo_exist() {
            println!("Sorry! You haven't configured todo yet.");
            println!("Please Enter todo to init firstly!")
        } else {
            utils::todo_list();
        }
    }

    fn done_task(&self) {
        if !utils::todo_exist() {
            println!("Sorry! You haven't configured todo yet.");
            println!("Please Enter todo to init firstly!")
        } else if let Some(task) = &self.task {
            utils::todo_done(task);
        }
    }

    fn add_task(&self) {
        if !utils::todo_exist() {
            utils::todo_init()
        }
        if let Some(task) = &self.task {
            utils::todo_add(task)
        }
    }
}