diff --git a/package.json b/package.json index ef99fac..347d4fd 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "type": "string", "editPresentation": "multilineText", "default": "", - "markdownDescription": "`%module%` will be replaced with the module name. \n\n **Do not add comment symbols like `/*` or `*/`, they will be added automatically.** \n\n Separate lines with the newline character `\\n`" + "markdownDescription": "`%module%` will be replaced with the module name. \n\n **Do not add comment symbols like `/*` or `*/`, they will be added automatically.**" }, "magento-toolbox.xmlFileHeaderComment": { "type": "string", diff --git a/src/common/php/FileHeader.ts b/src/common/php/FileHeader.ts index f0d30b2..669b574 100644 --- a/src/common/php/FileHeader.ts +++ b/src/common/php/FileHeader.ts @@ -12,4 +12,22 @@ export default class FileHeader { return header.replace('%module%', module); } + + public static getHeaderAsComment(module: string): string { + const header = this.getHeader(module); + + if (!header) { + return ''; + } + + let comment = `/**\n`; + + header.split(/[\r\n]+/).forEach(line => { + comment += ` * ${line}\n`; + }); + + comment += ` */\n`; + + return comment; + } } diff --git a/src/generator/TemplateGenerator.ts b/src/generator/TemplateGenerator.ts index dc8dc9e..fe2f46d 100644 --- a/src/generator/TemplateGenerator.ts +++ b/src/generator/TemplateGenerator.ts @@ -7,13 +7,17 @@ export default class TemplateGenerator extends FileGenerator { public constructor( protected fileName: string, protected templateName: string, - protected data: any + protected data: Record ) { super(); } + public getTemplateData(): Record { + return this.data; + } + public async generate(workspaceUri: Uri): Promise { - const content = await GenerateFromTemplate.generate(this.templateName, this.data); + const content = await GenerateFromTemplate.generate(this.templateName, this.getTemplateData()); const path = Uri.joinPath(workspaceUri, this.fileName); return new GeneratedFile(path, content); diff --git a/src/generator/module/ModuleRegistrationGenerator.ts b/src/generator/module/ModuleRegistrationGenerator.ts index fa69764..1030169 100644 --- a/src/generator/module/ModuleRegistrationGenerator.ts +++ b/src/generator/module/ModuleRegistrationGenerator.ts @@ -1,38 +1,30 @@ import { ModuleWizardComposerData, ModuleWizardData } from 'wizard/ModuleWizard'; -import { PhpFile, PsrPrinter } from 'node-php-generator'; import { Uri } from 'vscode'; import GeneratedFile from 'generator/GeneratedFile'; import Magento from 'util/Magento'; -import FileGenerator from 'generator/FileGenerator'; +import TemplateGenerator from 'generator/TemplateGenerator'; +import FileHeader from 'common/php/FileHeader'; -export default class ModuleRegistrationGenerator extends FileGenerator { +export default class ModuleRegistrationGenerator extends TemplateGenerator { public constructor(protected data: ModuleWizardData | ModuleWizardComposerData) { - super(); + super('registration.php', 'php/registration', data); + } + + public getTemplateData(): any { + const data = super.getTemplateData(); + + data.fileHeader = FileHeader.getHeaderAsComment(`${this.data.vendor}_${this.data.module}`); + + return data; } public async generate(workspaceUri: Uri): Promise { - const registrationContent = this.getRegistrationContent(); - const registrationFileUri = Magento.getModuleDirectory( + const moduleDirectory = Magento.getModuleDirectory( this.data.vendor, this.data.module, - workspaceUri, - 'registration.php' + workspaceUri ); - return new GeneratedFile(registrationFileUri, registrationContent); - } - - protected getRegistrationContent(): string { - const printer = new PsrPrinter(); - const file = new PhpFile(); - file.setStrictTypes(true); - file.addUse('Magento\\Framework\\Component\\ComponentRegistrar'); - - const moduleName = Magento.getModuleName(this.data.vendor, this.data.module); - - let content = printer.printFile(file); - - content += `ComponentRegistrar::register(ComponentRegistrar::MODULE, '${moduleName}', __DIR__);\n`; - return content; + return super.generate(moduleDirectory); } } diff --git a/templates/php/registration.ejs b/templates/php/registration.ejs new file mode 100644 index 0000000..aefe240 --- /dev/null +++ b/templates/php/registration.ejs @@ -0,0 +1,9 @@ + +<%- fileHeader -%> +<% } -%> +declare(strict_types=1); + +use Magento\Framework\Component\ComponentRegistrar; + +ComponentRegistrar::register(ComponentRegistrar::MODULE, '<%= vendor %>_<%= module %>', __DIR__);