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