|
1 | 1 | <?php |
2 | 2 |
|
3 | | -declare(strict_types = 1); |
| 3 | +declare(strict_types=1); |
4 | 4 |
|
5 | 5 | namespace Wunderio\GrumPHP\Task; |
6 | 6 |
|
7 | 7 | use GrumPHP\Extension\ExtensionInterface; |
8 | | -use Symfony\Component\DependencyInjection\ContainerBuilder; |
9 | | -use Symfony\Component\DependencyInjection\Reference; |
10 | | -use Symfony\Component\Yaml\Yaml; |
11 | 8 |
|
12 | 9 | /** |
13 | 10 | * Class AbstractExternalExtensionLoader. |
|
18 | 15 | */ |
19 | 16 | abstract class AbstractExternalExtensionLoader implements ExtensionInterface { |
20 | 17 |
|
21 | | - /** |
22 | | - * Name. |
23 | | - * |
24 | | - * @var string |
25 | | - */ |
26 | | - public $name; |
27 | | - |
28 | | - /** |
29 | | - * Construction arguments. |
30 | | - * |
31 | | - * @var array |
32 | | - */ |
33 | | - public $arguments; |
34 | | - |
35 | | - /** |
36 | | - * Task class. |
37 | | - * |
38 | | - * @var string |
39 | | - */ |
40 | | - public $class; |
41 | | - |
42 | | - /** |
43 | | - * AbstractExternalExtensionLoader constructor. |
44 | | - */ |
45 | | - public function __construct() { |
46 | | - $tasks = Yaml::parseFile(__DIR__ . '/tasks.yml'); |
47 | | - $class_name = str_replace('ExtensionLoader', '', static::class); |
48 | | - $this->class = $class_name . 'Task'; |
49 | | - $default_configuration = $tasks['default']; |
50 | | - unset($default_configuration['name']); |
51 | | - $configurations = $tasks[$this->class] ?? $default_configuration; |
52 | | - $class_name = explode('\\', $class_name); |
53 | | - $default_name = strtolower(preg_replace('/\B([A-Z])/', '_$1', end($class_name))); |
54 | | - $this->name = $configurations['name'] ?? $default_name; |
55 | | - $this->arguments = $configurations['arguments'] ?? $default_configuration['arguments']; |
56 | | - } |
57 | | - |
58 | 18 | /** |
59 | 19 | * {@inheritdoc} |
60 | 20 | */ |
61 | | - public function load(ContainerBuilder $container): void { |
62 | | - $task = $container->register('task.' . $this->name, $this->class); |
63 | | - if (!empty($this->arguments)) { |
64 | | - foreach ($this->arguments as $argument) { |
65 | | - $task->addArgument(new Reference($argument)); |
66 | | - } |
67 | | - } |
68 | | - $task->addTag('grumphp.task', ['task' => $this->name]); |
| 21 | + public function imports(): iterable { |
| 22 | + $class_name = str_replace('ExtensionLoader', '', static::class); |
| 23 | + $class_exploded = explode('\\', $class_name); |
| 24 | + yield dirname(__DIR__) . '/Task/' . end($class_exploded) . '/services.yaml'; |
69 | 25 | } |
70 | 26 |
|
71 | 27 | } |
0 commit comments