mirror of
https://github.com/fleetbase/fleetbase.git
synced 2025-12-19 14:18:57 +00:00
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:
@@ -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();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user