Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
100.00% |
1 / 1 |
|
100.00% |
8 / 8 |
CRAP | |
100.00% |
20 / 20 |
ProcessFactory | |
100.00% |
1 / 1 |
|
100.00% |
8 / 8 |
9 | |
100.00% |
20 / 20 |
createProcessFactory | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
addProcess | |
100.00% |
1 / 1 |
2 | |
100.00% |
4 / 4 |
|||
runProcesses | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
startProcesses | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
startDetachedProcesses | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
addEnvs | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
throwExceptionsOnFailure | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
defaultCallback | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
1 | <?php |
2 | |
3 | namespace Qmp\Laravel\AsyncProcessFactory\Traits; |
4 | |
5 | |
6 | use Closure; |
7 | use Qmp\Laravel\AsyncProcessFactory\Factory; |
8 | use Qmp\Laravel\AsyncProcessFactory\Exceptions\ProcessFactoryNotFoundException; |
9 | |
10 | trait ProcessFactory |
11 | { |
12 | |
13 | /** |
14 | * The processFactory that hold and create Processes |
15 | * |
16 | * @var Qmp\Laravel\AsyncProcessFactory\Factory |
17 | */ |
18 | protected $processFactory; |
19 | |
20 | /** |
21 | * Instantiate the ProcessFactory |
22 | * |
23 | * @param string $command |
24 | * @return Factory |
25 | */ |
26 | protected function createProcessFactory(string $command): Factory |
27 | { |
28 | $this->processFactory = app()->make(Factory::class, ['command' => $command]); |
29 | return $this->processFactory; |
30 | } |
31 | |
32 | /** |
33 | * Add A new Process to the factory |
34 | * |
35 | * @param array $options |
36 | * @return void |
37 | */ |
38 | protected function addProcess(array $options): void |
39 | { |
40 | if (!$this->processFactory) { |
41 | throw new ProcessFactoryNotFoundException('Factory must be instantiated first !'); |
42 | } |
43 | |
44 | $this->processFactory->addProcess($options); |
45 | } |
46 | /** |
47 | * Run processes one by one |
48 | * |
49 | * @param callable $callback |
50 | * @return void |
51 | */ |
52 | protected function runProcesses(callable $callback = null): void |
53 | { |
54 | $callback = $callback ?? Closure::fromCallable([$this, 'defaultCallback']); |
55 | $this->processFactory->run($callback); |
56 | } |
57 | |
58 | /** |
59 | * Run Processes in parralel |
60 | * |
61 | * @param callable $callback |
62 | * @return void |
63 | */ |
64 | protected function startProcesses(callable $callback = null): void |
65 | { |
66 | $callback = $callback ?? Closure::fromCallable([$this, 'defaultCallback']); |
67 | $this->processFactory->start($callback); |
68 | } |
69 | |
70 | /** |
71 | * Run Processes in parralel |
72 | * |
73 | * @param callable $callback |
74 | * @return void |
75 | */ |
76 | protected function startDetachedProcesses(): void |
77 | { |
78 | $this->processFactory->startDetached(); |
79 | } |
80 | |
81 | /** |
82 | * Add envs to process |
83 | * |
84 | * @param array $envs |
85 | * @return void |
86 | */ |
87 | protected function addEnvs(array $envs): void |
88 | { |
89 | $this->processFactory->addEnvs($envs); |
90 | } |
91 | |
92 | /** |
93 | * Throw SubprocessException on failure |
94 | * |
95 | * @param boolean $throw |
96 | * @return void |
97 | */ |
98 | protected function throwExceptionsOnFailure($throw = true) |
99 | { |
100 | $this->processFactory->throwExceptionsOnFailure($throw); |
101 | } |
102 | |
103 | /** |
104 | * The default process callback when stderr/stdout |
105 | * |
106 | * @param string $datas |
107 | * @return void |
108 | */ |
109 | protected function defaultCallback(string $datas): void |
110 | { |
111 | $this->info($datas); |
112 | } |
113 | } |