notez 0.1.1

A zero-dependency CLI to-do manager in pure rust
use std::{env, io};

use crate::add;
use crate::complete;
use crate::delete;
use crate::list;

pub fn matching() -> io::Result<()> {
    let arg: Vec<String> = env::args().skip(1).collect();

    if arg.is_empty() {
        eprintln!("Please provide a command: add, list, complete, or delete");
        return Ok(());
    }

    match arg[0].as_str() {
        "add" => {
            if arg.len() > 1 {
                add::writing_tasks(arg[1..].join(" "))?;
                println!("{}", list::list_tasks().expect("error"));
            } else {
                eprintln!("Please provide the tasks to add")
            };
        }
        "list" => {
            let content = list::list_tasks()?;
            for (index, value) in content.lines().filter(|x| !x.trim().is_empty()).enumerate() {
                println!("{:<3} {}", index + 1, value.trim());
            }
        }
        "complete" => {
            if arg.len() > 1 {
                complete::complete(arg[1].clone())?;
                println!("{}", list::list_tasks().expect("Complete ran into trouble"));
            } else {
                eprintln!("Please enter the task number");
            }
        }
        "delete" => {
            if arg.len() > 1 {
                delete::delete(arg[1].clone())?;
                println!("{}", list::list_tasks().expect("delete ran into trouble"));
            } else {
                eprintln!(
                    r#"Please give proper command\n such as following:\n "bare_tasker delete 1" "#
                )
            }
        }
        _ => {
            eprintln!("Invalid command");
        }
    };

    Ok(())
}