feat: Add ASCII logo header to generated files and improve console output

- Added Option 1 ASCII logo header to all generated files
- Header includes copyright notice and AGPL-3.0 license
- Improved console logging with [Fleetbase] prefix
- Better formatted output with separators and extension listing
- Cleaner file change notifications
- More professional and readable build output
This commit is contained in:
roncodes
2025-11-27 06:12:02 -05:00
parent 93b7224335
commit cf2ced1512

View File

@@ -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();
});
});