feat(docs): add Doxygen configuration and update .gitignore for documentation files

This commit is contained in:
HendrikRauh 2026-03-15 19:39:48 +01:00
parent a2d51540b7
commit fe6a1ab79b
4 changed files with 85 additions and 0 deletions

3
.gitignore vendored
View file

@ -52,6 +52,9 @@ venv*/
*.tmp
*.bak
# Documentation
docs/doxygen/*
# Misc
*.local

61
Doxyfile Normal file
View file

@ -0,0 +1,61 @@
PROJECT_NAME = "DMX-Interface"
PROJECT_BRIEF = "ChaosDMX"
OUTPUT_DIRECTORY = docs/doxygen
# Input settings
INPUT = main \
components \
data \
README.md
FILE_PATTERNS = *.c *.h *.cpp *.hpp *.md *.py *.js *.css *.html
RECURSIVE = YES
EXCLUDE_PATTERNS = */build/* \
*/managed_components/*
USE_MDFILE_AS_MAINPAGE = README.md
# Documentation settings
GENERATE_LATEX = NO
GENERATE_HTML = YES
# doxygen-awesome-css settings
HTML_EXTRA_STYLESHEET = docs/external/doxygen-awesome-css/doxygen-awesome.css \
docs/external/doxygen-awesome-css/doxygen-awesome-sidebar-only.css
HTML_EXTRA_FILES = docs/external/doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js \
docs/external/doxygen-awesome-css/doxygen-awesome-fragment-copy-button.js \
docs/external/doxygen-awesome-css/doxygen-awesome-paragraph-link.js \
docs/external/doxygen-awesome-css/doxygen-awesome-interactive-toc.js \
docs/external/doxygen-awesome-css/doxygen-awesome-tabs.js
# Custom header for JS integration
# Better HTML output
HTML_COLORSTYLE = LIGHT
GENERATE_TREEVIEW = YES
DISABLE_INDEX = NO
FULL_SIDEBAR = NO
# Extraction settings
EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
# Graphviz / Dot settings
HAVE_DOT = YES
DOT_IMAGE_FORMAT = svg
INTERACTIVE_SVG = YES
DOT_FONTNAME = Helvetica
DOT_FONTSIZE = 10
# Graphs to generate
CALL_GRAPH = YES
CALLER_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES

View file

@ -30,6 +30,8 @@
pkgs.prettier
pkgs.nixfmt
pkgs.doxygen
pkgs.graphviz
];
};
};

View file

@ -149,3 +149,22 @@ def format_check(c):
sys.exit(1)
print("\n✅ All files are correctly formatted!")
@task(help={"o": "Open documentation in the default browser after generation."})
def docs(c, o=False):
"""Generate Doxygen documentation."""
task_begin("docs", "Docs")
proc = subprocess.run("doxygen Doxyfile", shell=True)
if proc.returncode == 0:
task_end("docs", "done", "Docs generated")
path = "docs/doxygen/html/index.html"
console.print(
f"\n[bold green]✓ Documentation generated in {path}[/bold green]"
)
if o:
import webbrowser
webbrowser.open(f"file://{os.path.abspath(path)}")
return
task_end("docs", "failed", "Doxygen failed")
raise Exit(code=1)