CLI-first FileMaker DDR extraction and analysis toolkit
Project description
ddr-docs
ddr-docs is a CLI-first Python toolkit for turning FileMaker DDR XML into structured docs, JSON artifacts, and analysis outputs that work well for humans, agents, and downstream tooling.
FM2Web still includes a desktop/Tauri app, but the Python package and CLI are the primary interface in this repo.
Install
Recommended: pipx
Install the CLI in its own environment:
pipx install ddr-docs
If you want the analyzer-powered commands too, install the analyzer extra:
pipx install 'ddr-docs[analyzer]'
Standard pip
Inside a virtualenv:
python -m pip install ddr-docs
# or, with analyzer commands
python -m pip install 'ddr-docs[analyzer]'
From a local checkout
python -m pip install -e .
# or
python -m pip install -e '.[analyzer,dev]'
Quick start
1) Generate extracted docs from a DDR XML file
ddr-docs generate /path/to/file.ddr.xml -o ./out/ddr-run
That produces a run directory with JSON, Markdown, diagrams, reports, and a manifest.
2) Run the agent-friendly end-to-end analysis flow
ddr-docs analyze full-analysis \
--input /path/to/file.ddr.xml \
--output-dir ./out/full-analysis \
--sqlite-path ./out/full-analysis/fm2web.sqlite3
This runs extraction, ingests into SQLite, then writes analysis JSON under analysis/, including:
analysis/user_flows_entry_points.jsonanalysis/user_flows_journeys/*.jsonanalysis/cruft_summary.jsonanalysis/feature_clusters.jsonanalysis/analysis_manifest.json
CLI overview
ddr-docs --help
ddr-docs generate --help
ddr-docs analyze --help
ddr-docs analyze full-analysis --help
ddr-docs generate
Core extraction pipeline.
ddr-docs generate /path/to/file.ddr.xml \
--output ./out/run \
--persist-sqlite \
--sqlite-path ./out/run/fm2web.sqlite3
Useful options:
--output/-o, output run directory--domain, comma-separated extraction domains--start-from, restart from a later pipeline stage--stop-after, stop at a specific stage--persist-sqlite, write extracted artifacts into SQLite--sqlite-path, choose the SQLite path--no-index, skip search index generation--strict, fail on validation/parsing issues
ddr-docs analyze full-analysis
This is the highest-leverage command when you want one run that leaves behind structured artifacts for review, automation, or agent workflows.
ddr-docs analyze full-analysis \
--input /path/to/file.ddr.xml \
--output-dir ./out/full-analysis \
--sqlite-path ./out/full-analysis/fm2web.sqlite3 \
--journey-depth 6
Behavior:
- runs the extraction pipeline
- ingests the run into SQLite
- generates journey/entry-point analysis
- generates cruft analysis
- generates feature-cluster analysis
- writes an analysis manifest summarizing outputs
Key options:
--input, DDR XML source file--output-dir/-o, target run directory--sqlite-path, explicit SQLite database path--embeddings/--no-embeddings, control embedding generation--journey-depth, traversal depth for journey mapping--verbose, print step-by-step progress
Seeding one or more layout entry points
By default, full-analysis auto-detects entry points from menu scripts and layouts.
If you already know the layouts you want to analyze, provide one or more --entry-point-layout flags:
ddr-docs analyze full-analysis \
--input /path/to/file.ddr.xml \
--output-dir ./out/mobile-analysis \
--entry-point-layout 'Home iPhone' \
--entry-point-layout 'Settings iPhone'
Repeatable flags are the preferred interface.
For backward compatibility, comma-separated values still work too:
ddr-docs analyze full-analysis \
--input /path/to/file.ddr.xml \
--output-dir ./out/mobile-analysis \
--entry-point-layout 'Home iPhone, Settings iPhone'
When --entry-point-layout is provided, those requested layouts override auto-detected journey entry points. Matching layouts are recorded in analysis/user_flows_entry_points.json, and journeys are generated for the resolved layouts.
Other analysis commands
List analyzer surfaces:
ddr-docs analyze --help
Examples:
ddr-docs analyze journeys --sqlite-path ./out/run/fm2web.sqlite3
ddr-docs analyze journeys --sqlite-path ./out/run/fm2web.sqlite3 --from 'Home'
ddr-docs analyze cruft --extracted-docs ./out/run/json
ddr-docs analyze features --sqlite-path ./out/run/fm2web.sqlite3
ddr-docs analyze flows --sqlite-path ./out/run/fm2web.sqlite3 --field 'Contacts::Email'
Output structure
Typical run output includes:
json/, canonical extraction artifactsdocs/, rendered Markdown docsdiagrams/, relationship diagramsindex/, search index artifactsreports/, coverage and warning reportsmanifest.json, run metadataanalysis/, higher-level analysis JSON fromfull-analysis
Desktop app, still available
The repo also contains a Tauri desktop app in desktop/ for local/offline usage. That is now secondary to the Python package and CLI.
If you specifically need the desktop app, see:
desktop/desktop/BACKEND_BUNDLE.md
Development
Run focused tests:
python -m pytest tests/test_cli_full_analysis.py tests/test_cli_optional_deps.py
Build package artifacts locally:
python -m pip install --upgrade build twine
python -m build
python -m twine check dist/*
Repository layout
ddr_docs/, CLI and extraction pipelineanalyzer/, SQLite-backed analysis services and APIdesktop/, optional Tauri desktop appui/, Streamlit UItests/, automated tests
License
MIT
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ddr_docs-0.2.0.tar.gz.
File metadata
- Download URL: ddr_docs-0.2.0.tar.gz
- Upload date:
- Size: 353.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce379a0cb1ef79552ac9664f99dba5a1e6be4791eb050e6272ac1a675b2010d2
|
|
| MD5 |
127e133837b4723c0b887124ba3b8b06
|
|
| BLAKE2b-256 |
5994b5e83b467979ad4505c119291c08e83dc2a5ab8af8d3a44a33d76fa60ad5
|
File details
Details for the file ddr_docs-0.2.0-py3-none-any.whl.
File metadata
- Download URL: ddr_docs-0.2.0-py3-none-any.whl
- Upload date:
- Size: 380.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d43b047ffba809ac04a3ca7b89798cab88eeb4e1d859faa54865cd84f5dfa8fa
|
|
| MD5 |
f9645a06750cfd61096569dad1a511a6
|
|
| BLAKE2b-256 |
87dbb4874f9310c2acaaa3eefe2800faf19a1c2c20d0a7d0927a9e7115897287
|