Mercurial > hg > cmmr2012-drupal-site
comparison vendor/symfony/process/ProcessBuilder.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children | a9cd425dd02b |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:c75dbcec494b |
---|---|
1 <?php | |
2 | |
3 /* | |
4 * This file is part of the Symfony package. | |
5 * | |
6 * (c) Fabien Potencier <fabien@symfony.com> | |
7 * | |
8 * For the full copyright and license information, please view the LICENSE | |
9 * file that was distributed with this source code. | |
10 */ | |
11 | |
12 namespace Symfony\Component\Process; | |
13 | |
14 @trigger_error(sprintf('The %s class is deprecated since Symfony 3.4 and will be removed in 4.0. Use the Process class instead.', ProcessBuilder::class), E_USER_DEPRECATED); | |
15 | |
16 use Symfony\Component\Process\Exception\InvalidArgumentException; | |
17 use Symfony\Component\Process\Exception\LogicException; | |
18 | |
19 /** | |
20 * @author Kris Wallsmith <kris@symfony.com> | |
21 * | |
22 * @deprecated since version 3.4, to be removed in 4.0. Use the Process class instead. | |
23 */ | |
24 class ProcessBuilder | |
25 { | |
26 private $arguments; | |
27 private $cwd; | |
28 private $env = array(); | |
29 private $input; | |
30 private $timeout = 60; | |
31 private $options; | |
32 private $inheritEnv = true; | |
33 private $prefix = array(); | |
34 private $outputDisabled = false; | |
35 | |
36 /** | |
37 * @param string[] $arguments An array of arguments | |
38 */ | |
39 public function __construct(array $arguments = array()) | |
40 { | |
41 $this->arguments = $arguments; | |
42 } | |
43 | |
44 /** | |
45 * Creates a process builder instance. | |
46 * | |
47 * @param string[] $arguments An array of arguments | |
48 * | |
49 * @return static | |
50 */ | |
51 public static function create(array $arguments = array()) | |
52 { | |
53 return new static($arguments); | |
54 } | |
55 | |
56 /** | |
57 * Adds an unescaped argument to the command string. | |
58 * | |
59 * @param string $argument A command argument | |
60 * | |
61 * @return $this | |
62 */ | |
63 public function add($argument) | |
64 { | |
65 $this->arguments[] = $argument; | |
66 | |
67 return $this; | |
68 } | |
69 | |
70 /** | |
71 * Adds a prefix to the command string. | |
72 * | |
73 * The prefix is preserved when resetting arguments. | |
74 * | |
75 * @param string|array $prefix A command prefix or an array of command prefixes | |
76 * | |
77 * @return $this | |
78 */ | |
79 public function setPrefix($prefix) | |
80 { | |
81 $this->prefix = is_array($prefix) ? $prefix : array($prefix); | |
82 | |
83 return $this; | |
84 } | |
85 | |
86 /** | |
87 * Sets the arguments of the process. | |
88 * | |
89 * Arguments must not be escaped. | |
90 * Previous arguments are removed. | |
91 * | |
92 * @param string[] $arguments | |
93 * | |
94 * @return $this | |
95 */ | |
96 public function setArguments(array $arguments) | |
97 { | |
98 $this->arguments = $arguments; | |
99 | |
100 return $this; | |
101 } | |
102 | |
103 /** | |
104 * Sets the working directory. | |
105 * | |
106 * @param null|string $cwd The working directory | |
107 * | |
108 * @return $this | |
109 */ | |
110 public function setWorkingDirectory($cwd) | |
111 { | |
112 $this->cwd = $cwd; | |
113 | |
114 return $this; | |
115 } | |
116 | |
117 /** | |
118 * Sets whether environment variables will be inherited or not. | |
119 * | |
120 * @param bool $inheritEnv | |
121 * | |
122 * @return $this | |
123 */ | |
124 public function inheritEnvironmentVariables($inheritEnv = true) | |
125 { | |
126 $this->inheritEnv = $inheritEnv; | |
127 | |
128 return $this; | |
129 } | |
130 | |
131 /** | |
132 * Sets an environment variable. | |
133 * | |
134 * Setting a variable overrides its previous value. Use `null` to unset a | |
135 * defined environment variable. | |
136 * | |
137 * @param string $name The variable name | |
138 * @param null|string $value The variable value | |
139 * | |
140 * @return $this | |
141 */ | |
142 public function setEnv($name, $value) | |
143 { | |
144 $this->env[$name] = $value; | |
145 | |
146 return $this; | |
147 } | |
148 | |
149 /** | |
150 * Adds a set of environment variables. | |
151 * | |
152 * Already existing environment variables with the same name will be | |
153 * overridden by the new values passed to this method. Pass `null` to unset | |
154 * a variable. | |
155 * | |
156 * @param array $variables The variables | |
157 * | |
158 * @return $this | |
159 */ | |
160 public function addEnvironmentVariables(array $variables) | |
161 { | |
162 $this->env = array_replace($this->env, $variables); | |
163 | |
164 return $this; | |
165 } | |
166 | |
167 /** | |
168 * Sets the input of the process. | |
169 * | |
170 * @param resource|string|int|float|bool|\Traversable|null $input The input content | |
171 * | |
172 * @return $this | |
173 * | |
174 * @throws InvalidArgumentException In case the argument is invalid | |
175 */ | |
176 public function setInput($input) | |
177 { | |
178 $this->input = ProcessUtils::validateInput(__METHOD__, $input); | |
179 | |
180 return $this; | |
181 } | |
182 | |
183 /** | |
184 * Sets the process timeout. | |
185 * | |
186 * To disable the timeout, set this value to null. | |
187 * | |
188 * @param float|null $timeout | |
189 * | |
190 * @return $this | |
191 * | |
192 * @throws InvalidArgumentException | |
193 */ | |
194 public function setTimeout($timeout) | |
195 { | |
196 if (null === $timeout) { | |
197 $this->timeout = null; | |
198 | |
199 return $this; | |
200 } | |
201 | |
202 $timeout = (float) $timeout; | |
203 | |
204 if ($timeout < 0) { | |
205 throw new InvalidArgumentException('The timeout value must be a valid positive integer or float number.'); | |
206 } | |
207 | |
208 $this->timeout = $timeout; | |
209 | |
210 return $this; | |
211 } | |
212 | |
213 /** | |
214 * Adds a proc_open option. | |
215 * | |
216 * @param string $name The option name | |
217 * @param string $value The option value | |
218 * | |
219 * @return $this | |
220 */ | |
221 public function setOption($name, $value) | |
222 { | |
223 $this->options[$name] = $value; | |
224 | |
225 return $this; | |
226 } | |
227 | |
228 /** | |
229 * Disables fetching output and error output from the underlying process. | |
230 * | |
231 * @return $this | |
232 */ | |
233 public function disableOutput() | |
234 { | |
235 $this->outputDisabled = true; | |
236 | |
237 return $this; | |
238 } | |
239 | |
240 /** | |
241 * Enables fetching output and error output from the underlying process. | |
242 * | |
243 * @return $this | |
244 */ | |
245 public function enableOutput() | |
246 { | |
247 $this->outputDisabled = false; | |
248 | |
249 return $this; | |
250 } | |
251 | |
252 /** | |
253 * Creates a Process instance and returns it. | |
254 * | |
255 * @return Process | |
256 * | |
257 * @throws LogicException In case no arguments have been provided | |
258 */ | |
259 public function getProcess() | |
260 { | |
261 if (0 === count($this->prefix) && 0 === count($this->arguments)) { | |
262 throw new LogicException('You must add() command arguments before calling getProcess().'); | |
263 } | |
264 | |
265 $arguments = array_merge($this->prefix, $this->arguments); | |
266 $process = new Process($arguments, $this->cwd, $this->env, $this->input, $this->timeout, $this->options); | |
267 // to preserve the BC with symfony <3.3, we convert the array structure | |
268 // to a string structure to avoid the prefixing with the exec command | |
269 $process->setCommandLine($process->getCommandLine()); | |
270 | |
271 if ($this->inheritEnv) { | |
272 $process->inheritEnvironmentVariables(); | |
273 } | |
274 if ($this->outputDisabled) { | |
275 $process->disableOutput(); | |
276 } | |
277 | |
278 return $process; | |
279 } | |
280 } |