src/MarpToPptx.Core— semantic slide model, Markdown parsing, theme parsing, layout planningsrc/MarpToPptx.Pptx— Open XML PPTX rendering and template-aware presentation generationsrc/MarpToPptx.Cli—marp2pptxcommand-line entrypointsrc/MarpToPptx.OpenXmlValidator— .NET validation helper used by smoke tests and CIscripts/— PowerShell helpers for local generation, smoke tests, package inspection, and PowerPoint troubleshootingtests/MarpToPptx.Tests— xUnit v3 tests running on Microsoft Testing Platformsamples/— Marp-style sample decks for smoke tests, feature coverage, theme parsing, and compatibility-gap repros.github/copilot-instructions.md— repo-specific Copilot guidance for PPTX compatibility, testing flow, and reference sources.github/prompts/— reusable prompts for PPTX compatibility investigation and implementation review.github/workflows/ci.yml— Ubuntu build/test/pack plus an Ubuntu CI-safe PPTX smoke-test job
- Solution format:
MarpToPptx.slnx - Centralized package management:
Directory.Packages.props - Test framework: xUnit v3
- Test runner: Microsoft Testing Platform via
global.json - CLI packaging:
marp2pptxas a .NET tool, with single-file publish as an alternate deployment mode
dotnet run --project src/MarpToPptx.Cli -- input.md -o output.pptx
dotnet run --project src/MarpToPptx.Cli -- input.md --template theme.pptx
dotnet run --project src/MarpToPptx.Cli -- input.md --theme-css theme.cssBuild a local tool package:
dotnet pack src/MarpToPptx.Cli -c ReleaseThis produces a tool package under artifacts/nupkg/ with package ID MarpToPptx and command name marp2pptx.
Run it with dnx from the local package source:
dnx MarpToPptx --add-source ./artifacts/nupkg sample.md -o sample.pptxOr install it as a local tool:
dotnet new tool-manifest
dotnet tool install MarpToPptx --add-source ./artifacts/nupkg
dotnet tool run marp2pptx sample.md -o sample.pptxNuGet publishing is handled by .github/workflows/publish.yml using nuget.org Trusted Publishing with GitHub OIDC.
Pre-release validation is available through .github/workflows/release-gate.yml.
- Versioning is tag-based via
MinVer. - Stable release tags use the form
v1.2.3. - The publish workflow builds, tests, packs, and pushes the tool package from
artifacts/nupkg/.
To cut a release:
git tag v1.2.3
git push origin v1.2.3Or use the helper script:
pwsh ./scripts/New-ReleaseTag.ps1 -Version 1.2.3The script requires a clean, up-to-date main branch and asks you to confirm that release validation is complete before it creates and pushes the tag. Use -Force only when you intentionally need to bypass those checks.
After the workflow finishes and NuGet indexing completes, install or run the published tool with:
dotnet tool install --global MarpToPptx
dnx MarpToPptx sample.md -o sample.pptx