4 use std::io::{self, BufReader};
5 use std::io::prelude::*;
8 pub fn run(config: Config) -> Result<(), Box<dyn error::Error>> {
10 let paths = fs::read_dir(config.dir_path).unwrap();
13 let path_str = &path.unwrap().path().display().to_string();
14 let md = std::fs::metadata(path_str).unwrap();
16 let result = search(&config.tag, path_str);
18 println!("{}", path_str);
32 pub fn new(args: &[String]) -> Result<Config, &'static str> {
35 return Err("Not enough arguments");
38 let tag = args[1].clone();
39 let dir_path = args[2].clone();
41 Ok(Config {tag , dir_path})
46 fn search<'a>(query: &str, path: &'a str) -> io::Result<bool> {
47 let mut result = false;
49 let f = fs::File::open(path)?;
50 let f = BufReader::new(f);
52 let start_sequence = &env::var("TAG_FIND_START_SEQUENCE").unwrap_or("#".to_string());
54 for line in f.lines() {
55 let line_str = line.unwrap();
56 if line_str.starts_with(start_sequence) && line_str.contains(query) {