devcleaner 0.1.2

A tool to search for node_modules an clean the projects selected
use std::path::PathBuf;

use crate::app::utilities::dir_size;

#[derive(Clone, PartialEq, Debug)]
pub struct Project {
    pub path: PathBuf,
    pub name: String,
    pub mark_for_deletion: bool,
    pub is_deleted: bool,
    pub size: u64,
}

impl Default for Project {
    fn default() -> Self {
        Project {
            path: PathBuf::new(),
            name: String::new(),
            mark_for_deletion: false,
            is_deleted: false,
            size: 0,
        }
    }
}

impl Project {
    pub fn new(path: PathBuf) -> Self {
        let name = path
            .parent()
            .unwrap()
            .file_name()
            .unwrap()
            .to_str()
            .unwrap()
            .to_string();
        let mut project = Project {
            path,
            name,
            mark_for_deletion: false,
            is_deleted: false,
            size: 0,
        };
        project.size = project.calculate_size();
        project
    }
    pub fn calculate_size(&self) -> u64 {
        dir_size(self.path.clone()).unwrap_or(0)
    }
}