Exemple #1
0
 /**
  * Returns the packages selected in the console arguments.
  *
  * @param Args              $args     The console arguments.
  * @param PackageCollection $packages The available packages.
  *
  * @return string[] The package names.
  */
 public static function getPackageNames(Args $args, PackageCollection $packages)
 {
     // Display all packages if "all" is set
     if ($args->isOptionSet('all')) {
         return $packages->getPackageNames();
     }
     $packageNames = array();
     if ($args->isOptionSet('root')) {
         $packageNames[] = $packages->getRootPackage()->getName();
     }
     foreach ($args->getOption('package') as $packageName) {
         $packageNames[] = $packageName;
     }
     return $packageNames ?: $packages->getPackageNames();
 }
Exemple #2
0
 /**
  * Creates an override graph for the given packages.
  *
  * @param PackageCollection $packages The packages to load.
  *
  * @return static The created override graph.
  */
 public static function forPackages(PackageCollection $packages)
 {
     $graph = new static($packages->getPackageNames());
     foreach ($packages as $package) {
         foreach ($package->getPackageFile()->getOverriddenPackages() as $overriddenPackage) {
             if ($graph->hasPackageName($overriddenPackage)) {
                 $graph->addEdge($overriddenPackage, $package->getName());
             }
         }
     }
     // Make sure we have numeric, ascending keys here
     $packageOrder = array_values($packages->getRootPackage()->getPackageFile()->getOverrideOrder());
     // Each package overrides the previous one in the list
     for ($i = 1, $l = count($packageOrder); $i < $l; ++$i) {
         $overriddenPackage = $packageOrder[$i - 1];
         $overridingPackage = $packageOrder[$i];
         if ($graph->hasPackageName($overriddenPackage)) {
             $graph->addEdge($overriddenPackage, $overridingPackage);
         }
     }
     return $graph;
 }