/** * {@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); }
/** * 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); }
/** * {@inheritdoc} */ public function getNames() { return $this->package->getNames(); }