feat(plugin): align with Shopware plugin guidelines

- add dedicated monolog channel aeon_dump_manager and log dump jobs
- migrate services.xml/routes.php to YAML
- require PHP ^8.2
- add extension icon and .config/shopware-extension.yml
- drop empty lifecycle overrides

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
haylanandClaude Bot committed 2026-10-03 23:26:21 +02:00
1 parent 29974928d2
commit 8efaef2042
12 files changed
+155 -129

No files matched your search

@@ -0,0 +1,2 @@
monolog:
channels: ['aeon_dump_manager']
Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

-7
View File
@@ -1,7 +0,0 @@
<?php declare(strict_types=1);
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
return function (RoutingConfigurator $routes): void {
$routes->import(__DIR__ . '/../../Controller/*Controller.php', 'attribute');
};
+3
View File
@@ -0,0 +1,3 @@
aeon_dump_manager_controllers:
resource: ../../Controller/*Controller.php
type: attribute
-88
View File
@@ -1,88 +0,0 @@
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<services>
<!-- Services -->
<service id="Symfony\Component\Process\ExecutableFinder"/>
<service id="aeon_dump_manager.dump_filename_parser" class="AeonDumpManager\Service\DumpFilenameParser"/>
<service id="aeon_dump_manager.dump_binary_locator" class="AeonDumpManager\Service\DumpBinaryLocator">
<argument type="service" id="Doctrine\DBAL\Connection"/>
<argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
<argument type="service" id="Symfony\Component\Process\ExecutableFinder"/>
</service>
<service id="aeon_dump_manager.dump_job_status_service" class="AeonDumpManager\Service\DumpJobStatusService">
<argument type="service" id="Doctrine\DBAL\Connection"/>
</service>
<service id="aeon_dump_manager.dump_lister" class="AeonDumpManager\Service\DumpLister">
<argument type="service" id="aeon_dump_manager.filesystem.private"/>
<argument type="service" id="aeon_dump_manager.dump_filename_parser"/>
</service>
<service id="aeon_dump_manager.dump_service" class="AeonDumpManager\Service\DumpService">
<argument type="service" id="aeon_dump_manager.dump_lister"/>
<argument type="service" id="aeon_dump_manager.filesystem.private"/>
<argument type="service" id="aeon_dump_manager.dump_binary_locator"/>
<argument type="service" id="Doctrine\DBAL\Connection"/>
<argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
<argument type="service" id="aeon_dump_manager.dump_filename_parser"/>
</service>
<!-- Async create job -->
<service id="aeon_dump_manager.message_queue.create_dump_handler" class="AeonDumpManager\MessageQueue\Handler\CreateDumpHandler">
<argument type="service" id="aeon_dump_manager.dump_service"/>
<argument type="service" id="aeon_dump_manager.dump_job_status_service"/>
<tag name="messenger.message_handler"/>
</service>
<!-- Retention -->
<service id="aeon_dump_manager.scheduled_task.purge_dumps_task" class="AeonDumpManager\ScheduledTask\PurgeDumpsTask">
<tag name="shopware.scheduled.task"/>
</service>
<service id="aeon_dump_manager.scheduled_task.purge_dumps_task_handler" class="AeonDumpManager\ScheduledTask\PurgeDumpsTaskHandler">
<argument type="service" id="scheduled_task.repository"/>
<argument type="service" id="logger"/>
<argument type="service" id="aeon_dump_manager.dump_service"/>
<argument type="service" id="aeon_dump_manager.dump_job_status_service"/>
<argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
<tag name="messenger.message_handler" handles="AeonDumpManager\ScheduledTask\PurgeDumpsTask"/>
</service>
<!-- Console commands -->
<service id="aeon_dump_manager.command.dump_list" class="AeonDumpManager\Command\DumpListCommand">
<argument type="service" id="aeon_dump_manager.dump_lister"/>
<tag name="console.command"/>
</service>
<service id="aeon_dump_manager.command.dump_create" class="AeonDumpManager\Command\DumpCreateCommand">
<argument type="service" id="aeon_dump_manager.dump_service"/>
<tag name="console.command"/>
</service>
<service id="aeon_dump_manager.command.dump_remove" class="AeonDumpManager\Command\DumpRemoveCommand">
<argument type="service" id="aeon_dump_manager.dump_service"/>
<tag name="console.command"/>
</service>
<!-- Admin API controller -->
<service id="AeonDumpManager\Controller\DumpController" public="true">
<argument type="service" id="aeon_dump_manager.dump_lister"/>
<argument type="service" id="aeon_dump_manager.dump_service"/>
<argument type="service" id="aeon_dump_manager.dump_job_status_service"/>
<argument type="service" id="messenger.default_bus"/>
</service>
</services>
</container>
+92
View File
@@ -0,0 +1,92 @@
services:
Symfony\Component\Process\ExecutableFinder: ~
aeon_dump_manager.dump_filename_parser:
class: AeonDumpManager\Service\DumpFilenameParser
aeon_dump_manager.dump_binary_locator:
class: AeonDumpManager\Service\DumpBinaryLocator
arguments:
- '@Doctrine\DBAL\Connection'
- '@Shopware\Core\System\SystemConfig\SystemConfigService'
- '@Symfony\Component\Process\ExecutableFinder'
aeon_dump_manager.dump_job_status_service:
class: AeonDumpManager\Service\DumpJobStatusService
arguments:
- '@Doctrine\DBAL\Connection'
aeon_dump_manager.dump_lister:
class: AeonDumpManager\Service\DumpLister
arguments:
- '@aeon_dump_manager.filesystem.private'
- '@aeon_dump_manager.dump_filename_parser'
aeon_dump_manager.dump_service:
class: AeonDumpManager\Service\DumpService
arguments:
- '@aeon_dump_manager.dump_lister'
- '@aeon_dump_manager.filesystem.private'
- '@aeon_dump_manager.dump_binary_locator'
- '@Doctrine\DBAL\Connection'
- '@Shopware\Core\System\SystemConfig\SystemConfigService'
- '@aeon_dump_manager.dump_filename_parser'
- '@monolog.logger.aeon_dump_manager'
# Async create job
aeon_dump_manager.message_queue.create_dump_handler:
class: AeonDumpManager\MessageQueue\Handler\CreateDumpHandler
arguments:
- '@aeon_dump_manager.dump_service'
- '@aeon_dump_manager.dump_job_status_service'
- '@monolog.logger.aeon_dump_manager'
tags:
- { name: messenger.message_handler }
# Retention
aeon_dump_manager.scheduled_task.purge_dumps_task:
class: AeonDumpManager\ScheduledTask\PurgeDumpsTask
tags:
- { name: shopware.scheduled.task }
aeon_dump_manager.scheduled_task.purge_dumps_task_handler:
class: AeonDumpManager\ScheduledTask\PurgeDumpsTaskHandler
arguments:
- '@scheduled_task.repository'
- '@monolog.logger.aeon_dump_manager'
- '@aeon_dump_manager.dump_service'
- '@aeon_dump_manager.dump_job_status_service'
- '@Shopware\Core\System\SystemConfig\SystemConfigService'
tags:
- { name: messenger.message_handler, handles: AeonDumpManager\ScheduledTask\PurgeDumpsTask }
# Console commands
aeon_dump_manager.command.dump_list:
class: AeonDumpManager\Command\DumpListCommand
arguments:
- '@aeon_dump_manager.dump_lister'
tags:
- { name: console.command }
aeon_dump_manager.command.dump_create:
class: AeonDumpManager\Command\DumpCreateCommand
arguments:
- '@aeon_dump_manager.dump_service'
tags:
- { name: console.command }
aeon_dump_manager.command.dump_remove:
class: AeonDumpManager\Command\DumpRemoveCommand
arguments:
- '@aeon_dump_manager.dump_service'
tags:
- { name: console.command }
# Admin API controller
AeonDumpManager\Controller\DumpController:
public: true
arguments:
- '@aeon_dump_manager.dump_lister'
- '@aeon_dump_manager.dump_service'
- '@aeon_dump_manager.dump_job_status_service'
- '@messenger.default_bus'