This repository contains the Office CLI, its integration library, and the
document engines they use. Modules have independent package identities; moon.work
connects the nine modules for local development.
| Directory | Module | Responsibility |
|---|---|---|
| ooxml | moonbitlang/ooxml |
Shared OPC and XML foundations |
| mbtexcel | moonbitlang/mbtexcel |
Read and write XLSX spreadsheets |
| docx2html | moonbitlang/docx2html |
Parse, convert, and edit DOCX documents |
| pdflite | moonbitlang/pdflite |
Read, write, and manipulate PDFs |
| pptx | moonbitlang/pptx |
PPTX reading, building, and writing |
| pdf2md | moonbitlang/pdf2md |
PDF to Markdown CLI |
| pagelayout | moonbitlang/pagelayout |
Document layout and SVG/PDF rendering |
| office-lib | moonbitlang/office-lib |
Office integration and SDK |
| office-cli | moonbitlang/office |
Unified office CLI |
The CLI implementation lives in office-cli, which integrates the
document engines and layout packages. office-lib is the reusable library;
office-cli is the executable entry point. The repository root is only a
workspace, not a publishable MoonBit module. PPTX is integrated through office-lib/pptx for identification, outline,
text extraction, and fresh one-slide creation. See the
PPTX integration guide for commands and limits.
moonx moonbitlang/office help all --json
moonx moonbitlang/office identify report.docx --jsonSee the Office library documentation for SDK usage and the input/output schemas for automation.
Run these commands from the repository root:
moon update
moon check
moon test
moon info
moon fmt
moon run office-cli -- help all --json
moon run mbtexcel/cmd/xlsx -- --helpNative SDK validity tests use the shared validators under scripts/ and need
.NET 8. Excel test fixtures live in mbtexcel/fixtures/excelize/; each module's
tests resolve their data relative to that module's root.
Shared documentation, CI, scripts, and developer tools remain at the repository root. Module READMEs describe commands relative to their module directory unless stated otherwise. Published module names and package import paths are independent of this directory layout.
Publish from the relevant module directory, following the
release process. CI runs source checks and tests;
moon publish checks the packaged module and its registry dependencies before
publishing. The root publish workflow publishes the nine modules
when a GitHub Release is released. Manual runs can select one
module or all; the full order is ooxml, mbtexcel, docx2html, pdflite, pptx, pdf2md,
pagelayout, office-lib, then office-cli (published as moonbitlang/office).
Further module-boundary work is tracked in issue #542.
PPTX library packages, demos, and benchmarks are part of the same workspace. See the PPTX module guide for root-level commands and upstream attribution.