Documentation

Note on documentation generation.

Tooling

  • mkdocs to generate web site
  • pydocmd (based on mkdocs) to generate API doc from docstyle
  • pyreverse to generate uml diagram

Documentation folder

under mkdocs folder:

  • 'docs' which keep handle writed doc file,
  • 'docs/api' api generated files folder
  • 'docs/uml' uml gererated diagrams folder
  • 'mkdocs.yaml': configuration file for mkdocs tool

Makefile targets

Main target: 'docs'

  • call 'mkdocs-site':
    • call 'mkdocs-uml': Generate UML Diagram
    • call 'mkdocs-api': Generate API documentation
    • call 'mkdocs-md': Copy standard document
    • Build web site with mkdocs tool
    • move generated website content into '/docs' folder in order to expose with github page project

Cleaning target: '.clean-docs' - Remove all temp files

Extract from Makefile

DOCS_PATH := mkdocs/docs
SITE_PATH := mkdocs/site

mkdocs-uml: $(DOCS_PATH)/uml ## Generate UML Diagram
$(DOCS_PATH)/uml: $(MODULES)
    @ mkdir -p $(DOCS_PATH)/uml
    @ $(RUN) pyreverse $(PACKAGE) -p $(PACKAGE) -a 1 -f ALL -o png --ignore tests
    @ mv -f packages_$(PACKAGE).png $(DOCS_PATH)/uml/packages.png
    @ mv -f classes_$(PACKAGE).png $(DOCS_PATH)/uml/classes.png


mkdocs-api: $(DOCS_PATH)/api ## Generate API documentation
$(DOCS_PATH)/api: $(MODULES)
    @ mkdir -p $(DOCS_PATH)/api
    @ cd $(DOCS_PATH)/api; \
        PYTHONPATH=$(shell pwd); \
        $(RUN) pydocmd simple $(PACKAGE)+ > index.md
# Add here all other package generation
# PYTHONPATH=$(shell pwd) is a workaround to https://github.com/NiklasRosenstein/pydoc-markdown/issues/30


MK_FILES = $(DOCS_PATH)/index.md $(DOCS_PATH)/license.md $(DOCS_PATH)/changelog.md $(DOCS_PATH)/code_of_conduct.md

mkdocs-md: $(MK_FILES) # Copy standard document
$(DOCS_PATH)/index.md: README.md
    @ cp -f README.md $(DOCS_PATH)/index.md
$(DOCS_PATH)/license.md: LICENSE.md
    @ cp -f LICENSE.md $(DOCS_PATH)/license.md
$(DOCS_PATH)/changelog.md: CHANGELOG.md
    @ cp -f CHANGELOG.md $(DOCS_PATH)/changelog.md
$(DOCS_PATH)/code_of_conduct.md: CODE_OF_CONDUCT.md
    @ cp -f CODE_OF_CONDUCT.md $(DOCS_PATH)/code_of_conduct.md

mkdocs-site: mkdocs/mkdocs.yml mkdocs-uml mkdocs-api mkdocs-md ## Build Documentation Site
    @ cd mkdocs; \
      $(RUN) mkdocs build
    @ rm -rf docs/
    @ mv mkdocs/site docs/  

.clean-docs: ## remove all generated files
    @ rm -rf mkdocs/site
    @ rm -rf $(DOCS_PATH)/uml
    @ rm -rf $(DOCS_PATH)/api
    @ rm -rf $(DOCS_PATH)/index.md
    @ rm -rf $(DOCS_PATH)/license.md
    @ rm -rf $(DOCS_PATH)/changelog.md
    @ rm -rf $(DOCS_PATH)/code_of_conduct.md

docs: mkdocs-site ## Generate documentation and UML