diff --git a/console/lib/fleetbase-extensions-generator/index.js b/console/lib/fleetbase-extensions-generator/index.js index e642bcb7..e3c52dd8 100644 --- a/console/lib/fleetbase-extensions-generator/index.js +++ b/console/lib/fleetbase-extensions-generator/index.js @@ -12,27 +12,57 @@ const chokidar = require('chokidar'); module.exports = { name: require('./package').name, + getGeneratedFileHeader() { + return `/** + * ███████╗██╗ ███████╗███████╗████████╗██████╗ █████╗ ███████╗███████╗ + * ██╔════╝██║ ██╔════╝██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██╔════╝██╔════╝ + * █████╗ ██║ █████╗ █████╗ ██║ ██████╔╝███████║███████╗█████╗ + * ██╔══╝ ██║ ██╔══╝ ██╔══╝ ██║ ██╔══██╗██╔══██║╚════██║██╔══╝ + * ██║ ███████╗███████╗███████╗ ██║ ██████╔╝██║ ██║███████║███████╗ + * ╚═╝ ╚══════╝╚══════╝╚══════╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝ + * + * AUTO-GENERATED FILE - DO NOT EDIT + * + * This file is automatically generated by the Fleetbase extension build system. + * Any manual changes will be overwritten on the next build. + * + * @generated + * @copyright © 2024 Fleetbase Pte Ltd. All rights reserved. + * @license AGPL-3.0-or-later + */ + +`; + }, + included(app) { this._super.included.apply(this, arguments); - console.log('[fleetbase-extensions-generator] Generating Fleetbase extension files...'); + console.log('\n' + '='.repeat(80)); + console.log('[Fleetbase] Extension Build System'); + console.log('='.repeat(80)); // Generate files on startup this.generateExtensionFiles(); // Watch for changes in development this.watchExtensionFiles(); + + console.log('='.repeat(80) + '\n'); }, async generateExtensionFiles() { const extensions = await this.getExtensions(); if (extensions.length === 0) { - console.log('[fleetbase-extensions-generator] No extensions found'); + console.log('[Fleetbase] No extensions found'); return; } - console.log('[fleetbase-extensions-generator] Found', extensions.length, 'extension(s)'); + console.log(`[Fleetbase] Discovered ${extensions.length} extension(s)`); + extensions.forEach(ext => { + console.log(`[Fleetbase] - ${ext.name} (v${ext.version})`); + }); + console.log(''); // Generate extension shims this.generateExtensionShims(extensions); @@ -129,9 +159,10 @@ module.exports = { const extensionContent = fs.readFileSync(extensionPath, 'utf8'); const mountPath = extension.fleetbase?.route || this.getExtensionMountPath(extension.name); const shimFile = path.join(extensionsDir, `${mountPath}.js`); + const fileContent = this.getGeneratedFileHeader() + extensionContent; - fs.writeFileSync(shimFile, extensionContent, 'utf8'); - console.log('[fleetbase-extensions-generator] ✓ Generated app/extensions/' + mountPath + '.js'); + fs.writeFileSync(shimFile, fileContent, 'utf8'); + console.log(`[Fleetbase] ✓ Generated app/extensions/${mountPath}.js`); }); }, @@ -159,7 +190,7 @@ module.exports = { loaders[extension.name] = `() => ${camelCaseName}`; }); - const loadersContent = `${imports.join('\n')} + const loadersContent = this.getGeneratedFileHeader() + `${imports.join('\n')} export const EXTENSION_LOADERS = { ${Object.entries(loaders) @@ -176,7 +207,7 @@ export default getExtensionLoader; const loadersFile = path.join(extensionsDir, 'index.js'); fs.writeFileSync(loadersFile, loadersContent, 'utf8'); - console.log('[fleetbase-extensions-generator] ✓ Generated app/extensions/index.js'); + console.log(`[Fleetbase] ✓ Generated app/extensions/index.js`); }, generateRouter(extensions) { @@ -276,8 +307,9 @@ export default getExtensionLoader; const output = recast.print(ast, { quote: 'single' }).code; const routerFile = path.join(this.project.root, 'app/router.js'); - fs.writeFileSync(routerFile, output); - console.log('[fleetbase-extensions-generator] ✓ Generated app/router.js'); + const fileContent = this.getGeneratedFileHeader() + output; + fs.writeFileSync(routerFile, fileContent); + console.log(`[Fleetbase] ✓ Generated app/router.js`); }, generateExtensionsManifest(extensions) { @@ -295,7 +327,7 @@ export default getExtensionLoader; const manifestFile = path.join(publicDir, 'extensions.json'); fs.writeFileSync(manifestFile, JSON.stringify(manifest, null, 2), 'utf8'); - console.log('[fleetbase-extensions-generator] ✓ Generated public/extensions.json'); + console.log(`[Fleetbase] ✓ Generated public/extensions.json`); }, watchExtensionFiles() { @@ -327,8 +359,8 @@ export default getExtensionLoader; }); watcher.on('change', (filePath) => { - console.log('[fleetbase-extensions-generator] Extension file changed:', filePath); - console.log('[fleetbase-extensions-generator] Regenerating extension files...'); + console.log(`\n[Fleetbase] Extension file changed: ${path.basename(filePath)}`); + console.log('[Fleetbase] Regenerating extension files...\n'); self.generateExtensionFiles(); }); });