nur-sery/nur_src/tools/compctl/git.php

41 lines
917 B
PHP

<?php
namespace nur\tools\compctl;
use Exception;
use nur\A;
use nur\shell;
use nur\SL;
class git {
static function setup(): void {
putenv("GIT_DIR");
putenv("GIT_WORK_TREE");
}
protected static function _rcmd(array &$cmd, ?int &$retcode, ?array &$output): void {
$cmd = SL::merge(["git"], $cmd);
shell::exec($cmd, $output, $retcode, "noerr");
}
static function rcmd(?int &$retcode, ...$cmd): ?array {
self::_rcmd($cmd, $retcode, $output);
return $output;
}
static function rcmd1(?int &$retcode, ...$args): ?string {
return A::first(git::rcmd($retcode, ...$args));
}
static function cmd(...$cmd): array {
self::_rcmd($cmd, $retcode, $output);
if ($retcode != 0) {
throw new Exception("error running command ".shell::join($cmd));
}
return $output;
}
static function cmd1(...$args): ?string {
return A::first(git::cmd(...$args));
}
}