Skip to content

Commit 927f917

Browse files
committed
[Console] Add Process Helper documentation
1 parent d2faada commit 927f917

File tree

6 files changed

+85
-0
lines changed

6 files changed

+85
-0
lines changed

components/console/helpers/index.rst

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ The Console Helpers
99

1010
dialoghelper
1111
formatterhelper
12+
processhelper
1213
progressbar
1314
progresshelper
1415
table

components/console/helpers/map.rst.inc

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
* :doc:`/components/console/helpers/dialoghelper`
22
* :doc:`/components/console/helpers/formatterhelper`
3+
* :doc:`/components/console/helpers/processhelper`
34
* :doc:`/components/console/helpers/progressbar`
45
* :doc:`/components/console/helpers/progresshelper`
56
* :doc:`/components/console/helpers/table`
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
.. index::
2+
single: Console Helpers; Process Helper
3+
4+
Process Helper
5+
==============
6+
7+
.. versionadded:: 2.6
8+
The Process Helper was introduced in Symfony 2.6.
9+
10+
The Process Helper shows processes as they're running and reports
11+
useful information about process status.
12+
13+
To display process details, use the :class:`Symfony\\Component\\Console\\Helper\\ProcessHelper`
14+
and run your command with verbosity. For example, running the following code with
15+
a very verbose verbosity (e.g. -vv)::
16+
17+
use Symfony\Component\Process\ProcessBuilder;
18+
19+
$helper = $this->getHelperSet()->get('process');
20+
$process = ProcessBuilder::create(array('figlet', 'Symfony'))->getProcess();
21+
22+
$helper->run($output, $process);
23+
24+
will result in this output:
25+
26+
.. image:: /images/components/console/process-helper-verbose.png
27+
28+
It will result in more detailed output with debug verbosity (e.g. -vvv):
29+
30+
.. image:: /images/components/console/process-helper-debug.png
31+
32+
In case the process fails, debugging is easier:
33+
34+
.. image:: /images/components/console/process-helper-error-debug.png
35+
36+
Arguments
37+
---------
38+
39+
There are three ways to use the process helper:
40+
41+
Either using a command line string::
42+
43+
$helper = $this->getHelperSet()->get('process');
44+
$helper->run($output, 'figlet Symfony');
45+
46+
An array of arguments::
47+
48+
$helper = $this->getHelperSet()->get('process');
49+
$helper->run($output, array('figlet', 'Symfony'));
50+
51+
.. note::
52+
53+
When running the helper against an array of arguments, be aware that these ones will be automatically escaped.
54+
55+
Or a :class:`Symfony\\Component\\Process\\Process` instance::
56+
57+
use Symfony\Component\Process\ProcessBuilder;
58+
59+
$helper = $this->getHelperSet()->get('process');
60+
$process = ProcessBuilder::create(array('figlet', 'Symfony'))->getProcess();
61+
62+
$helper->run($output, $process);
63+
64+
Customized display
65+
------------------
66+
67+
You can display a customized error message using the third argument of the
68+
:method:`Symfony\\Component\\Console\\Helper\\ProcessHelper::run` method::
69+
70+
$helper->run($output, $process, 'The process failed :(');
71+
72+
A custom process callback can be passed as fourth argument, refer to the
73+
:doc:`Process Component </components/process>` for callback documentation::
74+
75+
use Symfony\Component\Process\Process;
76+
77+
$helper->run($output, $process, 'The process failed :(', function ($type, $data) {
78+
if (Process::ERR === $type) {
79+
// do something with the stderr output
80+
} else {
81+
// do something with the stdout
82+
}
83+
});
Loading
Loading
Loading

0 commit comments

Comments
 (0)