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        // LOGIKA NAZWY PLIKU
19        let out_file = if doc_task.suffix_stamp {
20            format!("{}__{}.md", doc_task.output_filename, stamp)
21        } else {
22            format!("{}.md", doc_task.output_filename)
23        };
24
25        let out_path = format!("{}/{}", output_dir, out_file);
26
27        // 1. Zbieramy ścieżki
28        let paths = filespath(&doc_task.tasks);
29
30        // 2. Generowanie tekstu drzewa
31        let tree_text = if doc_task.insert_tree != "with-out" {
32            //  używamy konfiguracji wbudowanej w zadanie!
33            let tree_nodes =
34                filestree(paths.clone(), doc_task.insert_tree, &doc_task.weight_config);
35            let txt = plotfiles_txt(&tree_nodes, "", None);
36            Some(txt)
37        } else {
38            None
39        };
40
41        // 3. Nadajemy identyfikatory
42        let id_map = generate_ids(&paths);
43
44        // 4. Przekazujemy styl ID do funkcji zapisu
45        write_md(
46            &out_path,
47            &paths,
48            &id_map,
49            tree_text,
50            doc_task.id_style,
51            doc_task.watermark,
52            &doc_task.command_str,
53            &stamp,
54            doc_task.suffix_stamp,
55            doc_task.title_file,
56            doc_task.title_file_with_path,
57        )?;
58
59        // Możemy wydrukować info o POJEDYNCZYM wygenerowanym pliku
60        println!(" [+] Wygenerowano raport: {}", out_path);
61    }
62
63    Ok(())
64}