Skip to main content

notem/
dir.rs

1use std::fs;
2use std::io;
3use std::path::PathBuf;
4
5fn search_term(args: &[String]) -> String {
6    args.iter()
7        .map(|x| x.to_lowercase())
8        .collect::<Vec<String>>()
9        .join("-")
10}
11
12pub fn list_notes(path: &PathBuf) -> io::Result<()> {
13    read_notes_dir(path)
14        .iter()
15        .for_each(|entry| println!("{}", entry.path().display()));
16    Ok(())
17}
18
19pub fn search_notes(path: &PathBuf, args: &[String]) -> io::Result<()> {
20    let search = search_term(args);
21
22    read_notes_dir(path)
23        .iter()
24        .filter(|entry| entry.file_name().into_string().unwrap().contains(&search))
25        .for_each(|entry| println!("{}", entry.path().display()));
26
27    Ok(())
28}
29
30pub fn print_notes(path: &PathBuf, args: &[String]) -> io::Result<()> {
31    let search = search_term(args);
32    read_notes_dir(path)
33        .iter()
34        .filter(|entry| entry.file_name().into_string().unwrap().contains(&search))
35        .for_each(|entry| {
36            let contents =
37                fs::read_to_string(entry.path()).expect("Something went wrong reading the file");
38            println!("{}", contents);
39        });
40
41    Ok(())
42}
43
44fn read_notes_dir(path: &PathBuf) -> Vec<fs::DirEntry> {
45    fs::read_dir(path).unwrap().map(|e| e.unwrap()).collect()
46}