@@ -6,9 +6,9 @@ import { cosmiconfig } from 'cosmiconfig'
6
6
import createDebug from 'debug'
7
7
import { execSync } from 'node:child_process'
8
8
import { cwd } from 'node:process'
9
- import { dirname , join , resolve } from 'node:path'
9
+ import { dirname , extname , join , resolve } from 'node:path'
10
10
import { inspect } from 'node:util'
11
- import { copyFile , mkdir } from 'node:fs/promises'
11
+ import { copyFile , mkdir , readFile } from 'node:fs/promises'
12
12
import { fileURLToPath } from 'node:url'
13
13
import { awsCredentialsFileExists } from '../aws-creds.js'
14
14
import sleep from '../sleep.js'
@@ -18,6 +18,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url))
18
18
19
19
const debug = createDebug ( 'codegenie:generate' )
20
20
const appDir = cwd ( )
21
+ const dotCodeGenieDir = join ( appDir , '.codegenie' )
21
22
22
23
const explorer = cosmiconfig ( 'codegenie' , {
23
24
searchPlaces : [ `.codegenie/app.js` , `.codegenie/app.ts` , `.codegenie/app.mjs` , `.codegenie/app.cjs` ] ,
@@ -115,7 +116,7 @@ generating app...
115
116
awsProfileToCopy,
116
117
}
117
118
}
118
- } else if ( ! existsSync ( join ( appDir , '.codegenie' ) ) ) {
119
+ } else if ( ! existsSync ( dotCodeGenieDir ) ) {
119
120
this . error (
120
121
"No .codegenie directory found. Make sure you're running this command inside a directory that has a child .codegenie directory." ,
121
122
{
@@ -260,8 +261,10 @@ Run \`npm run init:dev\` to get started. See https://codegenie.codes/docs/guides
260
261
ux . action . start ( '🧞 Creating a new Code Genie App' )
261
262
262
263
try {
264
+ const logo = await this . getLogo ( )
263
265
const createAppResponse = await axios . post ( '/apps' , {
264
266
appDefinition : generateAppDefinitionResponse . data . appDefinition ,
267
+ logo,
265
268
// app: {
266
269
// name: appName,
267
270
// description,
@@ -296,8 +299,27 @@ Run \`npm run init:dev\` to get started. See https://codegenie.codes/docs/guides
296
299
}
297
300
}
298
301
302
+ async getLogo ( ) {
303
+ let logo = null
304
+ try {
305
+ const logoPath = join ( dotCodeGenieDir , 'logo.png' )
306
+ const logoBuffer = await readFile ( logoPath )
307
+ const mimeType = extname ( logoPath ) . toLowerCase ( ) === '.png' ? 'image/png' : 'image/jpeg'
308
+ const base64Data = logoBuffer . toString ( 'base64' )
309
+ logo = `data:${ mimeType } ;base64,${ base64Data } `
310
+ } catch ( fileError : any ) {
311
+ if ( fileError . code === 'ENOENT' ) {
312
+ console . warn ( 'No logo found. Proceeding without a logo.' )
313
+ } else {
314
+ console . error ( 'Error reading logo file:' , fileError . message )
315
+ }
316
+ }
317
+ console . log ( 'logo is' , logo )
318
+ return logo
319
+ }
320
+
299
321
async writeGeneratedAppDefinitionFile ( { appDefinition } : { appDefinition : AppDefinition } ) {
300
- const codeGenieDir = join ( appDir , '.codegenie' )
322
+ const codeGenieDir = dotCodeGenieDir
301
323
if ( ! existsSync ( codeGenieDir ) ) {
302
324
await mkdir ( codeGenieDir )
303
325
}
@@ -315,7 +337,7 @@ export default codeGenieAppDefinition
315
337
}
316
338
317
339
async addAppIdToAppDefinitionFile ( { appId } : { appId : string } ) {
318
- const codeGenieDir = join ( appDir , '.codegenie' )
340
+ const codeGenieDir = dotCodeGenieDir
319
341
const appDefinitionFilePath = join ( codeGenieDir , 'app.ts' )
320
342
const appDefinitionFileContents = readFileSync ( appDefinitionFilePath , { encoding : 'utf8' } )
321
343
const appDefinitionFileContentsWithAppId = appDefinitionFileContents . replace (
@@ -346,8 +368,10 @@ export default codeGenieAppDefinition
346
368
347
369
if ( ! appId ) {
348
370
try {
371
+ const logo = await this . getLogo ( )
349
372
const createAppResponse = await axios . post ( '/apps' , {
350
373
appDefinition,
374
+ logo,
351
375
} )
352
376
debug ( 'createAppResponse %O' , createAppResponse )
353
377
appId = createAppResponse . data . data . appId as string
@@ -465,7 +489,7 @@ export default codeGenieAppDefinition
465
489
async copyCodeGenieLogo ( ) {
466
490
const debug = createDebug ( 'codegenie:generate:copyCodeGenieLogo' )
467
491
const codeGenieLogoPath = resolve ( __dirname , '../../logo.png' )
468
- const appCodeGenieDir = join ( appDir , '.codegenie' )
492
+ const appCodeGenieDir = dotCodeGenieDir
469
493
debug ( 'copying logo from %s to %s' , codeGenieLogoPath , appCodeGenieDir )
470
494
await copyFile ( codeGenieLogoPath , join ( appCodeGenieDir , 'logo.png' ) )
471
495
debug ( 'complete' )
0 commit comments