Skip to main content

clapdocs/generator/
mod.rs

1mod attr_parser;
2mod command_tree;
3mod extraction;
4mod model_parsed;
5mod render_types;
6mod source_analysis;
7mod type_helper;
8mod utils;
9
10pub mod model_command;
11
12use std::path::Path;
13
14use self::source_analysis::analyze_project_source;
15use self::utils::read_binary_name;
16
17#[cfg(feature = "markdown")]
18pub fn generate_docs(
19    project_path: &Path,
20    readme_path: &Path,
21    start_marker: &str,
22    end_marker: &str,
23) -> Result<(), String> {
24    let binary_name = read_binary_name(project_path)?;
25    let command_tree = analyze_project_source(project_path, &binary_name)?;
26    let markdown = render_types::markdown::render(&command_tree);
27
28    utils::update_readme(readme_path, &markdown, start_marker, end_marker)
29}
30
31#[cfg(feature = "jenkins")]
32pub fn generate_jenkins(
33    project_path: &Path,
34    output_dir: &Path,
35    package_name: &str,
36    json_output: bool,
37) -> Result<(), String> {
38    let binary_name = read_binary_name(project_path)?;
39    let command_tree = analyze_project_source(project_path, &binary_name)?;
40
41    render_types::jenkins_library::render(&command_tree, output_dir, package_name, json_output)
42}