docgen graphgen ui and converging update
This commit is contained in:
@@ -78,7 +78,7 @@
|
||||
docgen is the one answer. It reads the source rather than being told about it,
|
||||
so a diagram cannot drift from the thing it describes, and it separates
|
||||
<em>what a graph is</em> from <em>how it looks</em> so one extraction feeds
|
||||
a diagram, an index, a notebook and a browsable site without being redone.
|
||||
a diagram, an index, a notebook and a browsable minisite without being redone.
|
||||
</p>
|
||||
|
||||
<div class="note">
|
||||
@@ -131,7 +131,7 @@ make check BOOK=out/book/mine</code></pre>
|
||||
<pre><code> larder /path/to/repo — 45 files read, 2 failed, 12 packages
|
||||
book 312 nodes · 244 edges · 26 external · 8 artifacts
|
||||
ok 45 file(s) read produced 45 module(s)
|
||||
open out/book/mine/site/index.html</code></pre>
|
||||
open out/book/mine/minisite/index.html</code></pre>
|
||||
|
||||
<p>
|
||||
Underneath it is three commands that compose, and each still works on its own.
|
||||
@@ -151,7 +151,7 @@ python3 -m docgen emit auto view.json -o out/</code></pre>
|
||||
|
||||
<pre><code>make ir SRC=/path/to/repo OUT=out <span class="c"># extract</span>
|
||||
make explore OUT=out <span class="c"># the two-pane navigator</span>
|
||||
make site OUT=out <span class="c"># a docs site with a sidebar</span>
|
||||
make minisite OUT=out <span class="c"># a one-page site with a sidebar</span>
|
||||
make self <span class="c"># docgen's book of soleprint, then check it</span></code></pre>
|
||||
|
||||
<p>
|
||||
@@ -163,7 +163,7 @@ make self <span class="c"># docgen's book of soleprint
|
||||
<h2 id="first">Your first project</h2>
|
||||
|
||||
<p>
|
||||
From nothing to a notebook and a site for a project of yours, with your own text
|
||||
From nothing to a notebook and a minisite for a project of yours, with your own text
|
||||
in the right places. docgen lives in its own folder, and the project only gets one
|
||||
config file and, later, a folder of notes.
|
||||
</p>
|
||||
@@ -195,8 +195,8 @@ ext = [".cs"]
|
||||
[emit.notebook]
|
||||
output = "../docs_out/orders_service_notebook"
|
||||
|
||||
[emit.site]
|
||||
output = "../docs_out/orders_service_site"</code></pre>
|
||||
[emit.minisite]
|
||||
output = "../docs_out/orders_service_minisite"</code></pre>
|
||||
|
||||
<p>
|
||||
Paths are relative to this file. Keep the outputs outside the source tree. See
|
||||
@@ -231,7 +231,7 @@ python3 -m docgen scaffold docgen.toml <span class="c"># or: write an e
|
||||
<p>
|
||||
Pick a spot and write markdown into <code>notes/<book>/<spot>.md</code>,
|
||||
for example <code>notes/code/overview.md</code> above the overview page. Rebuild
|
||||
and it's there, in the notebook and on the site. Stubs you leave empty add
|
||||
and it's there, in the notebook and on the minisite. Stubs you leave empty add
|
||||
nothing.
|
||||
</p>
|
||||
|
||||
@@ -474,7 +474,7 @@ python3 -m docgen scaffold docgen.toml <span class="c"># or: write an e
|
||||
├── notebook.ipynb <span class="c">the sequence; first and last cells are the measures</span>
|
||||
├── overlay.json <span class="c">hand-written, optional, re-applied every build</span>
|
||||
├── checks.py <span class="c">this book's own assertions — optional</span>
|
||||
└── site/ <span class="c">the web output, both measures at the top</span></code></pre>
|
||||
└── minisite/ <span class="c">the web output, both measures at the top</span></code></pre>
|
||||
|
||||
<pre><code>make book SRC=../station BOOK=out/book/station
|
||||
make check BOOK=out/book/station</code></pre>
|
||||
@@ -726,7 +726,7 @@ python3 -m docgen view ir.json --shape <span class="c"># what will this
|
||||
<tr><td><code>erd</code></td><td>SVG, written directly</td><td>a schema, as cards</td></tr>
|
||||
<tr><td><code>minimap</code></td><td>SVG, written directly</td><td>what is where, at a glance</td></tr>
|
||||
<tr><td><code>notebook</code></td><td><code>.ipynb</code></td><td>a runnable walkthrough</td></tr>
|
||||
<tr><td><code>site</code></td><td>a static docs site</td><td>reading</td></tr>
|
||||
<tr><td><code>minisite</code></td><td>a static docs site</td><td>reading</td></tr>
|
||||
<tr><td><code>explore</code></td><td>a two-pane navigator</td><td>finding your way</td></tr>
|
||||
<tr><td><code>auto</code></td><td>whichever of the above fits</td><td>not having to choose</td></tr>
|
||||
</table>
|
||||
@@ -821,18 +821,18 @@ python3 -m docgen view ir.json --shape <span class="c"># what will this
|
||||
|
||||
<p>
|
||||
Measured on soleprint, whose module graph rendered at 14:1 as one picture: 69
|
||||
pages, and at the site's 800px column the widest flagged page is 988px.
|
||||
pages, and at the minisite's 800px column the widest flagged page is 988px.
|
||||
Schemas page differently: cards in columns capped to the width, grouped by
|
||||
tables joined by foreign keys, so a schema grows downward instead of sideways.
|
||||
</p>
|
||||
|
||||
<div class="note">
|
||||
<b>Which pages exist doesn't depend on width</b>, only how each is laid out
|
||||
does. A notebook column and a site column get the same pages, which is what lets
|
||||
does. A notebook column and a minisite column get the same pages, which is what lets
|
||||
a <a href="#notes">note</a> filed under a page land in the same place in both.
|
||||
</div>
|
||||
|
||||
<h3>Clicking through, on the site</h3>
|
||||
<h3>Clicking through, on the minisite</h3>
|
||||
|
||||
<p>
|
||||
Every page is its own HTML file with the diagram <b>inline</b>, not in an
|
||||
@@ -978,7 +978,7 @@ python3 -m docgen emit notebook ir.json --overlay overlay.json -o walkthrough.ip
|
||||
To put text above a page, create the file named after it. No schema, no JSON,
|
||||
no ids to look up. That's something a person or a model can do without reading
|
||||
anything first. Local images in a note are embedded: as a cell attachment in the
|
||||
notebook, as a data URI on the site.
|
||||
notebook, as a data URI on the minisite.
|
||||
</p>
|
||||
|
||||
<pre><code>make scaffold CONFIG=docgen.toml <span class="c"># an empty stub for every spot, never overwriting</span></code></pre>
|
||||
@@ -1129,10 +1129,10 @@ make doctor
|
||||
|
||||
<table>
|
||||
<tr><th>context</th><th>checks</th><th>skipped</th></tr>
|
||||
<tr><td>in the repo, synced</td><td>346</td><td>—</td></tr>
|
||||
<tr><td>copied out, bare <code>python3</code></td><td>329</td><td>tree-sitter, OpenAPI, the in-place case</td></tr>
|
||||
<tr><td>copied out, synced</td><td>338</td><td>OpenAPI, the in-place case</td></tr>
|
||||
<tr><td>copied out, synced, <code>DOCGEN_REFERENCE</code> set</td><td>345</td>
|
||||
<tr><td>in the repo, synced</td><td>348</td><td>—</td></tr>
|
||||
<tr><td>copied out, bare <code>python3</code></td><td>331</td><td>tree-sitter, OpenAPI, the in-place case</td></tr>
|
||||
<tr><td>copied out, synced</td><td>340</td><td>OpenAPI, the in-place case</td></tr>
|
||||
<tr><td>copied out, synced, <code>DOCGEN_REFERENCE</code> set</td><td>347</td>
|
||||
<td>the in-place case — correctly, there is no repo above</td></tr>
|
||||
</table>
|
||||
|
||||
@@ -1214,7 +1214,7 @@ python3 -m docgen run docgen.toml --list <span class="c"># resolved paths
|
||||
<div class="note">
|
||||
<b>A rebuild replaces the previous build, and nothing else.</b> Before writing,
|
||||
a book removes exactly what a build writes — <code>book.json</code>,
|
||||
<code>notebook.ipynb</code>, <code>steps/</code>, <code>site/</code>,
|
||||
<code>notebook.ipynb</code>, <code>steps/</code>, <code>minisite/</code>,
|
||||
<code>explore/</code> — and only from a directory that already holds a
|
||||
<code>book.json</code>. Without it a graph that is now <code>graph.md</code> kept
|
||||
its old <code>graph.svg</code>, unlisted in the ledger and still on the page.
|
||||
@@ -1262,14 +1262,14 @@ drop_builtins = true
|
||||
output = "../docs_out/orders_api_notebook"
|
||||
theme = "lucid"
|
||||
|
||||
[emit.site]
|
||||
output = "../docs_out/orders_api_site"
|
||||
[emit.minisite]
|
||||
output = "../docs_out/orders_api_minisite"
|
||||
width = 800</code></pre>
|
||||
|
||||
<p>
|
||||
Each <code>[extract.*]</code> table is a <b>book</b>, and a book is a part of
|
||||
every output rather than an output of its own. Each <code>[emit.*]</code> table
|
||||
is an output made of all of them: one notebook and one site, each with a part
|
||||
is an output made of all of them: one notebook and one minisite, each with a part
|
||||
per book. Several sources of one kind use <code>[[extract.code]]</code> with a
|
||||
<code>name</code> each. <code>[ops]</code> applies to every book's view before
|
||||
paging.
|
||||
@@ -1326,7 +1326,7 @@ width = 800</code></pre>
|
||||
<tr><td><code>make index</code></td><td>markdown index and sidebar JSON</td></tr>
|
||||
<tr><td><code>make minimap</code></td><td>what is where, read from the colours</td></tr>
|
||||
<tr><td><code>make explore</code></td><td>the two-pane navigator</td></tr>
|
||||
<tr><td><code>make site</code></td><td>a self-contained docs site</td></tr>
|
||||
<tr><td><code>make minisite</code></td><td>a self-contained one-page site</td></tr>
|
||||
<tr><td><code>make self</code></td><td>docgen's book of soleprint, then check it</td></tr>
|
||||
</table>
|
||||
|
||||
@@ -1381,7 +1381,7 @@ python3 -m docgen emit dot view.json -o graph.svg --theme lucid
|
||||
python3 -m docgen emit erd ir.json -o schema.svg
|
||||
python3 -m docgen emit minimap ir.json -o map.svg --scale 0.5
|
||||
python3 -m docgen emit notebook ir.json -o book.ipynb --overlay overlay.json
|
||||
python3 -m docgen emit site view.json -o site/
|
||||
python3 -m docgen emit minisite view.json -o minisite/
|
||||
python3 -m docgen emit explore ir.json -o explore/</code></pre>
|
||||
|
||||
<h3>Where the command line lives</h3>
|
||||
@@ -1407,7 +1407,7 @@ python3 -m docgen emit explore ir.json -o explore/</code></pre>
|
||||
A command reports an expected failure by raising, and <code>cli.main</code>
|
||||
turns it into the only exit path: one <code>Error:</code> line on stderr, exit 1,
|
||||
never a traceback. Doing that split also surfaced a third copy of "which drawing
|
||||
does this graph want" — in the <code>auto</code> command, the <code>site</code>
|
||||
does this graph want" — in the <code>auto</code> command, the <code>minisite</code>
|
||||
command and the book — which is now <code>emitters.auto.draw()</code>, returning
|
||||
content and leaving the file name to the caller.
|
||||
</p>
|
||||
@@ -1473,14 +1473,14 @@ make lock <span class="c"># after editing pyproject
|
||||
<tr><th>command</th><th>asks about</th><th>fails?</th></tr>
|
||||
<tr><td><code>make doctor</code></td><td>the machine — what is installed</td>
|
||||
<td>never; it reports</td></tr>
|
||||
<tr><td><code>make check</code></td><td>docgen — 346 checks</td>
|
||||
<tr><td><code>make check</code></td><td>docgen — 348 checks</td>
|
||||
<td>exit 1</td></tr>
|
||||
<tr><td><code>make check BOOK=<dir></code></td><td>that one book, or a project's document</td>
|
||||
<td>exit 1</td></tr>
|
||||
</table>
|
||||
|
||||
<p>
|
||||
All 346 after <code>make sync</code>, 331 with nothing optional installed — the
|
||||
All 348 after <code>make sync</code>, 333 with nothing optional installed — the
|
||||
suite skips rather than fails when tree-sitter, lxml or the OpenAPI reader is
|
||||
absent. See <a href="#standalone">standalone</a> for the counts outside the repo.
|
||||
Among them, two that keep this page's structure true: nothing outside
|
||||
|
||||
Reference in New Issue
Block a user