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