From efc4d1b52618177a01644c4e3366b170e8db68be Mon Sep 17 00:00:00 2001 From: Thomas Hauschild <7961978+Morgy93@users.noreply.github.com> Date: Tue, 7 Jul 2026 13:36:44 +0200 Subject: [PATCH 1/2] feat: add template override command --- docs/commands_reference.md | 45 ++ .../Command/Template/OverrideCommand.php | 432 ++++++++++++++++++ src/Model/TemplateReference.php | 51 +++ src/Service/TemplateOverride/AreaEmulator.php | 53 +++ .../TemplateOverride/CompatModuleResolver.php | 91 ++++ .../TemplateOverride/TemplateCopier.php | 39 ++ .../TemplateFallbackResolver.php | 132 ++++++ .../TemplateOverride/TemplatePathParser.php | 289 ++++++++++++ src/etc/di.xml | 2 + .../Command/Template/OverrideCommandTest.php | 317 +++++++++++++ tests/Unit/Model/TemplateReferenceTest.php | 26 ++ .../TemplateOverride/AreaEmulatorTest.php | 52 +++ .../CompatModuleResolverTest.php | 82 ++++ .../FakeCompatModuleRegistry.php | 41 ++ .../Service/TemplateOverride/FakeTheme.php | 59 +++ .../TemplateOverride/TemplateCopierTest.php | 47 ++ .../TemplateFallbackResolverTest.php | 163 +++++++ .../TemplatePathParserTest.php | 281 ++++++++++++ 18 files changed, 2202 insertions(+) create mode 100644 src/Console/Command/Template/OverrideCommand.php create mode 100644 src/Model/TemplateReference.php create mode 100644 src/Service/TemplateOverride/AreaEmulator.php create mode 100644 src/Service/TemplateOverride/CompatModuleResolver.php create mode 100644 src/Service/TemplateOverride/TemplateCopier.php create mode 100644 src/Service/TemplateOverride/TemplateFallbackResolver.php create mode 100644 src/Service/TemplateOverride/TemplatePathParser.php create mode 100644 tests/Unit/Console/Command/Template/OverrideCommandTest.php create mode 100644 tests/Unit/Model/TemplateReferenceTest.php create mode 100644 tests/Unit/Service/TemplateOverride/AreaEmulatorTest.php create mode 100644 tests/Unit/Service/TemplateOverride/CompatModuleResolverTest.php create mode 100644 tests/Unit/Service/TemplateOverride/FakeCompatModuleRegistry.php create mode 100644 tests/Unit/Service/TemplateOverride/FakeTheme.php create mode 100644 tests/Unit/Service/TemplateOverride/TemplateCopierTest.php create mode 100644 tests/Unit/Service/TemplateOverride/TemplateFallbackResolverTest.php create mode 100644 tests/Unit/Service/TemplateOverride/TemplatePathParserTest.php diff --git a/docs/commands_reference.md b/docs/commands_reference.md index 118a1f5a..69b1856c 100644 --- a/docs/commands_reference.md +++ b/docs/commands_reference.md @@ -11,6 +11,7 @@ Complete reference of all CLI commands provided by the MageForge module. | **Theme** | `mageforge:theme:watch` | Watch theme files and auto-rebuild | `frontend:watch` | | **Theme** | `mageforge:theme:clean` | Clean static files and cache directories | `frontend:clean` | | **Theme** | `mageforge:theme:inspector` | Manage Frontend Inspector (enable/disable/status) | — | +| **Template** | `mageforge:template:override` | Copy a module template into a theme (override) | `template:override` | | **Hyvä** | `mageforge:hyva:tokens` | Generate Hyvä design tokens | `hyva:tokens` | | **Hyvä** | `mageforge:hyva:compatibility:check` | Check modules for Hyvä compatibility issues | `hyva:check` | | **System** | `mageforge:system:version` | Show current and latest module version | `system:version` | @@ -124,6 +125,49 @@ bin/magento mageforge:theme:inspector status --- +## Template Commands + +### `mageforge:template:override` + +Copies a module template into a theme as an override, following Magento's view file fallback +logic. The command resolves both the correct source file and the correct target directory for +you — including the tricky cases where Hyvä compatibility modules ship the template that is +actually rendered. + +```bash +bin/magento mageforge:template:override