// src/main.rs

mod cli;
mod manip;

use glob::glob;
use manip::{Limit, LimitList, MergedLimitList};

fn main() -> std::io::Result<()> {
    env_logger::init(); // TODO add more logging & actual error handling

    // TODO utilize CLI
    // let _cli = cli::Cli::parse();

    // TODO parse config file if one is provided

    let mut merged_list = MergedLimitList::new();

    // Crawl /suspend for suspend lists -> glob pattern: "suspend/**/*.txt"
    {
        let mut suspend_lists = vec![];
        let suspend_paths = glob("suspend/**/*.txt").expect("Bad glob pattern");

        for path in suspend_paths.filter_map(|x| x.ok()) {
            suspend_lists.extend(LimitList::from_file(path));
            // TODO Check if path contains trust value as part of filename when building limitlist
        }

        for list in suspend_lists {
            merged_list.add_limit_list(list, Limit::Suspend);
        }
    }

    // Crawl /silence for silence lists -> glob pattern: "silence/**/*.txt"
    {
        let mut silence_lists = vec![];
        let silence_paths = glob("silence/**/*.txt").expect("Bad glob pattern");

        for path in silence_paths.filter_map(|x| x.ok()) {
            silence_lists.extend(LimitList::from_file(path));
            // TODO Check if path contains trust value as part of filename when building limitlist
        }

        for list in silence_lists {
            merged_list.add_limit_list(list, Limit::Silence);
        }
    }

    merged_list.export_file("suspend.txt", "silence.txt", (50, 33))
}