41 lines
		
	
	
		
			917 B
		
	
	
	
		
			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));
 | 
						|
  }
 | 
						|
}
 |