@@ -86,7 +86,7 @@ export async function generateWorkflowLoaders(): Promise<void> {
8686 }
8787
8888 // Generate the content for generated-plugins.ts
89- const generatedContent = generatePluginsFileContent ( workflowLoaders , workflowMetadata ) ;
89+ const generatedContent = await generatePluginsFileContent ( workflowLoaders , workflowMetadata ) ;
9090
9191 // Write to the generated file
9292 const outputPath = path . resolve ( process . cwd ( ) , 'src/core/generated-plugins.ts' ) ;
@@ -151,10 +151,10 @@ function extractWorkflowMetadata(content: string): WorkflowMetadata | null {
151151 }
152152}
153153
154- function generatePluginsFileContent (
154+ async function generatePluginsFileContent (
155155 workflowLoaders : Record < string , string > ,
156156 workflowMetadata : Record < string , WorkflowMetadata > ,
157- ) : string {
157+ ) : Promise < string > {
158158 const loaderEntries = Object . entries ( workflowLoaders )
159159 . map ( ( [ key , loader ] ) => {
160160 const indentedLoader = loader
@@ -175,7 +175,7 @@ function generatePluginsFileContent(
175175 } )
176176 . join ( ',\n' ) ;
177177
178- return `// AUTO-GENERATED - DO NOT EDIT
178+ const content = `// AUTO-GENERATED - DO NOT EDIT
179179// This file is generated by the plugin discovery esbuild plugin
180180
181181// Generated based on filesystem scan
@@ -190,6 +190,7 @@ export const WORKFLOW_METADATA = {
190190${ metadataEntries }
191191};
192192` ;
193+ return formatGenerated ( content ) ;
193194}
194195
195196export async function generateResourceLoaders ( ) : Promise < void > {
@@ -223,7 +224,7 @@ export async function generateResourceLoaders(): Promise<void> {
223224 console . log ( `✅ Discovered resource: ${ resourceName } ` ) ;
224225 }
225226
226- const generatedContent = generateResourcesFileContent ( resourceLoaders ) ;
227+ const generatedContent = await generateResourcesFileContent ( resourceLoaders ) ;
227228 const outputPath = path . resolve ( process . cwd ( ) , 'src/core/generated-resources.ts' ) ;
228229
229230 const fs = await import ( 'fs' ) ;
@@ -232,12 +233,14 @@ export async function generateResourceLoaders(): Promise<void> {
232233 console . log ( `🔧 Generated resource loaders for ${ Object . keys ( resourceLoaders ) . length } resources` ) ;
233234}
234235
235- function generateResourcesFileContent ( resourceLoaders : Record < string , string > ) : string {
236+ async function generateResourcesFileContent (
237+ resourceLoaders : Record < string , string > ,
238+ ) : Promise < string > {
236239 const loaderEntries = Object . entries ( resourceLoaders )
237240 . map ( ( [ key , loader ] ) => ` '${ key } ': ${ loader } ` )
238241 . join ( ',\n' ) ;
239242
240- return `// AUTO-GENERATED - DO NOT EDIT
243+ const content = `// AUTO-GENERATED - DO NOT EDIT
241244// This file is generated by the plugin discovery esbuild plugin
242245
243246export const RESOURCE_LOADERS = {
@@ -246,4 +249,36 @@ ${loaderEntries}
246249
247250export type ResourceName = keyof typeof RESOURCE_LOADERS;
248251` ;
252+ return formatGenerated ( content ) ;
253+ }
254+
255+ async function formatGenerated ( content : string ) : Promise < string > {
256+ try {
257+ const { resolve } = await import ( 'node:path' ) ;
258+ const { pathToFileURL } = await import ( 'node:url' ) ;
259+ const prettier = await import ( 'prettier' ) ;
260+ let config = ( await prettier . resolveConfig ( process . cwd ( ) ) ) ?? null ;
261+ if ( ! config ) {
262+ try {
263+ const configUrl = pathToFileURL ( resolve ( process . cwd ( ) , '.prettierrc.js' ) ) . href ;
264+ const configModule = await import ( configUrl ) ;
265+ config = ( configModule as { default ?: unknown } ) . default ?? configModule ;
266+ } catch {
267+ config = null ;
268+ }
269+ }
270+ const options = {
271+ semi : true ,
272+ trailingComma : 'all' as const ,
273+ singleQuote : true ,
274+ printWidth : 100 ,
275+ tabWidth : 2 ,
276+ endOfLine : 'auto' as const ,
277+ ...( config as Record < string , unknown > | null ) ,
278+ parser : 'typescript' ,
279+ } ;
280+ return prettier . format ( content , options ) ;
281+ } catch {
282+ return content ;
283+ }
249284}
0 commit comments