@@ -21,6 +21,8 @@ import type { GeneratorInput } from "./generators/base/BaseGenerator";
2121import { TypeScriptGenerator as TypeScriptGeneratorDepricated } from "./generators/typescript" ;
2222import * as TS2 from "./writer-generator/typescript" ;
2323import type { Writer , WriterOptions } from "./writer-generator/writer" ;
24+ import type { MustacheGeneratorOptions } from "./writer-generator/mustache" ;
25+ import * as Mustache from "./writer-generator/mustache" ;
2426
2527/**
2628 * Configuration options for the API builder
@@ -78,10 +80,14 @@ const writerToGenerator = (writerGen: Writer): Generator => {
7880 } ;
7981 return {
8082 generate : async ( { index : tsIndex } : GeneratorInput ) : Promise < GeneratedFile [ ] > => {
83+ console . log ( "generate111111" , writerGen . opts . outputDir ) ;
8184 await writerGen . generate ( tsIndex ) ;
8285 return getGeneratedFiles ( ) ;
8386 } ,
84- setOutputDir : ( outputDir : string ) => ( writerGen . opts . outputDir = outputDir ) ,
87+ setOutputDir : ( outputDir : string ) => {
88+ console . log ( "setOutputDir" , outputDir ) ;
89+ writerGen . opts . outputDir = outputDir ;
90+ } ,
8591 build : async ( _input : unknown ) => getGeneratedFiles ( ) ,
8692 } ;
8793} ;
@@ -325,6 +331,56 @@ export class APIBuilder {
325331 return this ;
326332 }
327333
334+ mustache ( userOpts : Partial < MustacheGeneratorOptions > ) {
335+ const defaultWriterOpts : WriterOptions = {
336+ logger : this . logger ,
337+ outputDir : this . options . outputDir ,
338+ tabSize : 4 ,
339+ withDebugComment : false ,
340+ commentLinePrefix : "//" ,
341+ generateProfile : false ,
342+ } ;
343+ const defaultMustacheOpts : MustacheGeneratorOptions = {
344+ ...defaultWriterOpts ,
345+ templatePath : "./mustache/languages/java" ,
346+ debug : "COMPACT" ,
347+ hooks : { afterGenerate : [ ] } ,
348+ meta : {
349+ timestamp : new Date ( ) . toISOString ( ) ,
350+ generator : "atomic-codegen" ,
351+ } ,
352+ filters : {
353+ resource : undefined ,
354+ complexType : undefined ,
355+ } ,
356+ sources : {
357+ templateSource : "" ,
358+ staticSource : "" ,
359+ } ,
360+ typeMap : { } ,
361+ unsaveCharacterPattern : / [ ^ a - z A - Z 0 - 9 ] / g,
362+ nameTransformations : {
363+ common : [ ] ,
364+ enumValue : [ ] ,
365+ type : [ ] ,
366+ field : [ ] ,
367+ } ,
368+ renderings : {
369+ utility : [ ] ,
370+ resource : [ ] ,
371+ complexType : [ ] ,
372+ } ,
373+ } ;
374+ const opts = {
375+ ...defaultMustacheOpts ,
376+ ...Object . fromEntries ( Object . entries ( userOpts ) . filter ( ( [ _ , v ] ) => v !== undefined ) ) ,
377+ } as MustacheGeneratorOptions ;
378+ const generator = writerToGenerator ( Mustache . createGenerator ( opts ) ) ;
379+ this . generators . set ( `mustache[${ opts . templatePath } ]` , generator ) ;
380+ this . logger . debug ( `Configured TypeScript generator (${ JSON . stringify ( opts , undefined , 2 ) } )` ) ;
381+ return this ;
382+ }
383+
328384 csharp ( namespace : string , staticSourceDir ?: string | undefined ) : APIBuilder {
329385 const generator = writerToGenerator (
330386 new CSharp ( {
0 commit comments