kairo-tree 0.0.1

Display a repository like tree
use std::{
    fs::{self},
    io::Error,
};
fn display_tree(dir: &str, prefix: &str) -> Result<(), Error> {
    if !dir.contains(".git") && !dir.contains(".chronos") && !dir.contains("target") {
        if let Ok(entries) = fs::read_dir(dir) {
            let entries_vec: Vec<_> = entries.collect();
            for (i, entry) in entries_vec.iter().enumerate() {
                if let Ok(entry) = entry {
                    let path = entry.path();
                    let is_last = i == entries_vec.len() - 1;

                    if is_last {
                        println!("{}└── {}", prefix, entry.file_name().to_string_lossy());
                    } else {
                        println!("{}├── {}", prefix, entry.file_name().to_string_lossy());
                    }
                    if path.is_dir() {
                        let new_prefix = if is_last {
                            format!("{}    ", prefix)
                        } else {
                            format!("{}", prefix)
                        };
                        let _ = display_tree(path.to_str().unwrap(), &new_prefix);
                    }
                }
            }
        }
    }
    Ok(())
}

fn main() -> Result<(), Error> {
    display_tree(".", "")
}