Skip to main content

A plugin to generate a summary of a ADR directory

Project description

mkdocs-macros-adr-summary

Static Badge Stable Version stability-beta

Python tests Maintainability Code Coverage

Checked with mypy Code style: black Ruff security: bandit

This is a macro plugin to generates summaries from a list of a ADR documents in a directory.

The single ADR documents file names have to respect this format: 0000-my-decision-title.md

  • start with 4 digits followed by the character -
  • the rest of the file name can contain only letters, numbers, dashes and underscores ([A-Za-z0-9_-] regex)
  • end with the .md extension

Examples and documentation can be found here

The package should be stable enough for daily use. I'll release 1.0.0, and switch to semantic version, as soon as support for MADR version 2 has been implemented. Until that breaking changes can be introduced and will be documented in the GitHub release description.

Quick start

Enable the plugin in mkdocs.yml

plugins:
  - macros:
      modules:
        - mkdocs_macros_adr_summary

Create a markdown page in your mkdocs website and use the adr_summary macro providing the path containing your ADR files relative to the mkdocs.yml file.

{{ adr_summary(adr_path="docs/adr", adr_style="nygard") }}

adr_style can be nygard, MADR2, MADR3, or MADR4

More customization

The page output is generated using a jinja template, but you can provide a custom one. The file path must still be relative to the mkdocs.yml file.

{{ adr_summary(adr_path="docs/adr", adr_style="MADR3",m) }}

The default template is:

| ID | Date | Decision | Status |
|----|------|----------|--------|
{% for d in documents %}| {{ d.document_id }} | {{ d.date.strftime('%d-%m-%Y') if d.date else "-"}} | [{{ d.title }}]({{ d.file_path }}) | {{ d.status }}  |
{% endfor %}

The documents variable in the jinja template is a Sequence of ADRDocument models:

@dataclass
class ADRDocument:
    file_path: str
    document_id: Optional[int] = None
    title: Optional[str] = None
    date: Optional[date] = None
    status: Optional[str] = None
    statuses: Sequence[str] = tuple()
    deciders: Optional[str] = None
    consulted: Optional[str] = None
    informed: Optional[str] = None

There are some differences in what metadata is available when using different formats:

Nygard MADR4 MADR3 MADR2
file_path ✅︎ ✅︎ ✅︎ ✅︎
title ✅︎ ✅︎ ✅︎ ✅︎
date ✅︎ ✅︎ ✅︎ ✅︎
status ✅︎ ✅︎ ✅︎
statuses ✅︎
deciders ✅︎ ✅︎ ✅︎
consulted ✅︎ ✅︎
informed ✅︎ ✅︎
  • Nygard format
    • status is the last item statuses. (I don't believe we should use multiple statuses, however adr-tools allows it)
    • deciders, consulted and informed are not supported by the format
  • MADR2, MADR3, and MADR4
    • I wasn't able to find an automated tool supporting superseding documents. By looking at the template it looks like there's a single status. statuses will return a list with a single status.
    • MADR4 uses decision-makers instead of deciders in the YAML frontmatter, but the parser maps it to the deciders field in the document model

Supported ADR formats

The supported ADR formats are:

Commands for development

All the common commands used during development can be run using make targets:

  • make dev-dependencies: Install dev requirements
  • make test: Run test suite
  • make check: Run tests, code style and lint checks
  • make fix: Run code style and lint automatic fixes (where possible)
  • make docs: Render the mkdocs website locally

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mkdocs_macros_adr_summary-1.3.0.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mkdocs_macros_adr_summary-1.3.0-py3-none-any.whl (21.7 kB view details)

Uploaded Python 3

File details

Details for the file mkdocs_macros_adr_summary-1.3.0.tar.gz.

File metadata

File hashes

Hashes for mkdocs_macros_adr_summary-1.3.0.tar.gz
Algorithm Hash digest
SHA256 cfcd4143cbad3ad9a3a008237365dd95b2734a9c27ca84a006d0dcb476421d1a
MD5 b696caacd1390ce3707d6df4a5f9bc0b
BLAKE2b-256 9577fe7985452ecb26ed5898310ead5cf910d930e175b90dc285ba44b3ab3d21

See more details on using hashes here.

Provenance

The following attestation bundles were made for mkdocs_macros_adr_summary-1.3.0.tar.gz:

Publisher: release.yml on febus982/mkdocs-macros-adr-summary

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mkdocs_macros_adr_summary-1.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mkdocs_macros_adr_summary-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4d054860242e80da91009c882133e72d18a251e45af64239ecdfdeb267f216d3
MD5 9615ce987a982d7f9e8e64ee1c94309d
BLAKE2b-256 a0c0b3d6d64ea7e40b10a02f659ba32fcb25c722ff705624e576556b2625a1b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for mkdocs_macros_adr_summary-1.3.0-py3-none-any.whl:

Publisher: release.yml on febus982/mkdocs-macros-adr-summary

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page