Skip to main content

Documentation and help generation

Sources of truth​

All published documentation uses MDX under docs\Printix. The root README is a short repository landing page; the docs overview contains installation, connection examples and application-type guidance.

ContentEdit here
Command synopsis, parameters, examples and notesComment-based help in Source\Public
Generated command referenceRegenerate docs\Printix\commandlets; do not hand-edit
Overview, API coverage and Partner guideCorresponding authored .mdx page
Contributor and publishing guidesdocs\Printix\development

When updating a badge or installation example, check both the README and docs overview. Their license links differ because the overview is published in another repository.

Generate command help​

.\DevOps\Build\bootstrap.ps1
.\DevOps\Help\Update-Help.ps1

The generator imports the source module and uses platyPS to write temporary Markdown into .artifacts\HelpMarkdown. It then:

  1. Rejects unresolved platyPS placeholders, with a compatibility replacement for the newer ProgressAction common parameter.
  2. Replaces platyPS metadata with Docusaurus frontmatter and a generated-help notice.
  3. Adds PowerShell language labels to unlabelled fenced code blocks.
  4. Escapes JSX-sensitive braces and angle brackets in prose while preserving inline and fenced code.
  5. Places each command's .mdx page under its public-source category.
  6. Removes processed staging Markdown and legacy flat command Markdown files.

Inspect the resulting diff. The generator is not a general cleanup tool for all orphaned MDX: when removing or moving a command, review and remove its old generated page explicitly. Source-module export and manifest changes must agree before regenerating.

MDX conventions​

Use YAML frontmatter with a title and sidebar_position for authored guides. Use relative .mdx links between local pages, and language-labelled code fences. Keep literal JSX-sensitive text inside inline code or escape it in prose.

The helper converts generated help, not authored guides: an unescaped brace or angle bracket in a hand-written page can still break the site's MDX build. PowerShell tests and help generation do not replace a Docusaurus build in the documentation repository.

What each sync publishes​

WorkflowSourceDestination inside homotechsualdocs
Sync Development Documentation, automaticExact successful develop-push CI artifactdocs/printix/development and docs/printix/index.mdx
Sync Development Documentation, manualCurrent develop checkoutSame development/overview paths
Publish Documentation, automaticExact successful Publish artifactComplete docs/printix MDX tree
Publish Documentation, manualCurrent main with freshly generated helpComplete docs/printix MDX tree

Development sync does not update command help, API coverage or the Partner guide. An overview change linking to a new release-only page can therefore create a temporary broken site link; coordinate publishing those changes.

The helper removes stale .md and .mdx files only within the selected target tree, removes a legacy overview .md during development sync, and preserves other modules and existing assets. Full sync rejects non-MDX source files; symbolic links and junctions are rejected. Image publishing is not implemented.

A full release sync includes the development guides from the release artifact. If develop contains newer guides, a later release sync can replace them with the release snapshot. A subsequent development sync restores develop's guides.

Manual dry-run and publishing​

The workflow definitions must be present on main. Start manual runs on main even when synchronizing develop content:

gh workflow run sync-development-docs.yml --ref main -f dry_run=true
gh run list --workflow sync-development-docs.yml --limit 5

After inspecting the run, repeat with dry_run=false to push. A dry-run still needs the docs token and may need environment approval: it checks out the destination and prepares a local commit but does not push it.

For a full docs-only refresh from current main:

gh workflow run publish-docs.yml --ref main -f dry_run=true

Repeat with dry_run=false only when ready to publish all current main docs. This workflow does not publish the PowerShell module.

Manual full publishing is not a replay of a selected release artifact. To retry the exact artifact from an automatic release-docs run, rerun that docs workflow while its upstream artifact is still available rather than launching a manual refresh against newer main.

Both Printix docs workflows serialize through printix-docs. This does not lock the destination against pushes by NinjaOne, HaloAPI or people. A non-fast-forward push fails explicitly; inspect the competing changes and rerun instead of forcing the destination branch.

The destination repository owns the Docusaurus build and site deployment. A successful sync proves the documentation commit was pushed, not that the site build or deployment succeeded.