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 = format!("{}__{}.md", doc_task.output_filename, stamp);
20 let out_path = format!("{}/{}", output_dir, out_file);
21
22 let paths = filespath(&doc_task.tasks);
24
25 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 let id_map = generate_ids(&paths);
36
37 write_md(
39 &out_path,
40 &paths,
41 &id_map,
42 tree_text,
43 &stamp,
44 doc_task.id_style,
45 )?;
46
47 println!(" [+] Wygenerowano raport: {}", out_path);
49 }
50
51 Ok(())
52}