Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

ProcessInterface.php

Namespace

PhpTuf\ComposerStager\API\Process\Service

File

vendor/php-tuf/composer-stager/src/API/Process/Service/ProcessInterface.php

View source
<?php

declare (strict_types=1);
namespace PhpTuf\ComposerStager\API\Process\Service;


/**
 * Builds and runs shell commands.
 *
 * @package Process
 *
 * @api This interface is subject to our backward compatibility promise and may be safely depended upon.
 */
interface ProcessInterface {
    
    /** The default process timeout. */
    public const DEFAULT_TIMEOUT = 120;
    
    /**
     * Gets the array of environment variables to be set while running the process.
     *
     * @return array<string|\Stringable>
     *
     * @see \PhpTuf\ComposerStager\API\Process\Service\ProcessInterface::setEnv
     */
    public function getEnv() : array;
    
    /**
     * Returns the current error output of the process (STDERR).
     *
     * @throws \PhpTuf\ComposerStager\API\Exception\LogicException
     *   If the process is not started.
     *
     * @see \PhpTuf\ComposerStager\API\Process\Service\ProcessInterface::getOutput
     */
    public function getErrorOutput() : string;
    
    /**
     * Returns the current output of the process (STDOUT).
     *
     * @throws \PhpTuf\ComposerStager\API\Exception\LogicException
     *   If the process is not started.
     *
     * @see \PhpTuf\ComposerStager\API\Process\Service\ProcessInterface::getErrorOutput
     */
    public function getOutput() : string;
    
    /**
     * Runs the process.
     *
     * This is identical to run() except that an exception is thrown if the process exits with a non-zero exit code.
     *
     * @throws \PhpTuf\ComposerStager\API\Exception\RuntimeException
     *   If the process doesn't terminate successfully.
     *
     * @see \PhpTuf\ComposerStager\API\Process\Service\ProcessInterface::run
     */
    public function mustRun(?OutputCallbackInterface $callback = null) : void;
    
    /**
     * Runs the process.
     *
     * @return int
     *   The exit status code: 0 for success or non-zero for any error condition.
     *
     * @throws \PhpTuf\ComposerStager\API\Exception\RuntimeException
     *   If the process fails to run for any reason.
     *
     * @see \PhpTuf\ComposerStager\API\Process\Service\ProcessInterface::run
     */
    public function run(?OutputCallbackInterface $callback = null) : int;
    
    /**
     * Sets an array of environment variables to set while running the process.
     *
     * @param array<string|\Stringable> $env
     *   An array of environment variables, keyed by variable name with corresponding
     *   string or stringable values. In addition to those explicitly specified,
     *   environment variables set on your system will be inherited. You can
     *   prevent this by setting to `false` variables you want to remove. Example:
     *   ```php
     *   $process->setEnv(
     *       'STRING_VAR' => 'a string',
     *       'STRINGABLE_VAR' => new StringableObject(),
     *       'REMOVE_ME' => false,
     *   );
     *   ```
     *
     * @throws \PhpTuf\ComposerStager\API\Exception\InvalidArgumentException
     *   If the given environment variables contain invalid variable names or values.
     *
     * @see \PhpTuf\ComposerStager\API\Process\Service\ProcessInterface::getEnv
     */
    public function setEnv(array $env) : void;
    
    /**
     * Sets the process timeout (max. runtime) in seconds.
     *
     * @param int $timeout
     *   An optional process timeout (maximum runtime) in seconds. If set to
     *   zero (0), no time limit is imposed.
     *
     * @throws \PhpTuf\ComposerStager\API\Exception\InvalidArgumentException
     *   If the given timeout is negative.
     */
    public function setTimeout(int $timeout = self::DEFAULT_TIMEOUT) : void;

}

Interfaces

Title Deprecated Summary
ProcessInterface Builds and runs shell commands.

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal