<feed xmlns='http://www.w3.org/2005/Atom'>
<title>vyos-documentation.git/docs/_ext/vyos.py, branch 1.4</title>
<subtitle>VyOS readthedocs (mirror of https://github.com/vyos/vyos-documentation.git)
</subtitle>
<id>https://git.amelek.net/vyos/vyos-documentation.git/atom?h=1.4</id>
<link rel='self' href='https://git.amelek.net/vyos/vyos-documentation.git/atom?h=1.4'/>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/'/>
<updated>2026-05-12T13:40:36+00:00</updated>
<entry>
<title>fix(ext): parse cmdincludemd content as RST so legacy `_include/*.txt` directives render</title>
<updated>2026-05-12T13:40:36+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-12T12:34:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=8f9c2d9162027c99f3fcaac8c02d5fcc4d07c962'/>
<id>urn:sha1:8f9c2d9162027c99f3fcaac8c02d5fcc4d07c962</id>
<content type='text'>
The `_include/*.txt` library is written in reStructuredText (`.. cfgcmd::`,
`.. code-block::`, `.. note::`, `.. cmdinclude::`). After the RST→MyST
migration, the `{cmdincludemd}` fence on .md pages routed include content
through `MockState.nested_parse`, which in MyST 2.0 simply replays the
content through the MyST renderer (see myst_parser/mocking.py:153). RST
directives in the .txt file then rendered as literal paragraph text:

  &lt;p&gt;.. cmdinclude:: /_include/interface-description.txt&lt;/p&gt;
  &lt;p&gt;.. cfgcmd:: set interfaces ethernet ...&lt;/p&gt;
  &lt;p&gt;.. code-block:: none&lt;/p&gt;

User-visible symptom (reported on rolling docs): the Ethernet, dummy,
tunnel, bonding, bridge, macsec, vxlan, l2tpv3, pseudo-ethernet,
virtual-ethernet, and wireless pages all showed unprocessed `.. cfgcmd::`
and `.. cmdinclude::` directives instead of styled command boxes.

Fix: mirror MyST's own `{eval-rst}` plumbing
(`MockRSTParser().parse(text, doc)` per
`mdit_to_docutils/base.py:1655`). Build a fresh document that inherits
the outer document's settings + reporter, run `MockRSTParser` over the
substituted include content, and graft the resulting children back
into the calling document with explicit-target registration. Keeps the
Sphinx env available to `cfgcmd`/`opcmd`/`cmdinclude` directives.

Verified locally on rolling (Sphinx 7.x, myst-parser 2.0): zero literal
`cfgcmd::` / `cmdinclude::` / `code-block::` / `opcmd::` / `note::` /
`include::` strings remain in any built HTML page under
`configuration/`, `automation/`, `installation/`, `operation/`,
`vpp/`; all 11 affected interface pages now render proper
`cfgcmd-heading` / `cfgcmd-body` blocks (e.g. ethernet.html: 160,
wireless.html: 172, dummy.html: 4).

🤖 Generated by [robots](https://vyos.io)

(cherry picked from commit 9c815d689a2a4a5d433ba15154cb606bd986fc8d)
</content>
</entry>
<entry>
<title>fix: bring _ext/vyos.py compat patches from current to sagitta</title>
<updated>2026-05-06T18:57:30+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-06T18:57:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=50a82c126037023d029eaa4ff2d2144c44ae039b'/>
<id>urn:sha1:50a82c126037023d029eaa4ff2d2144c44ae039b</id>
<content type='text'>
The sagitta build failed on /en/1.4/ post-flip because docs/_ext/vyos.py
was missing two version-compatibility patches that current already has:

- Line 224: nodes.reprunicode(path) → str(path) (docutils 0.21 removed
  nodes.reprunicode)
- Line 367-378: myst-parser 2.0 fallback for nested_render_text — the
  RST 'Body' state does not expose _renderer, so the call falls back to
  docutils nested_parse via a ViewList

These patches landed on current via earlier PRs but were never backported
to sagitta. The flip PR exposed the missing patches because the new
build path renders cmdinclude blocks through MyST's render_restructuredtext
which uses the RST 'Body' state without _renderer.

Bringing current's _ext/vyos.py byte-identical fixes both issues. The
file has no sagitta-specific divergence beyond these two patches.

Generated by robots https://vyos.io
</content>
</entry>
<entry>
<title>Revert "Add incremental RST-to-MyST swap mechanism (sagitta) (#1868)" (#1894)</title>
<updated>2026-05-06T13:09:07+00:00</updated>
<author>
<name>Daniil Baturin</name>
<email>daniil@vyos.io</email>
</author>
<published>2026-05-06T13:09:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=e066bb43eab070c58043f69efe87191b354b01e5'/>
<id>urn:sha1:e066bb43eab070c58043f69efe87191b354b01e5</id>
<content type='text'>
This reverts commit 22e34ce5aee24d2fd11f8205522ab7ecdb3c4c5e.</content>
</entry>
<entry>
<title>Add incremental RST-to-MyST swap mechanism (sagitta) (#1868)</title>
<updated>2026-05-06T11:41:08+00:00</updated>
<author>
<name>Yuriy Andamasov</name>
<email>yuriy@vyos.io</email>
</author>
<published>2026-05-06T11:41:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=22e34ce5aee24d2fd11f8205522ab7ecdb3c4c5e'/>
<id>urn:sha1:22e34ce5aee24d2fd11f8205522ab7ecdb3c4c5e</id>
<content type='text'>
* feat(swap-sagitta): add incremental RST-to-MyST swap mechanism

Backport of the swap mechanism from feat/incremental-myst-swap onto
the sagitta release branch. Built directly on top of origin/sagitta,
so the underlying RST tree is sagitta's (not current's).

Mechanism:
- scripts/import_myst.py — import md from myst/* with md- prefix
- scripts/swap_sources.py — rename md-{name}.md → {name}.md before
  Sphinx builds, restore after; writes _build/_swap_state.json and
  _build/_swap_exclude.txt
- docs/Makefile — html/dirhtml/pdf/livehtml all run swap → build →
  trap restore; explicit `swap` and `restore` targets too
- docs/conf.py — MyST extensions enabled; swap exclude_patterns
  loader; _prefer_webp builder hook so html prefers webp over png

Content:
- 202 md-prefixed pages from origin/myst/sagitta (md-{name}.md
  alongside each {name}.rst counterpart)
- 1 plain MyST-only page from myst/sagitta where no .rst exists
  (already at canonical name on sagitta: docs/copyright.md)
- 240 .webp images from myst/sagitta (added alongside the existing
  PNG/JPG so RST builds keep their assets)
- docs/_swap.txt populated with all 202 stems → MyST is served by
  default, revert a page by removing its stem from _swap.txt

🤖 Generated by [robots](https://vyos.io)

* feat(conf): copy .md sources into HTML output for plain-text serving

Adds a build-finished hook that mirrors every .md file from the Sphinx
source tree into the HTML output directory verbatim, making unrendered
MyST sources accessible alongside HTML renders at the same URL path.

🤖 Generated by [robots](https://vyos.io)

* docs: address review feedback (backport from PR #1857)

Fix conversion artifacts, typos, and technical inaccuracies applicable
to the sagitta branch: curly quotes, typos (deamonless, cammans,
amdifferent, trough), incorrect firewall command paths, missing closing
brace in zone-policy, peer name inconsistencies, hardcoded passwords
replaced with vault references, and md-*.md exclusion in conf.py.

🤖 Generated by [robots](https://vyos.io)

* docs: port .readthedocs.yml jobs, _ext/vyos.py fallback and swap-script tests from PR #1857

Parity backport from PR #1857 (current) — three pieces were missing on
sagitta.

- .readthedocs.yml: add build.jobs.pre_build / post_build hooks that run
  scripts/swap_sources.py --swap before the Sphinx build and --restore
  after. Without this, the swap mechanism ships but never runs on RTD
  builds for this branch — the swap is a silent no-op.
- docs/_ext/vyos.py: CmdInclude.run() now falls back to nested_parse()
  when self.state._renderer is not present. Required for cfgcmd /
  opcmd / cmdincludemd directives to render correctly when included
  from MyST pages (the swap mechanism's whole point). Sagitta-only
  delta on _ext/vyos.py (the path = str(path) line on 224) is
  intentionally untouched.
- tests/test_import_myst.py, tests/test_swap_sources.py: tests for the
  swap scripts. The scripts on this branch are byte-identical to
  current's, so the same tests apply. Travels with the branch so CI
  catches per-branch regressions if the scripts ever drift.

🤖 Generated by [robots](https://vyos.io)

* fix(conf): skip md-*.md staging files in _copy_md_sources

Agent-Logs-Url: https://github.com/vyos/vyos-documentation/sessions/919695a7-688d-41b9-89f0-540684625dbc

Co-authored-by: andamasov &lt;12631358+andamasov@users.noreply.github.com&gt;

---------

Co-authored-by: copilot-swe-agent[bot] &lt;198982749+Copilot@users.noreply.github.com&gt;
Co-authored-by: andamasov &lt;12631358+andamasov@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Fix "errror"s in docs/_ext</title>
<updated>2024-01-19T20:07:30+00:00</updated>
<author>
<name>Sebastian Weber</name>
<email>s@web3r.de</email>
</author>
<published>2024-01-17T20:51:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=b73c97e995708d2bf2740f45e5ea2e112a9bff5d'/>
<id>urn:sha1:b73c97e995708d2bf2740f45e5ea2e112a9bff5d</id>
<content type='text'>
(cherry picked from commit 125c03f39c74fee4bf60610c74ff9b61e65a0541)
</content>
</entry>
<entry>
<title>T5001: Replace links to the phabricator site</title>
<updated>2023-02-12T20:05:22+00:00</updated>
<author>
<name>Christian Breunig</name>
<email>christian@breunig.cc</email>
</author>
<published>2023-02-12T20:05:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=27512c94e62ec1883aafc97abafbd09d69ef1896'/>
<id>urn:sha1:27512c94e62ec1883aafc97abafbd09d69ef1896</id>
<content type='text'>
Replace links to the phabricator site from https://phabricator.vyos.net to
https://vyos.dev
</content>
</entry>
<entry>
<title>add :defaultvalue: option</title>
<updated>2022-08-16T13:38:16+00:00</updated>
<author>
<name>rebortg</name>
<email>github@ghlr.de</email>
</author>
<published>2022-08-12T08:54:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=e9236755bb544c43c9949926ad4a3b85223612f5'/>
<id>urn:sha1:e9236755bb544c43c9949926ad4a3b85223612f5</id>
<content type='text'>
(cherry picked from commit b09f2222ed6181ba377a41de37a3997559a234c8)
(cherry picked from commit 1205c1e7806d4e84e03aafc94831248cbfa9b1c8)
</content>
</entry>
<entry>
<title>improve coverage with all real vyos commands exported from iso</title>
<updated>2022-05-31T19:16:48+00:00</updated>
<author>
<name>rebortg</name>
<email>github@ghlr.de</email>
</author>
<published>2022-05-31T19:16:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=68a335a08633d18e11110e98e5fef7a979d7e850'/>
<id>urn:sha1:68a335a08633d18e11110e98e5fef7a979d7e850</id>
<content type='text'>
</content>
</entry>
<entry>
<title>vyos.py: add code to find syntax errors</title>
<updated>2022-03-31T13:59:58+00:00</updated>
<author>
<name>rebortg</name>
<email>github@ghlr.de</email>
</author>
<published>2022-03-31T13:59:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=8a4040c03660fe47dc92308704791af6d48c6094'/>
<id>urn:sha1:8a4040c03660fe47dc92308704791af6d48c6094</id>
<content type='text'>
</content>
</entry>
<entry>
<title>coverage: improve command comparing</title>
<updated>2022-03-29T18:00:53+00:00</updated>
<author>
<name>rebortg</name>
<email>github@ghlr.de</email>
</author>
<published>2022-03-29T18:00:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/vyos/vyos-documentation.git/commit/?id=76d521bd070f5ca2aca09fc760cea771cbfb08fd'/>
<id>urn:sha1:76d521bd070f5ca2aca09fc760cea771cbfb08fd</id>
<content type='text'>
</content>
</entry>
</feed>
