47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace nur\tools\compctl;
 | 
						|
 | 
						|
use Exception;
 | 
						|
use nur\b\ValueException;
 | 
						|
use nur\os;
 | 
						|
use nur\path;
 | 
						|
 | 
						|
class ut {
 | 
						|
  static function resolve_projdir(?string $projdir): array {
 | 
						|
    if ($projdir !== null) {
 | 
						|
      if (is_file($projdir) && basename($projdir) === "composer.json") {
 | 
						|
        $projdir = dirname($projdir);
 | 
						|
      }
 | 
						|
      if (!path::is_dir($projdir)) {
 | 
						|
        throw ValueException::invalid_value($projdir, "directory");
 | 
						|
      }
 | 
						|
    } else {
 | 
						|
      $projdir = getcwd();
 | 
						|
      while (!file_exists("$projdir/composer.json")) {
 | 
						|
        $projdir = path::dirname($projdir);
 | 
						|
        if ($projdir == os::homedir() || $projdir == "/") {
 | 
						|
          throw new Exception("unable to find a composer project dir");
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
    $composerFile = "$projdir/composer.json";
 | 
						|
    if (!file_exists($composerFile)) {
 | 
						|
      throw new Exception("$projdir: not a composer project dir");
 | 
						|
    }
 | 
						|
    $configFile = "$projdir/.composer.yaml";
 | 
						|
    return [$projdir, $composerFile, $configFile];
 | 
						|
  }
 | 
						|
 | 
						|
  public static function resolve_branch(?string $branch, string $projdir): array {
 | 
						|
    $gitdir = git::rcmd1($retcode, "-C", $projdir, "rev-parse", "--show-toplevel");
 | 
						|
    if ($retcode != 0) {
 | 
						|
      if ($branch === null) $branch = "master";
 | 
						|
    } elseif ($branch === null) {
 | 
						|
      $branch = git::cmd1("-C", $projdir, "rev-parse", "--abbrev-ref", "HEAD");
 | 
						|
    }
 | 
						|
    #XXX s'il y a un répertoire git et que la branche est spécifiée, faut-il
 | 
						|
    # vérifier si elle existe?
 | 
						|
    return [$gitdir, $branch];
 | 
						|
  }
 | 
						|
}
 |