nur-sery/nur_src/b/proc/ICmd.php

83 lines
3.1 KiB
PHP

<?php
namespace nur\b\proc;
/**
* Interface ICmd: une abstraction d'une ou plusieurs commandes à lancer
*/
interface ICmd {
/**
* vérifier si cette commande a besoin que son entrée standard soit connectée
* à un flux.
*/
function isNeedsStdin(): bool;
/**
* vérifier si cette commande a besoin que sa sortie standard soit connectée
* à un terminal
*/
function isNeedsTty(): bool;
/**
* Ajouter le préfixe spécifié à la dernière commande de la liste
*
* si $prefix est un array, quoter puis assembler les éléments du tableau.
* sinon ce doit être une chaine de caractère et elle est prise telle quelle
*/
function addPrefix($prefix): void;
/**
* Ajouter des redirections à la dernière commande de la liste
*
* $redir spécifie le type de redirection demandée:
* - "default" | null: $output reçoit STDOUT et STDERR n'est pas redirigé
* - "outonly" | "noerr": $output ne reçoit que STDOUT et STDERR est perdu
* - "erronly" | "noout": $output ne reçoit que STDERR et STDOUT est perdu
* - "both" | "err2out": $output reçoit STDOUT et STDERR
* - sinon c'est une redirection spécifique, et la valeur est rajoutée telle
* quelle à la ligne de commande ($output est ignoré)
*
* $output est le nom d'un fichier qui reçoit les redirections, ou null pour
* la valeur par défaut. spécifier $append==true pour ajouter au fichier
* $output au lieu de l'écraser
*/
function addRedir(?string $redir, $output=null, bool $append=false, $input=null): void;
/** Obtenir le texte de la commande comme elle serait saisie dans un shell */
function getCmd(?string $sep=null): string;
/**
* Lancer la commande avec passthru() et retourner le code de retour dans la
* variable $retcode
*
* voici la différence entre passthru(), system() et exec()
* +----------------+-----------------+----------------+----------------+
* | Command | Displays Output | Can Get Output | Gets Exit Code |
* +----------------+-----------------+----------------+----------------+
* | passthru() | Yes (raw) | No | Yes |
* | system() | Yes (as text) | Last line only | Yes |
* | exec() | No | Yes (array) | Yes |
* +----------------+-----------------+----------------+----------------+
*
* @return bool true si la commande s'est lancée sans erreur, false sinon
*/
function passthru(int &$retcode=null): bool;
/**
* Comme {@link passthru()} mais lancer la commande spécifiée avec system().
* Cf la doc de {@link passthru()} pour les autres détails
*/
function system(string &$output=null, int &$retcode=null): bool;
/**
* Comme {@link passthru()} mais lancer la commande spécifiée avec exec().
* Cf la doc de {@link passthru()} pour les autres détails
*/
function exec(array &$output=null, int &$retcode=null): bool;
/**
* Lancer la commande dans un processus fils via un shell et attendre la fin
* de son exécution
*/
function fork_exec(int &$retcode=null): bool;
}