1
0
Fork 0
mirror of https://github.com/composer/composer synced 2025-05-10 09:02:59 +00:00

List project suggestions in create-project command

Resolves https://github.com/composer/composer/issues/2752
This commit is contained in:
Haralan Dobrev 2016-03-02 23:13:06 +02:00
parent e94066967c
commit cc389d6c1a
4 changed files with 386 additions and 21 deletions

View file

@ -17,6 +17,7 @@ use Composer\Factory;
use Composer\Installer;
use Composer\Installer\ProjectInstaller;
use Composer\Installer\InstallationManager;
use Composer\Installer\SuggestedPackagesReporter;
use Composer\IO\IOInterface;
use Composer\Package\BasePackage;
use Composer\DependencyResolver\Pool;
@ -47,6 +48,11 @@ use Composer\Package\Version\VersionParser;
*/
class CreateProjectCommand extends BaseCommand
{
/**
* @var SuggestedPackagesReporter
*/
protected $suggestedPackagesReporter;
protected function configure()
{
$this
@ -142,6 +148,8 @@ EOT
// we need to manually load the configuration to pass the auth credentials to the io interface!
$io->loadConfiguration($config);
$this->suggestedPackagesReporter = new SuggestedPackagesReporter($io);
if ($packageName !== null) {
$installedFromVcs = $this->installRootPackage($io, $config, $packageName, $directory, $packageVersion, $stability, $preferSource, $preferDist, $installDevPackages, $repository, $disablePlugins, $noScripts, $keepVcs, $noProgress);
} else {
@ -168,7 +176,8 @@ EOT
->setPreferDist($preferDist)
->setDevMode($installDevPackages)
->setRunScripts(!$noScripts)
->setIgnorePlatformRequirements($ignorePlatformReqs);
->setIgnorePlatformRequirements($ignorePlatformReqs)
->setSuggestedPackagesReporter($this->suggestedPackagesReporter);
if ($disablePlugins) {
$installer->disablePlugins();
@ -318,6 +327,9 @@ EOT
$im->install(new InstalledFilesystemRepository(new JsonFile('php://memory')), new InstallOperation($package));
$im->notifyInstalls($io);
// collect suggestions
$this->suggestedPackagesReporter->addSuggestionsFromPackage($package);
$installedFromVcs = 'source' === $package->getInstallationSource();
$io->writeError('<info>Created project in ' . $directory . '</info>');