[Repo Assist] Add dotnet fsdocs convert command for single-file conversion#1019
[Repo Assist] Add dotnet fsdocs convert command for single-file conversion#1019github-actions[bot] wants to merge 7 commits intomainfrom
dotnet fsdocs convert command for single-file conversion#1019Conversation
Implement a new 'convert' verb for the fsdocs CLI tool that converts a single .md, .fsx, or .ipynb file to HTML (or other formats) without building a full documentation site. - Add Literate.ConvertPynbFile public API (parallel to ConvertMarkdownFile and ConvertScriptFile) - Add ConvertCommand CLI verb with --input, --output, --template, --outputformat, --eval, --linenumbers, --parameters options - Register ConvertCommand in Program.fs entry point - Update RELEASE_NOTES.md Usage: dotnet fsdocs convert --input notebook.ipynb dotnet fsdocs convert --input file.fsx --output file.html dotnet fsdocs convert --input doc.md --outputformat markdown Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
| abstract port_option: int | ||
| default x.port_option = 0 | ||
|
|
||
| [<Verb("convert", |
There was a problem hiding this comment.
/repo-assist it might be time to split these commands up to multiple files.
There was a problem hiding this comment.
Yup these "/repo-assist" in PR comments still not working
|
/repo-assist Add comprehensive unit tests for all new code and integration tests for all new features |
- Unit tests for Literate.ConvertPynbFile: HTML without/with template, Markdown output, FSX output - Integration tests for ConvertCommand.Execute: .md, .fsx, .ipynb conversion, markdown output format, error codes for missing file and unsupported extension Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Commit pushed:
|
|
🤖 This is an automated response from Repo Assist. I've added comprehensive unit tests and integration tests for the new code in this PR. All 10 new tests pass. Here's a summary of what was added: Unit tests for
|
| Test | Covers |
|---|---|
ConvertPynbFile converts notebook to HTML without template |
Basic HTML output from .ipynb |
ConvertPynbFile converts notebook to HTML with template |
HTML output with template substitution |
ConvertPynbFile converts notebook to Markdown output kind |
OutputKind.Markdown |
ConvertPynbFile converts notebook to FSX output kind |
OutputKind.Fsx |
Integration tests for ConvertCommand.Execute() (in DocContentTests.fs)
| Test | Covers |
|---|---|
ConvertCommand converts .md file to HTML |
.md → HTML via CLI command |
ConvertCommand converts .fsx file to HTML |
.fsx → HTML via CLI command |
ConvertCommand converts .ipynb file to HTML |
.ipynb → HTML via CLI command |
ConvertCommand converts .md file to Markdown output format |
--outputformat markdown |
ConvertCommand returns error code for non-existent input file |
Error handling: missing file returns exit code 1 |
ConvertCommand returns error code for unsupported file extension |
Error handling: .html input returns exit code 1 |
Generated by Repo Assist for issue #1019
To install this workflow, run
gh aw add githubnext/agentics/workflows/repo-assist.md@f2c5cf1e4af58e09a93ba0703c6bf084711b265f. View source at https://github.com/githubnext/agentics/tree/f2c5cf1e4af58e09a93ba0703c6bf084711b265f/workflows/repo-assist.md.
|
/repo-assist I tried this out and it worked OK. However note how pandoc has this: where fsdocs convert has the longer I'd like to see more like where
Also I'd like to see the "Integration tests for ConvertCommand" moved to a set of tests for |
- Make input file positional (Value(0)) instead of --input flag - Add -o shorthand for --output - Infer output format from output file extension when --outputformat not specified - Move ConvertCommand integration tests to new fsdocs-tool.Tests project - Add new test for format inference from extension - Add fsdocs-tool.Tests to solution Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Commit pushed:
|
|
🤖 This is an automated response from Repo Assist. Thanks for the feedback! I've pushed an update to this PR with the CLI UX improvements you requested: Changes made:
All 7 new tests pass, and the existing 105 Literate tests still pass.
|
|
Hi @nhirschey, would you mind giving this a spin? |
🤖 This PR was created by Repo Assist, an automated AI assistant.
Closes #811
Summary
This adds a new
convertverb to thefsdocsCLI tool, enabling conversion of a single.md,.fsx, or.ipynbfile to HTML (or another output format) without needing to build a full documentation site.Usage examples:
Changes
src/FSharp.Formatting.Literate/Literate.fs: AddedLiterate.ConvertPynbFilepublic API method (parallel to the existingConvertMarkdownFileandConvertScriptFile)src/fsdocs-tool/BuildCommand.fs: AddedConvertCommandclass with[(Verb("convert"))]src/fsdocs-tool/Program.fs: RegisteredConvertCommandin the entry pointRELEASE_NOTES.md: Added changelog entryOptions
--input.md,.fsx,.ipynb)--output(basename).(ext)--template--outputformathtmlhtml,ipynb,latex,fsx,markdown--eval--linenumbers--parametersWhen no template is provided, raw HTML content is written (just the body, no surrounding page chrome) — the same behaviour as calling
Literate.ConvertMarkdownFilewith no template.Root Cause
The
Literatelibrary already exposedConvertMarkdownFileandConvertScriptFilefor programmatic use, and theDocContentclass inside the build command already performs per-file conversion. This PR wires those existing capabilities up to a new CLI verb and adds the missingConvertPynbFilemethod.Test Status
System.Drawing.Commonvulnerability)