| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 | 
							- <?php
 
- /*
 
-  * This file is part of the Symfony package.
 
-  *
 
-  * (c) Fabien Potencier <fabien@symfony.com>
 
-  *
 
-  * For the full copyright and license information, please view the LICENSE
 
-  * file that was distributed with this source code.
 
-  */
 
- namespace Symfony\Component\Finder\Shell;
 
- @trigger_error('The '.__NAMESPACE__.'\Command class is deprecated since Symfony 2.8 and will be removed in 3.0.', E_USER_DEPRECATED);
 
- /**
 
-  * @author Jean-François Simon <contact@jfsimon.fr>
 
-  *
 
-  * @deprecated since 2.8, to be removed in 3.0.
 
-  */
 
- class Command
 
- {
 
-     private $parent;
 
-     private $bits = array();
 
-     private $labels = array();
 
-     /**
 
-      * @var \Closure|null
 
-      */
 
-     private $errorHandler;
 
-     public function __construct(Command $parent = null)
 
-     {
 
-         $this->parent = $parent;
 
-     }
 
-     /**
 
-      * Returns command as string.
 
-      *
 
-      * @return string
 
-      */
 
-     public function __toString()
 
-     {
 
-         return $this->join();
 
-     }
 
-     /**
 
-      * Creates a new Command instance.
 
-      *
 
-      * @return self
 
-      */
 
-     public static function create(Command $parent = null)
 
-     {
 
-         return new self($parent);
 
-     }
 
-     /**
 
-      * Escapes special chars from input.
 
-      *
 
-      * @param string $input A string to escape
 
-      *
 
-      * @return string The escaped string
 
-      */
 
-     public static function escape($input)
 
-     {
 
-         return escapeshellcmd($input);
 
-     }
 
-     /**
 
-      * Quotes input.
 
-      *
 
-      * @param string $input An argument string
 
-      *
 
-      * @return string The quoted string
 
-      */
 
-     public static function quote($input)
 
-     {
 
-         return escapeshellarg($input);
 
-     }
 
-     /**
 
-      * Appends a string or a Command instance.
 
-      *
 
-      * @param string|Command $bit
 
-      *
 
-      * @return $this
 
-      */
 
-     public function add($bit)
 
-     {
 
-         $this->bits[] = $bit;
 
-         return $this;
 
-     }
 
-     /**
 
-      * Prepends a string or a command instance.
 
-      *
 
-      * @param string|Command $bit
 
-      *
 
-      * @return $this
 
-      */
 
-     public function top($bit)
 
-     {
 
-         array_unshift($this->bits, $bit);
 
-         foreach ($this->labels as $label => $index) {
 
-             ++$this->labels[$label];
 
-         }
 
-         return $this;
 
-     }
 
-     /**
 
-      * Appends an argument, will be quoted.
 
-      *
 
-      * @param string $arg
 
-      *
 
-      * @return $this
 
-      */
 
-     public function arg($arg)
 
-     {
 
-         $this->bits[] = self::quote($arg);
 
-         return $this;
 
-     }
 
-     /**
 
-      * Appends escaped special command chars.
 
-      *
 
-      * @param string $esc
 
-      *
 
-      * @return $this
 
-      */
 
-     public function cmd($esc)
 
-     {
 
-         $this->bits[] = self::escape($esc);
 
-         return $this;
 
-     }
 
-     /**
 
-      * Inserts a labeled command to feed later.
 
-      *
 
-      * @param string $label The unique label
 
-      *
 
-      * @return self|string
 
-      *
 
-      * @throws \RuntimeException If label already exists
 
-      */
 
-     public function ins($label)
 
-     {
 
-         if (isset($this->labels[$label])) {
 
-             throw new \RuntimeException(sprintf('Label "%s" already exists.', $label));
 
-         }
 
-         $this->bits[] = self::create($this);
 
-         $this->labels[$label] = \count($this->bits) - 1;
 
-         return $this->bits[$this->labels[$label]];
 
-     }
 
-     /**
 
-      * Retrieves a previously labeled command.
 
-      *
 
-      * @param string $label
 
-      *
 
-      * @return self|string
 
-      *
 
-      * @throws \RuntimeException
 
-      */
 
-     public function get($label)
 
-     {
 
-         if (!isset($this->labels[$label])) {
 
-             throw new \RuntimeException(sprintf('Label "%s" does not exist.', $label));
 
-         }
 
-         return $this->bits[$this->labels[$label]];
 
-     }
 
-     /**
 
-      * Returns parent command (if any).
 
-      *
 
-      * @return self
 
-      *
 
-      * @throws \RuntimeException If command has no parent
 
-      */
 
-     public function end()
 
-     {
 
-         if (null === $this->parent) {
 
-             throw new \RuntimeException('Calling end on root command doesn\'t make sense.');
 
-         }
 
-         return $this->parent;
 
-     }
 
-     /**
 
-      * Counts bits stored in command.
 
-      *
 
-      * @return int The bits count
 
-      */
 
-     public function length()
 
-     {
 
-         return \count($this->bits);
 
-     }
 
-     /**
 
-      * @return $this
 
-      */
 
-     public function setErrorHandler(\Closure $errorHandler)
 
-     {
 
-         $this->errorHandler = $errorHandler;
 
-         return $this;
 
-     }
 
-     /**
 
-      * @return \Closure|null
 
-      */
 
-     public function getErrorHandler()
 
-     {
 
-         return $this->errorHandler;
 
-     }
 
-     /**
 
-      * Executes current command.
 
-      *
 
-      * @return array The command result
 
-      *
 
-      * @throws \RuntimeException
 
-      */
 
-     public function execute()
 
-     {
 
-         if (null === $errorHandler = $this->errorHandler) {
 
-             exec($this->join(), $output);
 
-         } else {
 
-             $process = proc_open($this->join(), array(0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w')), $pipes);
 
-             $output = preg_split('~(\r\n|\r|\n)~', stream_get_contents($pipes[1]), -1, PREG_SPLIT_NO_EMPTY);
 
-             if ($error = stream_get_contents($pipes[2])) {
 
-                 $errorHandler($error);
 
-             }
 
-             proc_close($process);
 
-         }
 
-         return $output ?: array();
 
-     }
 
-     /**
 
-      * Joins bits.
 
-      *
 
-      * @return string
 
-      */
 
-     public function join()
 
-     {
 
-         return implode(' ', array_filter(
 
-             array_map(function ($bit) {
 
-                 return $bit instanceof Command ? $bit->join() : ($bit ?: null);
 
-             }, $this->bits),
 
-             function ($bit) { return null !== $bit; }
 
-         ));
 
-     }
 
-     /**
 
-      * Insert a string or a Command instance before the bit at given position $index (index starts from 0).
 
-      *
 
-      * @param string|Command $bit
 
-      * @param int            $index
 
-      *
 
-      * @return $this
 
-      */
 
-     public function addAtIndex($bit, $index)
 
-     {
 
-         array_splice($this->bits, $index, 0, $bit instanceof self ? array($bit) : $bit);
 
-         return $this;
 
-     }
 
- }
 
 
  |