12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php
- /*
- * This file is part of Composer.
- *
- * (c) Nils Adermann <naderman@naderman.de>
- * Jordi Boggiano <j.boggiano@seld.be>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Composer\Command;
- use Composer\Plugin\CommandEvent;
- use Composer\Plugin\PluginEvents;
- use Symfony\Component\Console\Input\InputInterface;
- use Symfony\Component\Console\Input\InputOption;
- use Symfony\Component\Console\Output\OutputInterface;
- /**
- * @author Jordi Boggiano <j.boggiano@seld.be>
- */
- class DumpAutoloadCommand extends BaseCommand
- {
- protected function configure()
- {
- $this
- ->setName('dump-autoload')
- ->setAliases(array('dumpautoload'))
- ->setDescription('Dumps the autoloader.')
- ->setDefinition(array(
- new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'),
- new InputOption('optimize', 'o', InputOption::VALUE_NONE, 'Optimizes PSR0 and PSR4 packages to be loaded with classmaps too, good for production.'),
- new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize`.'),
- new InputOption('apcu', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'),
- new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables autoload-dev rules.'),
- ))
- ->setHelp(
- <<<EOT
- <info>php composer.phar dump-autoload</info>
- Read more at https://getcomposer.org/doc/03-cli.md#dump-autoload-dumpautoload-
- EOT
- )
- ;
- }
- protected function execute(InputInterface $input, OutputInterface $output)
- {
- $composer = $this->getComposer();
- $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'dump-autoload', $input, $output);
- $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent);
- $installationManager = $composer->getInstallationManager();
- $localRepo = $composer->getRepositoryManager()->getLocalRepository();
- $package = $composer->getPackage();
- $config = $composer->getConfig();
- $optimize = $input->getOption('optimize') || $config->get('optimize-autoloader');
- $authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative');
- $apcu = $input->getOption('apcu') || $config->get('apcu-autoloader');
- if ($authoritative) {
- $this->getIO()->writeError('<info>Generating optimized autoload files (authoritative)</info>', false);
- } elseif ($optimize) {
- $this->getIO()->writeError('<info>Generating optimized autoload files</info>', false);
- } else {
- $this->getIO()->writeError('<info>Generating autoload files</info>', false);
- }
- $generator = $composer->getAutoloadGenerator();
- $generator->setDevMode(!$input->getOption('no-dev'));
- $generator->setClassMapAuthoritative($authoritative);
- $generator->setApcu($apcu);
- $generator->setRunScripts(!$input->getOption('no-scripts'));
- $numberOfClasses = $generator->dump($config, $localRepo, $package, $installationManager, 'composer', $optimize);
- if ($authoritative) {
- $this->getIO()->overwriteError('<info>Generated optimized autoload files (authoritative) containing '. $numberOfClasses .' classes</info>');
- } elseif ($optimize) {
- $this->getIO()->overwriteError('<info>Generated optimized autoload files containing '. $numberOfClasses .' classes</info>');
- } else {
- $this->getIO()->overwriteError('<info>Generated autoload files containing '. $numberOfClasses .' classes</info>');
- }
- }
- }
|