1+ <?php
2+ /**
3+ * Copyright © Magento, Inc. All rights reserved.
4+ * See COPYING.txt for license details.
5+ */
6+ namespace Enqueue \Enqueue \Console ;
7+
8+ use Enqueue \Symfony \Client \ConsumeMessagesCommand ;
9+ use Enqueue \Symfony \Client \Meta \QueuesCommand ;
10+ use Enqueue \Symfony \Client \Meta \TopicsCommand ;
11+ use Enqueue \Symfony \Client \ProduceMessageCommand ;
12+ use Enqueue \Symfony \Client \SetupBrokerCommand ;
13+ /**
14+ * Provides list of commands to be available for uninstalled application
15+ */
16+ class CommandList implements \Magento \Framework \Console \CommandListInterface
17+ {
18+ /**
19+ * @var \Enqueue\Symfony\Client\SetupBrokerCommandFactory
20+ */
21+ private $ setupBrokerCommandFactory ;
22+
23+ /**
24+ * @var \Enqueue\Symfony\Client\ConsumeMessagesCommandFactory
25+ */
26+ private $ consumeMessagesCommandFactory ;
27+
28+ /**
29+ * @var \Enqueue\Symfony\Client\Meta\TopicsCommandFactory
30+ */
31+ private $ topicsCommandFactory ;
32+
33+ /**
34+ * @var \Enqueue\Symfony\Client\ProduceMessageCommandFactory
35+ */
36+ private $ produceMessageCommandFactory ;
37+
38+ /**
39+ * @var \Enqueue\Symfony\Client\Meta\QueuesCommandFactory
40+ */
41+ private $ queuesCommandFactory ;
42+ /**
43+ * @var \Enqueue\Enqueue\Model\EnqueueManager
44+ */
45+ private $ enqueueManager ;
46+
47+ /**
48+ * CommandList constructor.
49+ *
50+ * @param \Enqueue\Enqueue\Model\EnqueueManager $enqueueManager
51+ * @param \Enqueue\Symfony\Client\SetupBrokerCommandFactory $setupBrokerCommandFactory
52+ * @param \Enqueue\Symfony\Client\Meta\QueuesCommandFactory $queuesCommandFactory
53+ * @param \Enqueue\Symfony\Client\Meta\TopicsCommandFactory $topicsCommandFactory
54+ * @param \Enqueue\Symfony\Client\ProduceMessageCommandFactory $produceMessageCommandFactory
55+ * @param \Enqueue\Symfony\Client\ConsumeMessagesCommandFactory $consumeMessagesCommand
56+ */
57+ public function __construct (
58+ \Enqueue \Enqueue \Model \EnqueueManager $ enqueueManager ,
59+ \Enqueue \Symfony \Client \SetupBrokerCommandFactory $ setupBrokerCommandFactory ,
60+ \Enqueue \Symfony \Client \Meta \QueuesCommandFactory $ queuesCommandFactory ,
61+ \Enqueue \Symfony \Client \Meta \TopicsCommandFactory $ topicsCommandFactory ,
62+ \Enqueue \Symfony \Client \ProduceMessageCommandFactory $ produceMessageCommandFactory ,
63+ \Enqueue \Symfony \Client \ConsumeMessagesCommandFactory $ consumeMessagesCommand
64+ ) {
65+ $ this ->enqueueManager = $ enqueueManager ;
66+ $ this ->setupBrokerCommandFactory = $ setupBrokerCommandFactory ;
67+ $ this ->queuesCommandFactory = $ queuesCommandFactory ;
68+ $ this ->topicsCommandFactory = $ topicsCommandFactory ;
69+ $ this ->produceMessageCommandFactory = $ produceMessageCommandFactory ;
70+ $ this ->consumeMessagesCommandFactory = $ consumeMessagesCommand ;
71+ }
72+
73+ /**
74+ * Gets list of command classes
75+ *
76+ * @return string[]
77+ */
78+ private function getCommandsClasses ()
79+ {
80+ return [
81+ SetupBrokerCommand::class,
82+ ProduceMessageCommand::class,
83+ TopicsCommand::class,
84+ ConsumeMessagesCommand::class,
85+ QueuesCommand::class,
86+ ];
87+ }
88+
89+ /**
90+ * @inheritdoc
91+ */
92+ public function getCommands ()
93+ {
94+ $ commands = [];
95+
96+ $ this ->enqueueManager ->bindProcessors ();
97+ $ client = $ this ->enqueueManager ->getClient ();
98+
99+ foreach ($ this ->getCommandsClasses () as $ class ) {
100+ if (class_exists ($ class )) {
101+ $ commands [] = $ this ->setupBrokerCommandFactory ->create (['driver ' => $ client ->getDriver ()]);
102+ $ commands [] = $ this ->produceMessageCommandFactory ->create (['producer ' => $ client ->getProducer ()]);
103+ $ commands [] = $ this ->queuesCommandFactory ->create (['queueRegistry ' => $ client ->getQueueMetaRegistry ()]);
104+ $ commands [] = $ this ->topicsCommandFactory ->create (['topicRegistry ' => $ client ->getTopicMetaRegistry ()]);
105+ $ commands [] = $ this ->consumeMessagesCommandFactory ->create (
106+ [
107+ 'consumer ' => $ client ->getQueueConsumer (),
108+ 'processor ' => $ client ->getDelegateProcessor (),
109+ 'queueMetaRegistry ' => $ client ->getQueueMetaRegistry (),
110+ 'driver ' => $ client ->getDriver ()
111+ ]
112+ );
113+ } else {
114+ throw new \Exception ('Class ' . $ class . ' does not exist ' );
115+ }
116+ }
117+
118+ return $ commands ;
119+ }
120+ }
0 commit comments