Novolis Docs
novolis-governance / imports-todo/frank-codegen-devtools.md

Import: Frank codegen / devtools repos

dotnetgovernancenovolis

Sources under `D:\frankrepos`:

RepoPackableNotes
Frank.Blazor.JsInteropGeneratorFrank.Blazor.JsInteropGeneratorRoslyn + Esprima JS interop codegen
Frank.SolutionManagerFrank.SolutionManager (+ tool exe).sln / project manipulation
Frank.GitKitFrank.GitKitGit + GitHub + Azure DevOps helpers
Frank.XsdCodeGenerationFrank.XsdCodeGenerationLegacy Roslyn Syntax spike — historical reference only

What (per repo)

Blazor JsInteropGenerator

Generates C# interop from JavaScript — same lane as Novolis.CodeGen.Bindings (Roslyn emit, parity tests).

SolutionManager

Automates solution structure — useful for template-dotnet, codegen pipeline, and governance scripts.

GitKit

Repository operations for CI and devtools; depends on Reflection subset.

XsdCodeGeneration

Author-marked dead-end spike. Do not port as-is. The schema-agnostic XSD → Roslyn emitter lives in `novolis-codegen` (Novolis.CodeGen.Xml + Novolis.CodeGen.Xsd). UBL/Peppol product packages remain in `novolis-xsd`.

Why

  • Wave 5 ported Reflection subset but not these specialized generators.
  • Binding codegen proves pipeline; SchemaGraph → SyntaxFactory is the second consumer of Roslyn emit culture.
  • UBL is the acceptance suite for the generic emitter, not the home of the IR.

How

Target

`novolis-codegen` — facets:

Novolis packageSource / role
Novolis.CodeGen.JsInteropBlazor generator (rename; Blazor optional in name)
Novolis.CodeGen.SolutionManagerSolutionManager
Novolis.CodeGen.Git or novolis-devtoolsGitKit
Novolis.CodeGen.XmlXmlSchemaSet load + SchemaGraph IR
Novolis.CodeGen.XsdIR → SyntaxFactory profiles (Wire / Lean)

`novolis-xsd` — product:

Novolis packageRole
Novolis.Xsd.Generator / .ToolHost + UBL normalize; consumes CodeGen.Xml/Xsd
Novolis.Xsd.Ubl / .Ubl.Validation / .Ubl.LeanPre-generated Wire + Lean
Novolis.Xsd.PeppolSBDH envelope + Peppol helpers

Port steps

  1. SolutionManager first — dogfood in novolis-governance/scripts or template generator.
  2. JsInterop — port with T1-style comparer if golden files exist.
  3. GitKit — after Reflection on GPR; narrow public API.
  4. Xml/Xsd — implement in novolis-codegen; dogfood via novolis-xsd UBL gates.

Acceptance

  • Novolis.CodeGen.Xml + .Xsd published to GitHub Packages and used by novolis-xsd.
  • novolis-xsd packages restore from nuget.org + GitHub Packages only.
  • Coverage ≥ 85% line on Xml/Xsd assemblies; nuget-only green.