* Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Composer\Downloader\VcsDownloader; /** * @author Tiago Ribeiro * @author Rui Marinho */ class StatusCommand extends Command { protected function configure() { $this ->setName('status') ->setDescription('Show a list of locally modified packages') ->setHelp(<<getComposer(); $installedRepo = $composer->getRepositoryManager()->getLocalRepository(); $dm = $composer->getDownloadManager(); $im = $composer->getInstallationManager(); $errors = array(); // list packages foreach ($installedRepo->getPackages() as $package) { $downloader = $dm->getDownloaderForInstalledPackage($package); if ($downloader instanceof VcsDownloader) { $targetDir = $im->getInstallPath($package); if ($downloader->hasLocalChanges($targetDir)) { $errors[] = $targetDir; } } } // output errors/warnings if (!$errors) { $output->writeln('No local changes'); } else { $output->writeln('You have changes in the following packages:'); } foreach ($errors as $error) { $output->writeln($error); } return $errors ? 1 : 0; } }