Initial import

This commit is contained in:
2026-06-04 11:13:34 +01:00
commit 563d9cc96d
143 changed files with 10572 additions and 0 deletions
+82
View File
@@ -0,0 +1,82 @@
<?php
class Process {
private $_command = null;
private $_args = [];
private $_env = [];
private $_cwd = null;
private $_pipes = [];
private $_stdout = [];
private $_stderr = [];
private $_fd = null;
private $_status = null;
public function __construct($command) {
$this->_command = $command;
$this->_env = $_ENV;
}
public function arg($v) {
$this->_args[] = $v;
}
public function env($k, $v) {
$this->_env[$k] = $v;
}
public function cwd($p) {
$this->_cwd = $p;
}
public function execute() {
$command = [];
$command[] = escapeshellcmd($this->_command);
foreach ($this->_args as $a) {
$command[] = escapeshellarg($a);
}
$desc = [
["pipe", "r"],
["pipe", "w"],
["pipe", "w"]
];
$this->_fd = proc_open(
implode(" ", $command),
$desc,
$this->_pipes,
$this->_cwd,
$this->_env
);
fclose($this->_pipes[0]); // stdin
$this->_status = proc_get_status($this->_fd);
while ($this->_status["running"]) {
$this->_stdout[] = stream_get_contents($this->_pipes[1]);
$this->_stderr[] = stream_get_contents($this->_pipes[2]);
$this->_status = proc_get_status($this->_fd);
}
proc_close($this->_fd);
return $this->_status["exitcode"];
}
public function stdout() {
return explode("\n", implode("", $this->_stdout));
}
public function stderr() {
return explode("\n", implode("", $this->_stderr));
}
}