Updated docs generation scripts
This commit is contained in:
12
Makefile
12
Makefile
@@ -103,10 +103,14 @@ document_test_cases: test_diagrams
|
|||||||
python3 util/format_svg.py docs/test_cases/*.svg
|
python3 util/format_svg.py docs/test_cases/*.svg
|
||||||
|
|
||||||
clanguml_diagrams: debug
|
clanguml_diagrams: debug
|
||||||
mkdir -p docs/diagrams
|
mkdir -p docs/diagrams/plantuml
|
||||||
debug/src/clang-uml -g plantuml -g json -p
|
mkdir -p docs/diagrams/mermaid
|
||||||
plantuml -tsvg -nometadata docs/diagrams/*.puml
|
debug/src/clang-uml -g plantuml -g json -g mermaid -p
|
||||||
python3 util/format_svg.py docs/diagrams/*.svg
|
# Convert .puml files to svg images
|
||||||
|
plantuml -tsvg -nometadata -o plantuml docs/diagrams/*.puml
|
||||||
|
# Convert .mmd files to svg images
|
||||||
|
python3 util/generate_mermaid.py docs/diagrams/*.mmd
|
||||||
|
python3 util/format_svg.py docs/diagrams/plantuml/*.svg
|
||||||
|
|
||||||
.PHONY: submodules
|
.PHONY: submodules
|
||||||
submodules:
|
submodules:
|
||||||
|
|||||||
@@ -124,6 +124,10 @@ void generate_diagram_impl(const std::string &od, const std::string &name,
|
|||||||
generate_diagram_select_generator<diagram_config,
|
generate_diagram_select_generator<diagram_config,
|
||||||
json_generator_tag>(od, name, diagram, model);
|
json_generator_tag>(od, name, diagram, model);
|
||||||
}
|
}
|
||||||
|
else if (generator_type == generator_type_t::mermaid) {
|
||||||
|
generate_diagram_select_generator<diagram_config,
|
||||||
|
mermaid_generator_tag>(od, name, diagram, model);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} // namespace detail
|
} // namespace detail
|
||||||
|
|||||||
@@ -254,18 +254,24 @@ void generator<C, D>::generate_link(std::ostream &ostr, const E &e) const
|
|||||||
|
|
||||||
ostr << indent(1) << "click " << e.alias() << " href \"";
|
ostr << indent(1) << "click " << e.alias() << " href \"";
|
||||||
try {
|
try {
|
||||||
|
std::string link{};
|
||||||
if (!config.generate_links().link.empty()) {
|
if (!config.generate_links().link.empty()) {
|
||||||
ostr << env().render(std::string_view{config.generate_links().link},
|
link = env().render(std::string_view{config.generate_links().link},
|
||||||
element_context(e));
|
element_context(e));
|
||||||
}
|
}
|
||||||
|
if (link.empty())
|
||||||
|
link = " ";
|
||||||
|
ostr << link;
|
||||||
}
|
}
|
||||||
catch (const inja::json::parse_error &e) {
|
catch (const inja::json::parse_error &e) {
|
||||||
LOG_ERROR(
|
LOG_ERROR(
|
||||||
"Failed to parse Jinja template: {}", config.generate_links().link);
|
"Failed to parse Jinja template: {}", config.generate_links().link);
|
||||||
|
ostr << " ";
|
||||||
}
|
}
|
||||||
catch (const inja::json::exception &e) {
|
catch (const inja::json::exception &e) {
|
||||||
LOG_ERROR("Failed to render PlantUML directive: \n{}\n due to: {}",
|
LOG_ERROR("Failed to render comment directive: \n{}\n due to: {}",
|
||||||
config.generate_links().link, e.what());
|
config.generate_links().link, e.what());
|
||||||
|
ostr << " ";
|
||||||
}
|
}
|
||||||
ostr << "\"";
|
ostr << "\"";
|
||||||
|
|
||||||
@@ -281,10 +287,12 @@ void generator<C, D>::generate_link(std::ostream &ostr, const E &e) const
|
|||||||
catch (const inja::json::parse_error &e) {
|
catch (const inja::json::parse_error &e) {
|
||||||
LOG_ERROR("Failed to parse Jinja template: {}",
|
LOG_ERROR("Failed to parse Jinja template: {}",
|
||||||
config.generate_links().link);
|
config.generate_links().link);
|
||||||
|
ostr << " ";
|
||||||
}
|
}
|
||||||
catch (const inja::json::exception &e) {
|
catch (const inja::json::exception &e) {
|
||||||
LOG_ERROR("Failed to render PlantUML directive: \n{}\n due to: {}",
|
LOG_ERROR("Failed to render PlantUML directive: \n{}\n due to: {}",
|
||||||
config.generate_links().link, e.what());
|
config.generate_links().link, e.what());
|
||||||
|
ostr << " ";
|
||||||
}
|
}
|
||||||
|
|
||||||
ostr << "\"";
|
ostr << "\"";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
type: include
|
type: include
|
||||||
glob:
|
glob:
|
||||||
- src/**/*.cc
|
- src/config/*.cc
|
||||||
relative_to: .
|
relative_to: .
|
||||||
include:
|
include:
|
||||||
paths:
|
paths:
|
||||||
|
|||||||
@@ -38,8 +38,11 @@ ok = 0
|
|||||||
for f in files:
|
for f in files:
|
||||||
try:
|
try:
|
||||||
print(f'Generating Mermaid diagram from {f}')
|
print(f'Generating Mermaid diagram from {f}')
|
||||||
f_svg = Path(f).with_suffix('.svg')
|
f_svg = Path(f).with_suffix('.svg').name
|
||||||
subprocess.check_call(['mmdc', '-i', f, '-o', f_svg])
|
target = Path(f).parent.absolute()
|
||||||
|
target = target.joinpath('mermaid')
|
||||||
|
target = target.joinpath(f_svg)
|
||||||
|
subprocess.check_call(['mmdc', '-i', f, '-o', target])
|
||||||
except subprocess.CalledProcessError:
|
except subprocess.CalledProcessError:
|
||||||
ok = 1
|
ok = 1
|
||||||
print(f'ERROR: Generating Mermaid diagram from {f} failed')
|
print(f'ERROR: Generating Mermaid diagram from {f} failed')
|
||||||
|
|||||||
@@ -71,20 +71,21 @@ with open(r'tests/test_cases.yaml') as f:
|
|||||||
config_dict = yaml.full_load(config)
|
config_dict = yaml.full_load(config)
|
||||||
tc.write("## Generated PlantUML diagrams\n")
|
tc.write("## Generated PlantUML diagrams\n")
|
||||||
for diagram_name, _ in config_dict['diagrams'].items():
|
for diagram_name, _ in config_dict['diagrams'].items():
|
||||||
copyfile(f'debug/tests/diagrams/puml/{diagram_name}.svg',
|
copyfile(f'debug/tests/diagrams/plantuml/{diagram_name}.svg',
|
||||||
f'docs/test_cases/{diagram_name}.svg')
|
f'docs/test_cases/{diagram_name}.svg')
|
||||||
tc.write(f'\n')
|
tc.write(f'\n')
|
||||||
|
|
||||||
tc.write("## Generated Mermaid diagrams\n")
|
tc.write("## Generated Mermaid diagrams\n")
|
||||||
for diagram_name, _ in config_dict['diagrams'].items():
|
for diagram_name, _ in config_dict['diagrams'].items():
|
||||||
copyfile(f'debug/tests/diagrams/mermaid/{diagram_name}.svg',
|
copyfile(f'debug/tests/diagrams/mermaid/{diagram_name}.svg',
|
||||||
f'docs/test_cases/{diagram_name}_mmd.svg')
|
f'docs/test_cases/{diagram_name}_mermaid.svg')
|
||||||
tc.write(f'\n')
|
tc.write(f'\n')
|
||||||
|
|
||||||
tc.write("## Generated JSON models\n")
|
tc.write("## Generated JSON models\n")
|
||||||
for diagram_name, _ in config_dict['diagrams'].items():
|
for diagram_name, _ in config_dict['diagrams'].items():
|
||||||
if os.path.exists(f'debug/tests/puml/{diagram_name}.json'):
|
jd = f'debug/tests/diagrams/{diagram_name}.json'
|
||||||
with open(f'debug/tests/puml/{diagram_name}.json') as f:
|
if os.path.exists(jd):
|
||||||
|
with open(jd) as f:
|
||||||
contents = f.read()
|
contents = f.read()
|
||||||
tc.write("```json\n")
|
tc.write("```json\n")
|
||||||
tc.write(contents)
|
tc.write(contents)
|
||||||
|
|||||||
Reference in New Issue
Block a user