From 36595078603ea2e545e75118cee56744a321c6b9 Mon Sep 17 00:00:00 2001 From: KristofersOzolinsMagebit Date: Mon, 17 Mar 2025 10:10:58 +0200 Subject: [PATCH 1/5] chore: bumped version --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 972b44b..f39679a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ All notable changes to the "magento-toolbox" extension will be documented in thi Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. -## [Unreleased] +## [1.3.0] - 2025-03-17 - Added: Jump to module command - Changed: All dropdown inputs now support searching From f891c0b005535132b260b787cb976cbb553531b3 Mon Sep 17 00:00:00 2001 From: KristofersOzolinsMagebit Date: Mon, 17 Mar 2025 10:11:00 +0200 Subject: [PATCH 2/5] 1.3.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5d3bf45..dc40875 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "magebit-magento-toolbox", - "version": "1.2.0", + "version": "1.3.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "magebit-magento-toolbox", - "version": "1.2.0", + "version": "1.3.0", "dependencies": { "@types/handlebars": "^4.1.0", "@vscode-elements/elements": "^1.11.0", diff --git a/package.json b/package.json index f596acc..6b02ad5 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Magento 2 code generation, inspection and utility tools", "publisher": "magebit", "icon": "resources/logo.jpg", - "version": "1.2.0", + "version": "1.3.0", "engines": { "vscode": "^1.93.1" }, From 97de88ac4e50d7bd98517ea8d2f90f9d70cc833a Mon Sep 17 00:00:00 2001 From: raideer Date: Sat, 22 Mar 2025 23:03:55 +0200 Subject: [PATCH 3/5] fix: plugin namespace arguments --- CHANGELOG.md | 3 +++ src/generator/plugin/PluginClassGenerator.ts | 19 ++++++++++++++++--- src/parser/php/PhpUseItem.ts | 11 ++++------- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f39679a..02caf22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ All notable changes to the "magento-toolbox" extension will be documented in thi Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. +## [Unreleased] +- Fixed: Generated plugin class arguments contain an incorrect namespace + ## [1.3.0] - 2025-03-17 - Added: Jump to module command diff --git a/src/generator/plugin/PluginClassGenerator.ts b/src/generator/plugin/PluginClassGenerator.ts index cf25460..471a4fc 100644 --- a/src/generator/plugin/PluginClassGenerator.ts +++ b/src/generator/plugin/PluginClassGenerator.ts @@ -89,9 +89,22 @@ export default class PluginClassGenerator extends FileGenerator { return type; } - const namespace = this.subjectClass.namespace; - const typeName = type.startsWith('\\') ? type.slice(1) : type; + if (type.startsWith('\\')) { + return type; + } + + if (type === this.subjectClass.name) { + return `${this.subjectClass.namespace}\\${type}`; + } + + const useItems = this.subjectClass.parent.useItems; + + for (const useItem of useItems) { + if (useItem.name === type) { + return useItem.fullName; + } + } - return `${namespace}\\${typeName}`; + return type; } } diff --git a/src/parser/php/PhpUseItem.ts b/src/parser/php/PhpUseItem.ts index 575d798..4f0bbe8 100644 --- a/src/parser/php/PhpUseItem.ts +++ b/src/parser/php/PhpUseItem.ts @@ -13,18 +13,15 @@ export class PhpUseItem extends PhpNode { } public get fullName() { - if (this.ast.alias) { - return this.ast.alias.name; - } return this.ast.name; } public get name() { - if (this.ast.alias) { - return this.ast.alias.name; - } - const parts = this.ast.name.split('\\'); return last(parts)!; } + + public get alias() { + return this.ast.alias?.name; + } } From c957b18ee48807a5b572d0804e06ba8c0be90937 Mon Sep 17 00:00:00 2001 From: raideer Date: Sat, 22 Mar 2025 23:27:47 +0200 Subject: [PATCH 4/5] chore: moved types to a separate directory --- src/command/GenerateDiXmlFileCommand.ts | 2 +- src/command/GenerateEventsXmlCommand.ts | 2 +- src/command/GenerateLayoutXmlCommand.ts | 4 ++-- src/command/GenerateRoutesXmlFileCommand.ts | 4 ++-- src/command/SimpleTemplateGeneratorCommand.ts | 4 ++-- src/generator/HandlebarsTemplateRenderer.ts | 17 ++++++++++++++--- src/generator/plugin/PluginDiGenerator.ts | 15 ++++++++++++--- src/generator/util/FindOrCreateDiXml.ts | 2 +- src/generator/util/FindOrCreateEventsXml.ts | 2 +- src/indexer/module/ModuleIndexData.ts | 2 +- .../module/ModuleComposerGenerator.test.ts | 2 +- .../module/ModuleRegistrationGenerator.test.ts | 2 +- .../generator/module/ModuleXmlGenerator.test.ts | 2 +- .../observer/ObserverClassGenerator.test.ts | 2 +- .../observer/ObserverEventsGenerator.test.ts | 2 +- .../plugin/PluginClassGenerator.test.ts | 2 +- .../generator/plugin/PluginDiGenerator.test.ts | 2 +- .../preference/PreferenceClassGenerator.test.ts | 2 +- .../preference/PreferenceDiGenerator.test.ts | 2 +- src/{types.ts => types/global.ts} | 0 src/{webview => types}/vscode-elements.d.ts | 0 src/{webview/types.ts => types/webview.ts} | 0 src/util/Magento.ts | 2 +- src/webview/GeneratorWizard.ts | 2 +- src/webview/WizardFieldBuilder.ts | 2 +- src/webview/WizardFormBuilder.ts | 2 +- src/webview/WizardTabBuilder.ts | 2 +- src/webview/components/App.tsx | 2 +- src/webview/components/Wizard.tsx | 2 +- .../components/Wizard/DynamicRowInput.tsx | 2 +- src/webview/components/Wizard/FieldRenderer.tsx | 2 +- src/webview/components/Wizard/Renderer.tsx | 2 +- src/wizard/ModuleWizard.ts | 2 +- src/wizard/ObserverWizard.ts | 2 +- src/wizard/PluginContextWizard.ts | 2 +- src/wizard/PreferenceWizard.ts | 2 +- src/wizard/SimpleTemplateWizard.ts | 4 ++-- templates/handlebars/xml/di/plugin.hbs | 2 ++ templates/handlebars/xml/di/type.hbs | 3 +++ 39 files changed, 67 insertions(+), 42 deletions(-) rename src/{types.ts => types/global.ts} (100%) rename src/{webview => types}/vscode-elements.d.ts (100%) rename src/{webview/types.ts => types/webview.ts} (100%) create mode 100644 templates/handlebars/xml/di/plugin.hbs create mode 100644 templates/handlebars/xml/di/type.hbs diff --git a/src/command/GenerateDiXmlFileCommand.ts b/src/command/GenerateDiXmlFileCommand.ts index a806a4b..0833224 100644 --- a/src/command/GenerateDiXmlFileCommand.ts +++ b/src/command/GenerateDiXmlFileCommand.ts @@ -1,4 +1,4 @@ -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; diff --git a/src/command/GenerateEventsXmlCommand.ts b/src/command/GenerateEventsXmlCommand.ts index 4d88a74..be82692 100644 --- a/src/command/GenerateEventsXmlCommand.ts +++ b/src/command/GenerateEventsXmlCommand.ts @@ -1,6 +1,6 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import FileHeader from 'common/xml/FileHeader'; export default class GenerateEventsXmlCommand extends SimpleTemplateGeneratorCommand { diff --git a/src/command/GenerateLayoutXmlCommand.ts b/src/command/GenerateLayoutXmlCommand.ts index d78826e..3c74218 100644 --- a/src/command/GenerateLayoutXmlCommand.ts +++ b/src/command/GenerateLayoutXmlCommand.ts @@ -1,7 +1,7 @@ -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; -import { WizardField, WizardValidationRule } from 'webview/types'; +import { WizardField, WizardValidationRule } from 'types/webview'; import { WizardFieldBuilder } from 'webview/WizardFieldBuilder'; import FileHeader from 'common/xml/FileHeader'; diff --git a/src/command/GenerateRoutesXmlFileCommand.ts b/src/command/GenerateRoutesXmlFileCommand.ts index 1df986b..a181906 100644 --- a/src/command/GenerateRoutesXmlFileCommand.ts +++ b/src/command/GenerateRoutesXmlFileCommand.ts @@ -1,9 +1,9 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import FileHeader from 'common/xml/FileHeader'; import { WizardFieldBuilder } from 'webview/WizardFieldBuilder'; -import { WizardField, WizardValidationRule } from 'webview/types'; +import { WizardField, WizardValidationRule } from 'types/webview'; export default class GenerateRoutesXmlFileCommand extends SimpleTemplateGeneratorCommand { constructor() { diff --git a/src/command/SimpleTemplateGeneratorCommand.ts b/src/command/SimpleTemplateGeneratorCommand.ts index d4cd512..cbd3a77 100644 --- a/src/command/SimpleTemplateGeneratorCommand.ts +++ b/src/command/SimpleTemplateGeneratorCommand.ts @@ -6,8 +6,8 @@ import FileGeneratorManager from 'generator/FileGeneratorManager'; import TemplateGenerator from 'generator/TemplateGenerator'; import Common from 'util/Common'; import SimpleTemplateWizard, { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; -import { MagentoScope } from 'types'; -import { WizardField, WizardValidationRule } from 'webview/types'; +import { MagentoScope } from 'types/global'; +import { WizardField, WizardValidationRule } from 'types/webview'; export abstract class SimpleTemplateGeneratorCommand extends Command { abstract getWizardTitle(): string; diff --git a/src/generator/HandlebarsTemplateRenderer.ts b/src/generator/HandlebarsTemplateRenderer.ts index 2a8be58..41d2e92 100644 --- a/src/generator/HandlebarsTemplateRenderer.ts +++ b/src/generator/HandlebarsTemplateRenderer.ts @@ -10,13 +10,24 @@ export default class HandlebarsTemplateRenderer { public constructor() { this.handlebars = create(); this.registerHelpers(); - this.registerPartials(); + this.registerGlobalPartials(); } - public async render(template: string, data?: Record): Promise { + public async render( + template: string, + data?: Record, + partials?: Record + ): Promise { try { const templatePath = this.getTemplatePath(template); const templateContent = await FileSystem.readFile(Uri.file(templatePath)); + + if (partials) { + for (const [name, content] of Object.entries(partials)) { + this.handlebars.registerPartial(name, content + '\n'); + } + } + const compiledTemplate = this.handlebars.compile(templateContent); const content = compiledTemplate(data); return content; @@ -39,7 +50,7 @@ export default class HandlebarsTemplateRenderer { }); } - protected registerPartials(): void { + protected registerGlobalPartials(): void { this.handlebars.registerPartial('fileHeader', '{{#if fileHeader}}\n{{{fileHeader}}}\n{{/if}}'); } } diff --git a/src/generator/plugin/PluginDiGenerator.ts b/src/generator/plugin/PluginDiGenerator.ts index f2c60ff..8f830a2 100644 --- a/src/generator/plugin/PluginDiGenerator.ts +++ b/src/generator/plugin/PluginDiGenerator.ts @@ -33,17 +33,26 @@ export default class PluginDiGenerator extends FileGenerator { const renderer = new HandlebarsTemplateRenderer(); - const pluginXml = await renderer.render('xml/plugin', { + const pluginXml = await renderer.render('xml/di/plugin', { pluginName: this.data.name, pluginType: pluginType.toString(), sortOrder: this.data.sortOrder, - subjectNamespace, }); + const diType = await renderer.render( + 'xml/di/type', + { + subjectNamespace, + }, + { + typeContent: pluginXml, + } + ); + const newDiXml = diXml.slice(0, insertPosition) + '\n' + - indentString(pluginXml, 4) + + indentString(diType, 4) + '\n' + diXml.slice(insertPosition); diff --git a/src/generator/util/FindOrCreateDiXml.ts b/src/generator/util/FindOrCreateDiXml.ts index cf7ba7f..dfec214 100644 --- a/src/generator/util/FindOrCreateDiXml.ts +++ b/src/generator/util/FindOrCreateDiXml.ts @@ -1,7 +1,7 @@ import { Uri } from 'vscode'; import FileSystem from 'util/FileSystem'; import FileHeader from 'common/xml/FileHeader'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import Magento from 'util/Magento'; import HandlebarsTemplateRenderer from '../HandlebarsTemplateRenderer'; diff --git a/src/generator/util/FindOrCreateEventsXml.ts b/src/generator/util/FindOrCreateEventsXml.ts index ffe7afc..5c2ca45 100644 --- a/src/generator/util/FindOrCreateEventsXml.ts +++ b/src/generator/util/FindOrCreateEventsXml.ts @@ -1,6 +1,6 @@ import { Uri } from 'vscode'; import FileSystem from 'util/FileSystem'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import FileHeader from 'common/xml/FileHeader'; import HandlebarsTemplateRenderer from '../HandlebarsTemplateRenderer'; diff --git a/src/indexer/module/ModuleIndexData.ts b/src/indexer/module/ModuleIndexData.ts index 2594aa4..40d7c84 100644 --- a/src/indexer/module/ModuleIndexData.ts +++ b/src/indexer/module/ModuleIndexData.ts @@ -1,4 +1,4 @@ -import { WizardSelectOption } from 'webview/types'; +import { WizardSelectOption } from 'types/webview'; import { Module } from './types'; import { Uri } from 'vscode'; import { AbstractIndexData } from 'indexer/AbstractIndexData'; diff --git a/src/test/generator/module/ModuleComposerGenerator.test.ts b/src/test/generator/module/ModuleComposerGenerator.test.ts index d84a8d5..dd7ed30 100644 --- a/src/test/generator/module/ModuleComposerGenerator.test.ts +++ b/src/test/generator/module/ModuleComposerGenerator.test.ts @@ -1,5 +1,5 @@ import { ModuleWizardComposerData } from 'wizard/ModuleWizard'; -import { License } from 'types'; +import { License } from 'types/global'; import * as assert from 'assert'; import ModuleComposerGenerator from 'generator/module/ModuleComposerGenerator'; import { describe, it, before } from 'mocha'; diff --git a/src/test/generator/module/ModuleRegistrationGenerator.test.ts b/src/test/generator/module/ModuleRegistrationGenerator.test.ts index 75b8ed3..1307819 100644 --- a/src/test/generator/module/ModuleRegistrationGenerator.test.ts +++ b/src/test/generator/module/ModuleRegistrationGenerator.test.ts @@ -1,5 +1,5 @@ import { ModuleWizardData } from 'wizard/ModuleWizard'; -import { License } from 'types'; +import { License } from 'types/global'; import * as assert from 'assert'; import ModuleRegistrationGenerator from 'generator/module/ModuleRegistrationGenerator'; import FileHeader from 'common/php/FileHeader'; diff --git a/src/test/generator/module/ModuleXmlGenerator.test.ts b/src/test/generator/module/ModuleXmlGenerator.test.ts index 0968406..87bd687 100644 --- a/src/test/generator/module/ModuleXmlGenerator.test.ts +++ b/src/test/generator/module/ModuleXmlGenerator.test.ts @@ -1,5 +1,5 @@ import { ModuleWizardData } from 'wizard/ModuleWizard'; -import { License } from 'types'; +import { License } from 'types/global'; import * as assert from 'assert'; import { Uri } from 'vscode'; import ModuleXmlGenerator from 'generator/module/ModuleXmlGenerator'; diff --git a/src/test/generator/observer/ObserverClassGenerator.test.ts b/src/test/generator/observer/ObserverClassGenerator.test.ts index 6d27be9..5106c75 100644 --- a/src/test/generator/observer/ObserverClassGenerator.test.ts +++ b/src/test/generator/observer/ObserverClassGenerator.test.ts @@ -7,7 +7,7 @@ import { setup } from 'test/setup'; import { getReferenceFile, getTestWorkspaceUri } from 'test/util'; import FileHeader from 'common/php/FileHeader'; import sinon from 'sinon'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; describe('ObserverClassGenerator Tests', () => { const observerWizardData: ObserverWizardData = { diff --git a/src/test/generator/observer/ObserverEventsGenerator.test.ts b/src/test/generator/observer/ObserverEventsGenerator.test.ts index f8c19ae..285f25c 100644 --- a/src/test/generator/observer/ObserverEventsGenerator.test.ts +++ b/src/test/generator/observer/ObserverEventsGenerator.test.ts @@ -5,7 +5,7 @@ import ObserverEventsGenerator from 'generator/observer/ObserverEventsGenerator' import { describe, it, before, afterEach } from 'mocha'; import { setup } from 'test/setup'; import { getReferenceFile, getTestWorkspaceUri } from 'test/util'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import FileHeader from 'common/xml/FileHeader'; import sinon from 'sinon'; diff --git a/src/test/generator/plugin/PluginClassGenerator.test.ts b/src/test/generator/plugin/PluginClassGenerator.test.ts index 3e02f35..d9e4492 100644 --- a/src/test/generator/plugin/PluginClassGenerator.test.ts +++ b/src/test/generator/plugin/PluginClassGenerator.test.ts @@ -9,7 +9,7 @@ import FileHeader from 'common/php/FileHeader'; import sinon from 'sinon'; import { PhpClass } from 'parser/php/PhpClass'; import { PhpMethod } from 'parser/php/PhpMethod'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import PhpParser from 'parser/php/Parser'; describe('PluginClassGenerator Tests', () => { diff --git a/src/test/generator/plugin/PluginDiGenerator.test.ts b/src/test/generator/plugin/PluginDiGenerator.test.ts index 0efeb53..5268049 100644 --- a/src/test/generator/plugin/PluginDiGenerator.test.ts +++ b/src/test/generator/plugin/PluginDiGenerator.test.ts @@ -5,7 +5,7 @@ import PluginDiGenerator from 'generator/plugin/PluginDiGenerator'; import { describe, it, before } from 'mocha'; import { setup } from 'test/setup'; import { getReferenceFile, getReferenceFilePath, getTestWorkspaceUri } from 'test/util'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import { PhpClass } from 'parser/php/PhpClass'; import PhpParser from 'parser/php/Parser'; import { PhpMethod } from 'parser/php/PhpMethod'; diff --git a/src/test/generator/preference/PreferenceClassGenerator.test.ts b/src/test/generator/preference/PreferenceClassGenerator.test.ts index d29814e..813e90e 100644 --- a/src/test/generator/preference/PreferenceClassGenerator.test.ts +++ b/src/test/generator/preference/PreferenceClassGenerator.test.ts @@ -7,7 +7,7 @@ import { setup } from 'test/setup'; import { getReferenceFile, getTestWorkspaceUri } from 'test/util'; import FileHeader from 'common/php/FileHeader'; import sinon from 'sinon'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; describe('PreferenceClassGenerator Tests', () => { const preferenceWizardData: PreferenceWizardData = { diff --git a/src/test/generator/preference/PreferenceDiGenerator.test.ts b/src/test/generator/preference/PreferenceDiGenerator.test.ts index a14b7f9..0c499ca 100644 --- a/src/test/generator/preference/PreferenceDiGenerator.test.ts +++ b/src/test/generator/preference/PreferenceDiGenerator.test.ts @@ -6,7 +6,7 @@ import { describe, it, before, afterEach } from 'mocha'; import { setup } from 'test/setup'; import { getReferenceFile, getTestWorkspaceUri } from 'test/util'; import sinon from 'sinon'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; describe('PreferenceDiGenerator Tests', () => { const preferenceWizardData: PreferenceWizardData = { diff --git a/src/types.ts b/src/types/global.ts similarity index 100% rename from src/types.ts rename to src/types/global.ts diff --git a/src/webview/vscode-elements.d.ts b/src/types/vscode-elements.d.ts similarity index 100% rename from src/webview/vscode-elements.d.ts rename to src/types/vscode-elements.d.ts diff --git a/src/webview/types.ts b/src/types/webview.ts similarity index 100% rename from src/webview/types.ts rename to src/types/webview.ts diff --git a/src/util/Magento.ts b/src/util/Magento.ts index 183e573..c387aae 100644 --- a/src/util/Magento.ts +++ b/src/util/Magento.ts @@ -1,6 +1,6 @@ import PhpNamespace from 'common/PhpNamespace'; import lowerFirst from 'lodash-es/lowerFirst'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import { Uri, WorkspaceFolder } from 'vscode'; import FileSystem from './FileSystem'; diff --git a/src/webview/GeneratorWizard.ts b/src/webview/GeneratorWizard.ts index fc7b5d9..e67557c 100644 --- a/src/webview/GeneratorWizard.ts +++ b/src/webview/GeneratorWizard.ts @@ -1,7 +1,7 @@ import { Webview } from './Webview'; import * as vscode from 'vscode'; import * as path from 'path'; -import { Command, Message, Wizard } from './types'; +import { Command, Message, Wizard } from 'types/webview'; import ExtensionState from 'common/ExtensionState'; import WizzardClosedError from './error/WizzardClosedError'; diff --git a/src/webview/WizardFieldBuilder.ts b/src/webview/WizardFieldBuilder.ts index eb1094c..ea2a8a6 100644 --- a/src/webview/WizardFieldBuilder.ts +++ b/src/webview/WizardFieldBuilder.ts @@ -4,7 +4,7 @@ import { WizardField, WizardInput, WizardSelectOption, -} from 'webview/types'; +} from 'types/webview'; export class WizardFieldBuilder { private placeholder: string | undefined = undefined; diff --git a/src/webview/WizardFormBuilder.ts b/src/webview/WizardFormBuilder.ts index f4dd838..00b0aab 100644 --- a/src/webview/WizardFormBuilder.ts +++ b/src/webview/WizardFormBuilder.ts @@ -1,5 +1,5 @@ import { ErrorMessages, Rules, TypeCheckingRule } from 'validatorjs'; -import { Wizard, WizardTab } from './types'; +import { Wizard, WizardTab } from 'types/webview'; export class WizardFormBuilder { private title?: string; diff --git a/src/webview/WizardTabBuilder.ts b/src/webview/WizardTabBuilder.ts index 2fd9982..2c5a9c0 100644 --- a/src/webview/WizardTabBuilder.ts +++ b/src/webview/WizardTabBuilder.ts @@ -1,4 +1,4 @@ -import { WizardField, WizardTab } from './types'; +import { WizardField, WizardTab } from 'types/webview'; export class WizardTabBuilder { private id?: string; diff --git a/src/webview/components/App.tsx b/src/webview/components/App.tsx index a69a1f6..e16be0a 100644 --- a/src/webview/components/App.tsx +++ b/src/webview/components/App.tsx @@ -2,7 +2,7 @@ import '@vscode-elements/elements'; import './app.css'; import { useEffect, useState } from 'react'; import Wizard from './Wizard'; -import { Command, Page, Wizard as WizardType } from '../types'; +import { Command, Page, Wizard as WizardType } from 'types/webview'; const vscode = (window as any).acquireVsCodeApi(); diff --git a/src/webview/components/Wizard.tsx b/src/webview/components/Wizard.tsx index 5e59581..161e003 100644 --- a/src/webview/components/Wizard.tsx +++ b/src/webview/components/Wizard.tsx @@ -1,5 +1,5 @@ import { WebviewApi } from 'vscode-webview'; -import { Wizard as WizardType } from '../types'; +import { Wizard as WizardType } from 'types/webview'; import { Renderer } from './Wizard/Renderer'; interface WizardProps { diff --git a/src/webview/components/Wizard/DynamicRowInput.tsx b/src/webview/components/Wizard/DynamicRowInput.tsx index 6ad7bc4..9b4aefb 100644 --- a/src/webview/components/Wizard/DynamicRowInput.tsx +++ b/src/webview/components/Wizard/DynamicRowInput.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react'; -import { WizardDynamicRowField, WizardField } from 'webview/types'; +import { WizardDynamicRowField, WizardField } from 'types/webview'; import { FieldRenderer } from './FieldRenderer'; import { FieldArray, useFormikContext } from 'formik'; diff --git a/src/webview/components/Wizard/FieldRenderer.tsx b/src/webview/components/Wizard/FieldRenderer.tsx index 7b31cd1..7416628 100644 --- a/src/webview/components/Wizard/FieldRenderer.tsx +++ b/src/webview/components/Wizard/FieldRenderer.tsx @@ -1,7 +1,7 @@ import { Option } from '@vscode-elements/elements/dist/includes/vscode-select/types'; import { useField, useFormikContext } from 'formik'; import { useEffect, useMemo, useRef } from 'react'; -import { WizardField, WizardInput, WizardSelectOption } from 'webview/types'; +import { WizardField, WizardInput, WizardSelectOption } from 'types/webview'; import { DynamicRowInput } from './DynamicRowInput'; import { FieldErrorMessage } from './FieldErrorMessage'; diff --git a/src/webview/components/Wizard/Renderer.tsx b/src/webview/components/Wizard/Renderer.tsx index 0d67e7f..ada67f6 100644 --- a/src/webview/components/Wizard/Renderer.tsx +++ b/src/webview/components/Wizard/Renderer.tsx @@ -2,7 +2,7 @@ import { Formik, FormikProps, FormikValues } from 'formik'; import { useCallback } from 'react'; import { WebviewApi } from 'vscode-webview'; import Validator from 'validatorjs'; -import { Wizard, WizardInput } from 'webview/types'; +import { Wizard, WizardInput } from 'types/webview'; import { FieldRenderer } from './FieldRenderer'; interface Props { diff --git a/src/wizard/ModuleWizard.ts b/src/wizard/ModuleWizard.ts index aebb7c0..8129401 100644 --- a/src/wizard/ModuleWizard.ts +++ b/src/wizard/ModuleWizard.ts @@ -1,6 +1,6 @@ import IndexManager from 'indexer/IndexManager'; import ModuleIndexer from 'indexer/module/ModuleIndexer'; -import { License } from 'types'; +import { License } from 'types/global'; import { GeneratorWizard } from 'webview/GeneratorWizard'; import { WizardFieldBuilder } from 'webview/WizardFieldBuilder'; import { WizardFormBuilder } from 'webview/WizardFormBuilder'; diff --git a/src/wizard/ObserverWizard.ts b/src/wizard/ObserverWizard.ts index 284a81d..3b75b69 100644 --- a/src/wizard/ObserverWizard.ts +++ b/src/wizard/ObserverWizard.ts @@ -1,7 +1,7 @@ import Validation from 'common/Validation'; import IndexManager from 'indexer/IndexManager'; import ModuleIndexer from 'indexer/module/ModuleIndexer'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import { GeneratorWizard } from 'webview/GeneratorWizard'; import { WizardFieldBuilder } from 'webview/WizardFieldBuilder'; import { WizardFormBuilder } from 'webview/WizardFormBuilder'; diff --git a/src/wizard/PluginContextWizard.ts b/src/wizard/PluginContextWizard.ts index 939225b..26d0ee8 100644 --- a/src/wizard/PluginContextWizard.ts +++ b/src/wizard/PluginContextWizard.ts @@ -1,6 +1,6 @@ import IndexManager from 'indexer/IndexManager'; import ModuleIndexer from 'indexer/module/ModuleIndexer'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import { GeneratorWizard } from 'webview/GeneratorWizard'; import { WizardFieldBuilder } from 'webview/WizardFieldBuilder'; import { WizardFormBuilder } from 'webview/WizardFormBuilder'; diff --git a/src/wizard/PreferenceWizard.ts b/src/wizard/PreferenceWizard.ts index f001dd8..4d2a472 100644 --- a/src/wizard/PreferenceWizard.ts +++ b/src/wizard/PreferenceWizard.ts @@ -1,6 +1,6 @@ import IndexManager from 'indexer/IndexManager'; import ModuleIndexer from 'indexer/module/ModuleIndexer'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import { GeneratorWizard } from 'webview/GeneratorWizard'; import { WizardFieldBuilder } from 'webview/WizardFieldBuilder'; import { WizardFormBuilder } from 'webview/WizardFormBuilder'; diff --git a/src/wizard/SimpleTemplateWizard.ts b/src/wizard/SimpleTemplateWizard.ts index 3472d37..0d03236 100644 --- a/src/wizard/SimpleTemplateWizard.ts +++ b/src/wizard/SimpleTemplateWizard.ts @@ -1,12 +1,12 @@ import IndexManager from 'indexer/IndexManager'; import ModuleIndexer from 'indexer/module/ModuleIndexer'; -import { MagentoScope } from 'types'; +import { MagentoScope } from 'types/global'; import { GeneratorWizard } from 'webview/GeneratorWizard'; import { WizardFieldBuilder } from 'webview/WizardFieldBuilder'; import { WizardFormBuilder } from 'webview/WizardFormBuilder'; import { WizardTabBuilder } from 'webview/WizardTabBuilder'; import slugify from 'slugify'; -import { WizardField, WizardValidationRule } from 'webview/types'; +import { WizardField, WizardValidationRule } from 'types/webview'; export type TemplateWizardData = { module: string; diff --git a/templates/handlebars/xml/di/plugin.hbs b/templates/handlebars/xml/di/plugin.hbs new file mode 100644 index 0000000..4de0d5d --- /dev/null +++ b/templates/handlebars/xml/di/plugin.hbs @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/templates/handlebars/xml/di/type.hbs b/templates/handlebars/xml/di/type.hbs new file mode 100644 index 0000000..8227472 --- /dev/null +++ b/templates/handlebars/xml/di/type.hbs @@ -0,0 +1,3 @@ + + {{> typeContent }} + \ No newline at end of file From b9e94d318c4f24de9b046e06a8a2a8fa560d1ed4 Mon Sep 17 00:00:00 2001 From: raideer Date: Sun, 23 Mar 2025 00:04:35 +0200 Subject: [PATCH 5/5] chore: added template types --- src/command/GenerateAclXmlFileCommand.ts | 5 +- src/command/GenerateConfigXmlFileCommand.ts | 5 +- src/command/GenerateCrontabXmlCommand.ts | 5 +- src/command/GenerateDiXmlFileCommand.ts | 5 +- .../GenerateEmailTemplatesXmlCommand.ts | 5 +- src/command/GenerateEventsXmlCommand.ts | 5 +- ...nerateExtensionAttributesXmlFileCommand.ts | 5 +- src/command/GenerateFieldsetXmlCommand.ts | 5 +- src/command/GenerateGraphqlSchemaFile.ts | 5 +- src/command/GenerateIndexerXmlFileCommand.ts | 5 +- src/command/GenerateLayoutXmlCommand.ts | 5 +- src/command/GenerateMviewXmlFileCommand.ts | 5 +- src/command/GeneratePageTypesXmlCommand.ts | 5 +- src/command/GenerateRoutesXmlFileCommand.ts | 7 +- src/command/GenerateSectionsXmlCommand.ts | 6 +- src/command/GenerateSystemXmlFileCommand.ts | 5 +- src/command/GenerateViewXmlFile.ts | 5 +- src/command/GenerateWebapiXmlFileCommand.ts | 5 +- src/command/GenerateWidgetXmlFileCommand.ts | 5 +- src/command/SimpleTemplateGeneratorCommand.ts | 16 +- src/generator/HandlebarsTemplateRenderer.ts | 18 ++- src/generator/TemplateGenerator.ts | 12 +- .../module/ModuleLicenseGenerator.ts | 15 +- .../module/ModuleRegistrationGenerator.ts | 5 +- .../observer/ObserverEventsGenerator.ts | 16 +- src/generator/plugin/PluginDiGenerator.ts | 5 +- .../preference/PreferenceDiGenerator.ts | 3 +- src/generator/util/FindOrCreateDiXml.ts | 3 +- src/generator/util/FindOrCreateEventsXml.ts | 3 +- src/types/handlebars.ts | 152 ++++++++++++++++++ .../handlebars/xml/{ => di}/preference.hbs | 0 templates/handlebars/xml/di/type.hbs | 2 +- templates/handlebars/xml/events/event.hbs | 3 + templates/handlebars/xml/events/observer.hbs | 1 + templates/handlebars/xml/observer.hbs | 3 - templates/handlebars/xml/plugin.hbs | 4 - 36 files changed, 284 insertions(+), 75 deletions(-) create mode 100644 src/types/handlebars.ts rename templates/handlebars/xml/{ => di}/preference.hbs (100%) create mode 100644 templates/handlebars/xml/events/event.hbs create mode 100644 templates/handlebars/xml/events/observer.hbs delete mode 100644 templates/handlebars/xml/observer.hbs delete mode 100644 templates/handlebars/xml/plugin.hbs diff --git a/src/command/GenerateAclXmlFileCommand.ts b/src/command/GenerateAclXmlFileCommand.ts index c2ba402..43255a8 100644 --- a/src/command/GenerateAclXmlFileCommand.ts +++ b/src/command/GenerateAclXmlFileCommand.ts @@ -1,5 +1,6 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateAclXmlFileCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -16,7 +17,7 @@ export default class GenerateAclXmlFileCommand extends SimpleTemplateGeneratorCo return `app/code/${vendor}/${module}/etc/acl.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-acl'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankAcl; } } diff --git a/src/command/GenerateConfigXmlFileCommand.ts b/src/command/GenerateConfigXmlFileCommand.ts index c2d4a2a..db5b888 100644 --- a/src/command/GenerateConfigXmlFileCommand.ts +++ b/src/command/GenerateConfigXmlFileCommand.ts @@ -1,6 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateConfigXmlFileCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -21,7 +22,7 @@ export default class GenerateConfigXmlFileCommand extends SimpleTemplateGenerato return `app/code/${vendor}/${module}/etc/config.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-config'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankConfig; } } diff --git a/src/command/GenerateCrontabXmlCommand.ts b/src/command/GenerateCrontabXmlCommand.ts index d964e6f..74a6b80 100644 --- a/src/command/GenerateCrontabXmlCommand.ts +++ b/src/command/GenerateCrontabXmlCommand.ts @@ -1,6 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateCrontabXmlCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -21,7 +22,7 @@ export default class GenerateCrontabXmlCommand extends SimpleTemplateGeneratorCo return `app/code/${vendor}/${module}/etc/crontab.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-crontab'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankCrontab; } } diff --git a/src/command/GenerateDiXmlFileCommand.ts b/src/command/GenerateDiXmlFileCommand.ts index 0833224..e104711 100644 --- a/src/command/GenerateDiXmlFileCommand.ts +++ b/src/command/GenerateDiXmlFileCommand.ts @@ -1,6 +1,7 @@ import { MagentoScope } from 'types/global'; import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateDiXmlFileCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -33,7 +34,7 @@ export default class GenerateDiXmlFileCommand extends SimpleTemplateGeneratorCom return `app/code/${vendor}/${module}/etc/di.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-di'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankDi; } } diff --git a/src/command/GenerateEmailTemplatesXmlCommand.ts b/src/command/GenerateEmailTemplatesXmlCommand.ts index 79bf69d..7415862 100644 --- a/src/command/GenerateEmailTemplatesXmlCommand.ts +++ b/src/command/GenerateEmailTemplatesXmlCommand.ts @@ -1,6 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateEmailTemplatesXmlCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -21,7 +22,7 @@ export default class GenerateEmailTemplatesXmlCommand extends SimpleTemplateGene return `app/code/${vendor}/${module}/etc/email_templates.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-email-templates'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankEmailTemplates; } } diff --git a/src/command/GenerateEventsXmlCommand.ts b/src/command/GenerateEventsXmlCommand.ts index be82692..49e7358 100644 --- a/src/command/GenerateEventsXmlCommand.ts +++ b/src/command/GenerateEventsXmlCommand.ts @@ -2,6 +2,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import { MagentoScope } from 'types/global'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateEventsXmlCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -38,7 +39,7 @@ export default class GenerateEventsXmlCommand extends SimpleTemplateGeneratorCom return `app/code/${vendor}/${module}/etc/events.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-events'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankEvents; } } diff --git a/src/command/GenerateExtensionAttributesXmlFileCommand.ts b/src/command/GenerateExtensionAttributesXmlFileCommand.ts index 967ca07..807cba2 100644 --- a/src/command/GenerateExtensionAttributesXmlFileCommand.ts +++ b/src/command/GenerateExtensionAttributesXmlFileCommand.ts @@ -1,6 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateExtensionAttributesXmlFileCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -21,7 +22,7 @@ export default class GenerateExtensionAttributesXmlFileCommand extends SimpleTem return `app/code/${vendor}/${module}/etc/extension_attributes.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-extension-attributes'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankExtensionAttributes; } } diff --git a/src/command/GenerateFieldsetXmlCommand.ts b/src/command/GenerateFieldsetXmlCommand.ts index 0917bc7..7e111ce 100644 --- a/src/command/GenerateFieldsetXmlCommand.ts +++ b/src/command/GenerateFieldsetXmlCommand.ts @@ -1,6 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateFieldsetXmlCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -21,7 +22,7 @@ export default class GenerateFieldsetXmlCommand extends SimpleTemplateGeneratorC return `app/code/${vendor}/${module}/etc/fieldset.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-fieldset'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankFieldset; } } diff --git a/src/command/GenerateGraphqlSchemaFile.ts b/src/command/GenerateGraphqlSchemaFile.ts index 7c82b06..66726b0 100644 --- a/src/command/GenerateGraphqlSchemaFile.ts +++ b/src/command/GenerateGraphqlSchemaFile.ts @@ -1,5 +1,6 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateGraphqlSchemaFileCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -16,7 +17,7 @@ export default class GenerateGraphqlSchemaFileCommand extends SimpleTemplateGene return `app/code/${vendor}/${module}/etc/schema.graphqls`; } - getTemplateName(data: TemplateWizardData): string { - return 'graphql/blank-schema'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.GraphqlBlankSchema; } } diff --git a/src/command/GenerateIndexerXmlFileCommand.ts b/src/command/GenerateIndexerXmlFileCommand.ts index 5db3be7..35b7da7 100644 --- a/src/command/GenerateIndexerXmlFileCommand.ts +++ b/src/command/GenerateIndexerXmlFileCommand.ts @@ -1,6 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateIndexerXmlFileCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -21,7 +22,7 @@ export default class GenerateIndexerXmlFileCommand extends SimpleTemplateGenerat return `app/code/${vendor}/${module}/etc/indexer.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-indexer'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankIndexer; } } diff --git a/src/command/GenerateLayoutXmlCommand.ts b/src/command/GenerateLayoutXmlCommand.ts index 3c74218..7046638 100644 --- a/src/command/GenerateLayoutXmlCommand.ts +++ b/src/command/GenerateLayoutXmlCommand.ts @@ -4,6 +4,7 @@ import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import { WizardField, WizardValidationRule } from 'types/webview'; import { WizardFieldBuilder } from 'webview/WizardFieldBuilder'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateLayoutXmlCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -40,8 +41,8 @@ export default class GenerateLayoutXmlCommand extends SimpleTemplateGeneratorCom return `app/code/${vendor}/${module}/view/base/layout/${data.name}.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-layout'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankLayout; } getWizardFields(): WizardField[] { diff --git a/src/command/GenerateMviewXmlFileCommand.ts b/src/command/GenerateMviewXmlFileCommand.ts index 7439a64..55b783a 100644 --- a/src/command/GenerateMviewXmlFileCommand.ts +++ b/src/command/GenerateMviewXmlFileCommand.ts @@ -1,6 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateMviewXmlFileCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -21,7 +22,7 @@ export default class GenerateMviewXmlFileCommand extends SimpleTemplateGenerator return `app/code/${vendor}/${module}/etc/mview.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-mview'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankMview; } } diff --git a/src/command/GeneratePageTypesXmlCommand.ts b/src/command/GeneratePageTypesXmlCommand.ts index d504a09..4449bc3 100644 --- a/src/command/GeneratePageTypesXmlCommand.ts +++ b/src/command/GeneratePageTypesXmlCommand.ts @@ -1,6 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GeneratePageTypesXmlCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -21,7 +22,7 @@ export default class GeneratePageTypesXmlCommand extends SimpleTemplateGenerator return `app/code/${vendor}/${module}/etc/frontend/page_types.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-page-types'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankPageTypes; } } diff --git a/src/command/GenerateRoutesXmlFileCommand.ts b/src/command/GenerateRoutesXmlFileCommand.ts index a181906..afa55ef 100644 --- a/src/command/GenerateRoutesXmlFileCommand.ts +++ b/src/command/GenerateRoutesXmlFileCommand.ts @@ -4,6 +4,7 @@ import { MagentoScope } from 'types/global'; import FileHeader from 'common/xml/FileHeader'; import { WizardFieldBuilder } from 'webview/WizardFieldBuilder'; import { WizardField, WizardValidationRule } from 'types/webview'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateRoutesXmlFileCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -28,8 +29,8 @@ export default class GenerateRoutesXmlFileCommand extends SimpleTemplateGenerato return `app/code/${vendor}/${module}/etc/${data.area}/routes.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-routes'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankRoutes; } getWizardFields(): WizardField[] { @@ -85,7 +86,7 @@ export default class GenerateRoutesXmlFileCommand extends SimpleTemplateGenerato }; } - getTemplateData(data: TemplateWizardData): Record { + getTemplateData(data: TemplateWizardData): Record { return { ...data, routerId: data.frontendRouterId || data.adminRouterId || 'default', diff --git a/src/command/GenerateSectionsXmlCommand.ts b/src/command/GenerateSectionsXmlCommand.ts index 75cfd68..6a322e6 100644 --- a/src/command/GenerateSectionsXmlCommand.ts +++ b/src/command/GenerateSectionsXmlCommand.ts @@ -1,7 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; - +import { TemplatePath } from 'types/handlebars'; export default class GenerateSectionsXmlCommand extends SimpleTemplateGeneratorCommand { constructor() { super('magento-toolbox.generateSectionsXmlFile'); @@ -21,7 +21,7 @@ export default class GenerateSectionsXmlCommand extends SimpleTemplateGeneratorC return `app/code/${vendor}/${module}/etc/frontend/sections.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-sections'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankSections; } } diff --git a/src/command/GenerateSystemXmlFileCommand.ts b/src/command/GenerateSystemXmlFileCommand.ts index bb2ea5c..335e02c 100644 --- a/src/command/GenerateSystemXmlFileCommand.ts +++ b/src/command/GenerateSystemXmlFileCommand.ts @@ -1,6 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateSystemXmlFileCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -21,7 +22,7 @@ export default class GenerateSystemXmlFileCommand extends SimpleTemplateGenerato return `app/code/${vendor}/${module}/etc/adminhtml/system.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-system'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankSystem; } } diff --git a/src/command/GenerateViewXmlFile.ts b/src/command/GenerateViewXmlFile.ts index 09bfa4e..064d7be 100644 --- a/src/command/GenerateViewXmlFile.ts +++ b/src/command/GenerateViewXmlFile.ts @@ -1,6 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateViewXmlFile extends SimpleTemplateGeneratorCommand { constructor() { @@ -21,7 +22,7 @@ export default class GenerateViewXmlFile extends SimpleTemplateGeneratorCommand return `app/code/${vendor}/${module}/etc/view.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-view'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankView; } } diff --git a/src/command/GenerateWebapiXmlFileCommand.ts b/src/command/GenerateWebapiXmlFileCommand.ts index 115cd7c..ab2f5f5 100644 --- a/src/command/GenerateWebapiXmlFileCommand.ts +++ b/src/command/GenerateWebapiXmlFileCommand.ts @@ -1,6 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateWebapiXmlFileCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -21,7 +22,7 @@ export default class GenerateWebapiXmlFileCommand extends SimpleTemplateGenerato return `app/code/${vendor}/${module}/etc/webapi.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-webapi'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankWebapi; } } diff --git a/src/command/GenerateWidgetXmlFileCommand.ts b/src/command/GenerateWidgetXmlFileCommand.ts index 2bdd237..8615ee1 100644 --- a/src/command/GenerateWidgetXmlFileCommand.ts +++ b/src/command/GenerateWidgetXmlFileCommand.ts @@ -1,6 +1,7 @@ import { SimpleTemplateGeneratorCommand } from './SimpleTemplateGeneratorCommand'; import { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import FileHeader from 'common/xml/FileHeader'; +import { TemplatePath } from 'types/handlebars'; export default class GenerateWidgetXmlFileCommand extends SimpleTemplateGeneratorCommand { constructor() { @@ -21,7 +22,7 @@ export default class GenerateWidgetXmlFileCommand extends SimpleTemplateGenerato return `app/code/${vendor}/${module}/etc/widget.xml`; } - getTemplateName(data: TemplateWizardData): string { - return 'xml/blank-widget'; + getTemplateName(data: TemplateWizardData): TemplatePath { + return TemplatePath.XmlBlankWidget; } } diff --git a/src/command/SimpleTemplateGeneratorCommand.ts b/src/command/SimpleTemplateGeneratorCommand.ts index cbd3a77..42cc4a0 100644 --- a/src/command/SimpleTemplateGeneratorCommand.ts +++ b/src/command/SimpleTemplateGeneratorCommand.ts @@ -8,6 +8,7 @@ import Common from 'util/Common'; import SimpleTemplateWizard, { TemplateWizardData } from 'wizard/SimpleTemplateWizard'; import { MagentoScope } from 'types/global'; import { WizardField, WizardValidationRule } from 'types/webview'; +import { TemplatePath } from 'types/handlebars'; export abstract class SimpleTemplateGeneratorCommand extends Command { abstract getWizardTitle(): string; @@ -18,7 +19,7 @@ export abstract class SimpleTemplateGeneratorCommand extends Command { abstract getFilePath(data: TemplateWizardData): string; - abstract getTemplateName(data: TemplateWizardData): string; + abstract getTemplateName(data: TemplateWizardData): TemplatePath; public getFileHeader(data: TemplateWizardData): string | undefined { return undefined; @@ -32,7 +33,7 @@ export abstract class SimpleTemplateGeneratorCommand extends Command { return {}; } - public getTemplateData(data: TemplateWizardData): Record { + public getTemplateData(data: TemplateWizardData): Record { return data; } @@ -81,11 +82,14 @@ export abstract class SimpleTemplateGeneratorCommand extends Command { const contextModule = this.getContextModule(uri); const data = await this.getWizardData(contextModule); + const templateName = this.getTemplateName(data); + const templateData = { + ...this.getTemplateData(data), + fileHeader: this.getFileHeader(data) ?? '', + }; + const manager = new FileGeneratorManager([ - new TemplateGenerator(this.getFilePath(data), this.getTemplateName(data), { - ...this.getTemplateData(data), - fileHeader: this.getFileHeader(data) ?? '', - }), + new TemplateGenerator(this.getFilePath(data), templateName, templateData as any), ]); const workspaceFolder = this.getWorkspaceFolder(); diff --git a/src/generator/HandlebarsTemplateRenderer.ts b/src/generator/HandlebarsTemplateRenderer.ts index 41d2e92..0992ab9 100644 --- a/src/generator/HandlebarsTemplateRenderer.ts +++ b/src/generator/HandlebarsTemplateRenderer.ts @@ -3,6 +3,12 @@ import { resolve } from 'path'; import FileSystem from 'util/FileSystem'; import { Uri } from 'vscode'; import Logger from 'util/Logger'; +import { + TemplatePath, + TemplateParams, + TemplatePartials, + BaseTemplatePartials, +} from 'types/handlebars'; export default class HandlebarsTemplateRenderer { protected handlebars: typeof Handlebars; @@ -13,10 +19,10 @@ export default class HandlebarsTemplateRenderer { this.registerGlobalPartials(); } - public async render( - template: string, - data?: Record, - partials?: Record + public async render( + template: T, + data?: TemplateParams[T], + partials?: TemplatePartials[T] | BaseTemplatePartials ): Promise { try { const templatePath = this.getTemplatePath(template); @@ -24,7 +30,9 @@ export default class HandlebarsTemplateRenderer { if (partials) { for (const [name, content] of Object.entries(partials)) { - this.handlebars.registerPartial(name, content + '\n'); + if (typeof content === 'string') { + this.handlebars.registerPartial(name, content + '\n'); + } } } diff --git a/src/generator/TemplateGenerator.ts b/src/generator/TemplateGenerator.ts index d02b951..add3ee9 100644 --- a/src/generator/TemplateGenerator.ts +++ b/src/generator/TemplateGenerator.ts @@ -2,19 +2,23 @@ import { Uri } from 'vscode'; import FileGenerator from './FileGenerator'; import GeneratedFile from './GeneratedFile'; import HandlebarsTemplateRenderer from './HandlebarsTemplateRenderer'; +import { TemplatePath, TemplateParams } from 'types/handlebars'; -export default class TemplateGenerator extends FileGenerator { +export default class TemplateGenerator< + T extends TemplatePath, + P extends TemplateParams[T] = TemplateParams[T], +> extends FileGenerator { protected renderer: HandlebarsTemplateRenderer | undefined; public constructor( protected fileName: string, - protected templateName: string, - protected data: Record + protected templateName: T, + protected data: P ) { super(); } - public getTemplateData(): Record { + public getTemplateData(): P { return this.data; } diff --git a/src/generator/module/ModuleLicenseGenerator.ts b/src/generator/module/ModuleLicenseGenerator.ts index af0239b..48eff93 100644 --- a/src/generator/module/ModuleLicenseGenerator.ts +++ b/src/generator/module/ModuleLicenseGenerator.ts @@ -3,10 +3,21 @@ import TemplateGenerator from 'generator/TemplateGenerator'; import Magento from 'util/Magento'; import { Uri } from 'vscode'; import { ModuleWizardComposerData, ModuleWizardData } from 'wizard/ModuleWizard'; +import { TemplatePath } from 'types/handlebars'; -export default class ModuleLicenseGenerator extends TemplateGenerator { +export default class ModuleLicenseGenerator extends TemplateGenerator< + | TemplatePath.LicenseMit + | TemplatePath.LicenseGplv3 + | TemplatePath.LicenseApache20 + | TemplatePath.LicenseOslv3 +> { public constructor(protected data: ModuleWizardData | ModuleWizardComposerData) { - super('LICENSE.txt', `license/${data.license}`, data); + const params = { + ...data, + year: new Date().getFullYear(), + }; + + super('LICENSE.txt', TemplatePath.LicenseMit, params); } public async generate(workspaceUri: Uri): Promise { diff --git a/src/generator/module/ModuleRegistrationGenerator.ts b/src/generator/module/ModuleRegistrationGenerator.ts index 1030169..bca33ec 100644 --- a/src/generator/module/ModuleRegistrationGenerator.ts +++ b/src/generator/module/ModuleRegistrationGenerator.ts @@ -4,10 +4,11 @@ import GeneratedFile from 'generator/GeneratedFile'; import Magento from 'util/Magento'; import TemplateGenerator from 'generator/TemplateGenerator'; import FileHeader from 'common/php/FileHeader'; +import { TemplatePath } from 'types/handlebars'; -export default class ModuleRegistrationGenerator extends TemplateGenerator { +export default class ModuleRegistrationGenerator extends TemplateGenerator { public constructor(protected data: ModuleWizardData | ModuleWizardComposerData) { - super('registration.php', 'php/registration', data); + super('registration.php', TemplatePath.PhpRegistration, data); } public getTemplateData(): any { diff --git a/src/generator/observer/ObserverEventsGenerator.ts b/src/generator/observer/ObserverEventsGenerator.ts index 09eac4d..4c4bce7 100644 --- a/src/generator/observer/ObserverEventsGenerator.ts +++ b/src/generator/observer/ObserverEventsGenerator.ts @@ -7,6 +7,7 @@ import PhpNamespace from 'common/PhpNamespace'; import FindOrCreateEventsXml from 'generator/util/FindOrCreateEventsXml'; import Magento from 'util/Magento'; import HandlebarsTemplateRenderer from 'generator/HandlebarsTemplateRenderer'; +import { TemplatePath } from 'types/handlebars'; export default class ObserverEventsGenerator extends FileGenerator { public constructor(protected data: ObserverWizardData) { @@ -28,16 +29,25 @@ export default class ObserverEventsGenerator extends FileGenerator { const renderer = new HandlebarsTemplateRenderer(); - const observerXml = await renderer.render('xml/observer', { + const observerXml = await renderer.render(TemplatePath.XmlEventsObserver, { name: this.data.observerName, className: observerNamespace.append(this.data.className).toString(), - eventName: this.data.eventName, }); + const eventXml = await renderer.render( + TemplatePath.XmlEventsEvent, + { + eventName: this.data.eventName, + }, + { + eventContent: observerXml, + } + ); + const newEventsXml = eventsXml.slice(0, insertPosition) + '\n' + - indentString(observerXml, 4) + + indentString(eventXml, 4) + '\n' + eventsXml.slice(insertPosition); diff --git a/src/generator/plugin/PluginDiGenerator.ts b/src/generator/plugin/PluginDiGenerator.ts index 8f830a2..e965962 100644 --- a/src/generator/plugin/PluginDiGenerator.ts +++ b/src/generator/plugin/PluginDiGenerator.ts @@ -9,6 +9,7 @@ import indentString from 'indent-string'; import { PhpInterface } from 'parser/php/PhpInterface'; import Magento from 'util/Magento'; import HandlebarsTemplateRenderer from 'generator/HandlebarsTemplateRenderer'; +import { TemplatePath } from 'types/handlebars'; export default class PluginDiGenerator extends FileGenerator { public constructor( @@ -33,14 +34,14 @@ export default class PluginDiGenerator extends FileGenerator { const renderer = new HandlebarsTemplateRenderer(); - const pluginXml = await renderer.render('xml/di/plugin', { + const pluginXml = await renderer.render(TemplatePath.XmlDiPlugin, { pluginName: this.data.name, pluginType: pluginType.toString(), sortOrder: this.data.sortOrder, }); const diType = await renderer.render( - 'xml/di/type', + TemplatePath.XmlDiType, { subjectNamespace, }, diff --git a/src/generator/preference/PreferenceDiGenerator.ts b/src/generator/preference/PreferenceDiGenerator.ts index 43ab1d7..163a0bb 100644 --- a/src/generator/preference/PreferenceDiGenerator.ts +++ b/src/generator/preference/PreferenceDiGenerator.ts @@ -6,6 +6,7 @@ import indentString from 'indent-string'; import Magento from 'util/Magento'; import FileGenerator from 'generator/FileGenerator'; import HandlebarsTemplateRenderer from 'generator/HandlebarsTemplateRenderer'; +import { TemplatePath } from 'types/handlebars'; export default class PreferenceDiGenerator extends FileGenerator { public constructor(protected data: PreferenceWizardData) { @@ -25,7 +26,7 @@ export default class PreferenceDiGenerator extends FileGenerator { const renderer = new HandlebarsTemplateRenderer(); - const pluginXml = await renderer.render('xml/preference', { + const pluginXml = await renderer.render(TemplatePath.XmlDiPreference, { forClass: this.data.parentClass, typeClass: typeNamespace, }); diff --git a/src/generator/util/FindOrCreateDiXml.ts b/src/generator/util/FindOrCreateDiXml.ts index dfec214..22dd289 100644 --- a/src/generator/util/FindOrCreateDiXml.ts +++ b/src/generator/util/FindOrCreateDiXml.ts @@ -4,6 +4,7 @@ import FileHeader from 'common/xml/FileHeader'; import { MagentoScope } from 'types/global'; import Magento from 'util/Magento'; import HandlebarsTemplateRenderer from '../HandlebarsTemplateRenderer'; +import { TemplatePath } from 'types/handlebars'; export default class FindOrCreateDiXml { public static async execute( @@ -23,7 +24,7 @@ export default class FindOrCreateDiXml { const renderer = new HandlebarsTemplateRenderer(); - return await renderer.render('xml/blank-di', { + return await renderer.render(TemplatePath.XmlBlankDi, { fileHeader, }); } diff --git a/src/generator/util/FindOrCreateEventsXml.ts b/src/generator/util/FindOrCreateEventsXml.ts index 5c2ca45..d9c5a05 100644 --- a/src/generator/util/FindOrCreateEventsXml.ts +++ b/src/generator/util/FindOrCreateEventsXml.ts @@ -3,6 +3,7 @@ import FileSystem from 'util/FileSystem'; import { MagentoScope } from 'types/global'; import FileHeader from 'common/xml/FileHeader'; import HandlebarsTemplateRenderer from '../HandlebarsTemplateRenderer'; +import { TemplatePath } from 'types/handlebars'; export default class FindOrCreateEventsXml { public static async execute( @@ -31,7 +32,7 @@ export default class FindOrCreateEventsXml { const fileHeader = FileHeader.getHeader(`${vendor}_${module}`); - return await renderer.render('xml/blank-events', { + return await renderer.render(TemplatePath.XmlBlankEvents, { fileHeader, }); } diff --git a/src/types/handlebars.ts b/src/types/handlebars.ts new file mode 100644 index 0000000..072d1be --- /dev/null +++ b/src/types/handlebars.ts @@ -0,0 +1,152 @@ +export enum TemplatePath { + GraphqlBlankSchema = 'graphql/blank-schema', + LicenseApache20 = 'license/apache2', + LicenseGplv3 = 'license/gplv3', + LicenseMit = 'license/mit', + LicenseOslv3 = 'license/oslv3', + PhpRegistration = 'php/registration', + XmlDiType = 'xml/di/type', + XmlDiPlugin = 'xml/di/plugin', + XmlDiPreference = 'xml/di/preference', + XmlBlankAcl = 'xml/blank-acl', + XmlBlankConfig = 'xml/blank-config', + XmlBlankCrontab = 'xml/blank-crontab', + XmlBlankDi = 'xml/blank-di', + XmlBlankEmailTemplates = 'xml/blank-email-templates', + XmlBlankEvents = 'xml/blank-events', + XmlBlankExtensionAttributes = 'xml/blank-extension-attributes', + XmlBlankFieldset = 'xml/blank-fieldset', + XmlBlankIndexer = 'xml/blank-indexer', + XmlBlankLayout = 'xml/blank-layout', + XmlBlankMview = 'xml/blank-mview', + XmlBlankPageTypes = 'xml/blank-page-types', + XmlBlankRoutes = 'xml/blank-routes', + XmlBlankSections = 'xml/blank-sections', + XmlBlankSystem = 'xml/blank-system', + XmlBlankView = 'xml/blank-view', + XmlBlankWebapi = 'xml/blank-webapi', + XmlBlankWidget = 'xml/blank-widget', + XmlEventsObserver = 'xml/events/observer', + XmlEventsEvent = 'xml/events/event', +} + +/** + * Common interface for all template parameters + */ +export interface BaseTemplateParams { + fileHeader?: string; +} + +/** + * Parameters for module registration + */ +export interface ModuleRegistrationParams extends BaseTemplateParams { + vendor: string; + module: string; +} + +/** + * Parameters for route configuration + */ +export interface RouteParams extends BaseTemplateParams { + routerId: string; + routeId: string; + frontName: string; + module: string; +} + +/** + * Parameters for license templates + */ +export interface LicenseParams extends BaseTemplateParams { + year?: string | number; + copyright: string; +} + +/** + * Parameters for event templates + */ +export interface EventParams extends BaseTemplateParams { + eventName: string; +} + +/** + * Parameters for observer templates + */ +export interface ObserverParams extends BaseTemplateParams { + name: string; + className: string; +} + +/** + * Parameters for DI type templates + */ +export interface DiTypeParams extends BaseTemplateParams { + subjectNamespace: string; +} + +/** + * Parameters for DI plugin templates + */ +export interface DiPluginParams extends BaseTemplateParams { + pluginName: string; + pluginType: string; + sortOrder?: number | string; +} + +/** + * Parameters for DI preference templates + */ +export interface PreferenceParams extends BaseTemplateParams { + forClass: string; + typeClass: string; +} + +/** + * Template parameters mapped by template path + */ +export interface TemplateParams { + [TemplatePath.PhpRegistration]: ModuleRegistrationParams; + [TemplatePath.XmlBlankRoutes]: RouteParams; + [TemplatePath.LicenseMit]: LicenseParams; + [TemplatePath.LicenseGplv3]: LicenseParams; + [TemplatePath.LicenseApache20]: LicenseParams; + [TemplatePath.LicenseOslv3]: LicenseParams; + [TemplatePath.XmlEventsEvent]: EventParams; + [TemplatePath.XmlEventsObserver]: ObserverParams; + [TemplatePath.XmlDiType]: DiTypeParams; + [TemplatePath.XmlDiPlugin]: DiPluginParams; + [TemplatePath.XmlDiPreference]: PreferenceParams; + [key: string]: BaseTemplateParams; +} + +/** + * Common partials interface + */ +export interface BaseTemplatePartials { + fileHeader?: string; + [key: string]: string | undefined; +} + +/** + * Partials for event templates + */ +export interface EventTemplatePartials extends BaseTemplatePartials { + eventContent: string; +} + +/** + * Partials for DI type templates + */ +export interface DiTypeTemplatePartials extends BaseTemplatePartials { + typeContent: string; +} + +/** + * Template partials mapped by template path + */ +export interface TemplatePartials { + [TemplatePath.XmlEventsEvent]: EventTemplatePartials; + [TemplatePath.XmlDiType]: DiTypeTemplatePartials; + [key: string]: BaseTemplatePartials; +} diff --git a/templates/handlebars/xml/preference.hbs b/templates/handlebars/xml/di/preference.hbs similarity index 100% rename from templates/handlebars/xml/preference.hbs rename to templates/handlebars/xml/di/preference.hbs diff --git a/templates/handlebars/xml/di/type.hbs b/templates/handlebars/xml/di/type.hbs index 8227472..232b934 100644 --- a/templates/handlebars/xml/di/type.hbs +++ b/templates/handlebars/xml/di/type.hbs @@ -1,3 +1,3 @@ - {{> typeContent }} + {{> typeContent }} \ No newline at end of file diff --git a/templates/handlebars/xml/events/event.hbs b/templates/handlebars/xml/events/event.hbs new file mode 100644 index 0000000..36d9f47 --- /dev/null +++ b/templates/handlebars/xml/events/event.hbs @@ -0,0 +1,3 @@ + + {{> eventContent }} + \ No newline at end of file diff --git a/templates/handlebars/xml/events/observer.hbs b/templates/handlebars/xml/events/observer.hbs new file mode 100644 index 0000000..f54e506 --- /dev/null +++ b/templates/handlebars/xml/events/observer.hbs @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/handlebars/xml/observer.hbs b/templates/handlebars/xml/observer.hbs deleted file mode 100644 index faa7b81..0000000 --- a/templates/handlebars/xml/observer.hbs +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/templates/handlebars/xml/plugin.hbs b/templates/handlebars/xml/plugin.hbs deleted file mode 100644 index e9686dc..0000000 --- a/templates/handlebars/xml/plugin.hbs +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file