Monorepo\Build::resolvePackageDependencies PHP Метод

resolvePackageDependencies() приватный Метод

private resolvePackageDependencies ( $repository, $packages, $packageName )
    private function resolvePackageDependencies($repository, $packages, $packageName)
    {
        $config = $packages[$packageName];
        $dependencies = $config['deps'];
        if (isset($config['deps-dev'])) {
            $dependencies = array_merge($dependencies, $config['deps-dev']);
        }
        foreach ($dependencies as $dependencyName) {
            $isVendor = strpos($dependencyName, 'vendor/') === 0;
            if ($dependencyName === 'vendor/php' || strpos($dependencyName, 'vendor/ext-') === 0 || strpos($dependencyName, 'vendor/lib-') === 0) {
                continue;
                // Meta-dependencies that composer checks
            }
            if (!isset($packages[$dependencyName])) {
                if ($dependencyName == 'vendor/composer-plugin-api') {
                    continue;
                }
                if ($isVendor) {
                    throw new \RuntimeException("Requiring non-existent composer-package '" . $dependencyName . "' in '" . $packageName . "'. Please ensure it is present in composer.json.");
                } else {
                    throw new \RuntimeException("Requiring non-existent repo-module '" . $dependencyName . "' in '" . $packageName . "'. Please check that the subdirectory exists, or append \"vendor/\" to reference a composer-package.");
                }
            }
            $dependency = $packages[$dependencyName];
            $package = new Package($dependency['path'], "@stable", "@stable");
            $package->setType('monorepo');
            if (isset($dependency['autoload']) && is_array($dependency['autoload'])) {
                $package->setAutoload($dependency['autoload']);
            }
            if (isset($dependency['bin']) && is_array($dependency['bin'])) {
                $package->setBinaries($dependency['bin']);
            }
            if (!$repository->hasPackage($package)) {
                $repository->addPackage($package);
                $this->resolvePackageDependencies($repository, $packages, $dependencyName);
            }
        }
    }