* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Fxp\Composer\AssetPlugin\Repository; use Composer\DependencyResolver\Pool; use Composer\IO\IOInterface; use Composer\Repository\RepositoryInterface; use Composer\Repository\RepositoryManager; /** * Helper for Repository. * * @author François Pluchino */ class Util { /** * Add repository config. * * @param IOInterface $io The IO instance * @param RepositoryManager $rm The repository mamanger * @param array $repos The list of already repository added (passed by reference) * @param string $name The name of the new repository * @param array $repoConfig The config of the new repository * @param Pool|null $pool The pool */ public static function addRepository(IOInterface $io, RepositoryManager $rm, array &$repos, $name, array $repoConfig, Pool $pool = null) { $repo = $rm->createRepository($repoConfig['type'], $repoConfig); static::addRepositoryInstance($io, $rm, $repos, $name, $repo, $pool); } /** * Add repository instance. * * @param IOInterface $io The IO instance * @param RepositoryManager $rm The repository mamanger * @param array $repos The list of already repository added (passed by reference) * @param string $name The name of the new repository * @param RepositoryInterface $repo The repository instance * @param Pool|null $pool The pool */ public static function addRepositoryInstance(IOInterface $io, RepositoryManager $rm, array &$repos, $name, RepositoryInterface $repo, Pool $pool = null) { if (!isset($repos[$name])) { static::writeAddRepository($io, $name); $repos[$name] = $repo; $rm->addRepository($repo); if (null !== $pool) { $pool->addRepository($repo); } } } /** * Cleans the package name, removing the Composer prefix if present. * * @param string $name * * @return string */ public static function cleanPackageName($name) { if (preg_match('/^[a-z]+\-asset\//', $name, $matches)) { $name = substr($name, strlen($matches[0])); } return $name; } /** * Converts the alias of asset package name by the real asset package name. * * @param string $name * * @return string */ public static function convertAliasName($name) { if (preg_match('/([\w0-9\/_-]+)-\d+(.\d+)?.[\dxX]+$/', $name, $matches)) { return $matches[1]; } return $name; } /** * Write the vcs repository name in output console. * * @param IOInterface $io The IO instance * @param string $name The vcs repository name */ protected static function writeAddRepository(IOInterface $io, $name) { if ($io->isVerbose()) { $io->write('Adding VCS repository '.$name.''); } } }