Exemplo n.º 1
0
 /**
  * {@inheritDoc}
  */
 public function getPackageBasePath(PackageInterface $package)
 {
     $names = $package->getNames();
     if (is_array($names)) {
         $names = $names[0];
     }
     $extra = $package->getExtra();
     if (isset($extra['install-dir'])) {
         return $extra['install-dir'];
     } else {
         list($vendor, $package) = explode('/', $names);
         return 'plugins/' . $vendor . $package;
     }
 }
 public function getInstallPath(PackageInterface $package)
 {
     $names = $package->getNames();
     if ($this->composer->getPackage()) {
         $extra = $this->composer->getPackage()->getExtra();
         if (!empty($extra['installer-paths'])) {
             foreach ($extra['installer-paths'] as $path => $packageNames) {
                 foreach ($packageNames as $packageName) {
                     if (in_array(strtolower($packageName), $names)) {
                         return $path;
                     }
                 }
             }
         }
     }
     /*
      * In case, the user didn't provide a custom path
      * use the default one, by calling the parent::getInstallPath function
      */
     return parent::getInstallPath($package);
 }
Exemplo n.º 3
0
 /**
  * Tells if a package has to be dumped or not.
  *
  * @param PackageInterface $package The package to be dumped
  *
  * @return bool false if the package has to be dumped.
  */
 public function isSkippable(PackageInterface $package)
 {
     if ('metapackage' === $package->getType()) {
         return true;
     }
     $name = $package->getPrettyString();
     if (true === $this->archiveConfig['skip-dev'] && true === $package->isDev()) {
         $this->output->writeln(sprintf("<info>Skipping '%s' (is dev)</info>", $name));
         return true;
     }
     $names = $package->getNames();
     if ($this->archiveConfig['whitelist'] && !array_intersect($this->archiveConfig['whitelist'], $names)) {
         $this->output->writeln(sprintf("<info>Skipping '%s' (is not in whitelist)</info>", $name));
         return true;
     }
     if ($this->archiveConfig['blacklist'] && array_intersect($this->archiveConfig['blacklist'], $names)) {
         $this->output->writeln(sprintf("<info>Skipping '%s' (is in blacklist)</info>", $name));
         return true;
     }
     return false;
 }
 public function getInstallPath(PackageInterface $package)
 {
     $names = $package->getNames();
     if ($this->composer->getPackage()) {
         $extra = $this->composer->getPackage()->getExtra();
         if (!empty($extra['installer-paths'])) {
             foreach ($extra['installer-paths'] as $path => $packageNames) {
                 foreach ($packageNames as $packageName) {
                     if (in_array(strtolower($packageName), $names)) {
                         if ($matched = preg_match_all("/\\{(.*?)\\}/is", $path, $matches, PREG_PATTERN_ORDER)) {
                             $packageParts = explode('/', $packageName);
                             foreach ($matches[1] as $pattern) {
                                 $patternParts = explode('|', $pattern);
                                 $flags = array();
                                 if (count($patternParts) > 1) {
                                     $flags = str_split($patternParts[1]);
                                 }
                                 switch ($patternParts[0]) {
                                     case '$package':
                                         $value = $packageName;
                                         break;
                                     case '$name':
                                         if (count($packageParts) > 1) {
                                             $value = $packageParts[1];
                                         } else {
                                             $value = 'undefined';
                                         }
                                         break;
                                     case '$vendor':
                                         if (count($packageParts) > 1) {
                                             $value = $packageParts[0];
                                         } else {
                                             $value = 'undefined';
                                         }
                                         break;
                                 }
                                 foreach ($flags as $flag) {
                                     switch ($flag) {
                                         case 'F':
                                             $value = ucfirst($value);
                                             break;
                                         case 'P':
                                             $value = preg_replace_callback('/[_\\-]([a-zA-Z])/', function ($matches) {
                                                 return strtoupper($matches[1]);
                                             }, $value);
                                             break;
                                     }
                                 }
                                 $path = str_replace('{' . $pattern . '}', $value, $path);
                             }
                         }
                         return $path;
                     }
                 }
             }
         }
     }
     /*
      * In case, the user didn't provide a custom path
      * use the default one, by calling the parent::getInstallPath function
      */
     return parent::getInstallPath($package);
 }
Exemplo n.º 5
0
 /**
  * {@inheritdoc}
  */
 public function getNames()
 {
     return $this->package->getNames();
 }