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));
 | |
|   }
 | |
| }
 |