* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Alchemy\BinaryDriver; use Alchemy\BinaryDriver\Exception\ExecutableNotFoundException; use Alchemy\BinaryDriver\Exception\ExecutionFailureException; use Alchemy\BinaryDriver\Listeners\ListenerInterface; use Psr\Log\LoggerInterface; use Evenement\EventEmitterInterface; interface BinaryInterface extends ConfigurationAwareInterface, ProcessBuilderFactoryAwareInterface, ProcessRunnerAwareInterface, EventEmitterInterface { /** * Adds a listener to the binary driver * * @param ListenerInterface $listener * * @return BinaryInterface */ public function listen(ListenerInterface $listener); /** * Removes a listener from the binary driver * * @param ListenerInterface $listener * * @return BinaryInterface */ public function unlisten(ListenerInterface $listener); /** * Runs a command against the driver. * * Calling this method on a `ls` driver with the command `-a` would run `ls -a`. * * @param array|string $command A command or an array of command * @param Boolean $bypassErrors If set to true, an erronous process will not throw an exception * @param ListenerInterface|array $listeners A listener or an array of listeners to register for this unique run * * @return string The command output * * @throws ExecutionFailureException in case of process failure. */ public function command($command, $bypassErrors = false, $listeners = null); /** * Loads a binary * * @param string|array $binaries A binary name or an array of binary names * @param null|LoggerInterface $logger A Logger * @param array|ConfigurationInterface $configuration The configuration * * @throws ExecutableNotFoundException In case none of the binaries were found * * @return BinaryInterface */ public static function load($binaries, LoggerInterface $logger = null, $configuration = array()); }