Skip to main content

lib/
fn_doc_gen.rs

1use crate::fn_datestamp::datestamp_now;
2use crate::fn_doc_id::generate_ids;
3use crate::fn_doc_models::DocTask;
4use crate::fn_doc_write::write_md;
5use crate::fn_filespath::filespath;
6use crate::fn_filestree::filestree;
7use crate::fn_plotfiles::plotfiles_txt;
8use std::fs;
9use std::io;
10
11pub fn generate_docs(doc_tasks: Vec<DocTask>, output_dir: &str) -> io::Result<()> {
12    fs::create_dir_all(output_dir)?;
13
14    for doc_task in doc_tasks {
15        // Generujemy jeden wspólny znacznik czasu dla zadania
16        let stamp = datestamp_now();
17
18        // Budujemy nazwę pliku np. "code__2026Q1D068W11_Mon09Mar_212719746.md"
19        let out_file = format!("{}__{}.md", doc_task.output_filename, stamp);
20        let out_path = format!("{}/{}", output_dir, out_file);
21
22        // 1. Zbieramy ścieżki
23        let paths = filespath(&doc_task.tasks);
24
25        // 2. Generowanie tekstu drzewa
26        let tree_text = if doc_task.insert_tree != "with-out" {
27            let tree_nodes = filestree(paths.clone(), doc_task.insert_tree);
28            let txt = plotfiles_txt(&tree_nodes, "", None);
29            Some(txt)
30        } else {
31            None
32        };
33
34        // 3. Nadajemy identyfikatory
35        let id_map = generate_ids(&paths);
36
37        // 4. Przekazujemy styl ID do funkcji zapisu
38        write_md(
39            &out_path,
40            &paths,
41            &id_map,
42            tree_text,
43            &stamp,
44            doc_task.id_style,
45        )?;
46
47        // Możemy wydrukować info o POJEDYNCZYM wygenerowanym pliku
48        println!(" [+] Wygenerowano raport: {}", out_path);
49    }
50
51    Ok(())
52}