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 let stamp = datestamp_now();
17
18 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 let paths = filespath(&doc_task.tasks);
29
30 let tree_text = if doc_task.insert_tree != "with-out" {
32 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 let id_map = generate_ids(&paths);
43
44 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 println!(" [+] Wygenerowano raport: {}", out_path);
61 }
62
63 Ok(())
64}