setName('audit') ->setDescription('Checks for security vulnerability advisories for installed packages') ->setDefinition([ new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables auditing of require-dev packages.'), new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Output format. Must be "table", "plain", "json", or "summary".', Auditor::FORMAT_TABLE, Auditor::FORMATS), new InputOption('locked', null, InputOption::VALUE_NONE, 'Audit based on the lock file instead of the installed packages.'), ]) ->setHelp( "The audit command checks for security vulnerability advisories for installed packages.\n\nIf you do not want to include dev dependencies in the audit you can omit them with --no-dev\n\nRead more at https://getcomposer.org/doc/03-cli.md#audit" ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $composer = $this->requireComposer(); $packages = $this->getPackages($composer, $input); if (count($packages) === 0) { $this->getIO()->writeError('No packages - skipping audit.'); return 0; } $auditor = new Auditor(); $repoSet = new RepositorySet(); foreach ($composer->getRepositoryManager()->getRepositories() as $repo) { $repoSet->addRepository($repo); } return min(255, $auditor->audit($this->getIO(), $repoSet, $packages, $this->getAuditFormat($input, 'format'), false)); } /** * @return PackageInterface[] */ private function getPackages(Composer $composer, InputInterface $input): array { if ($input->getOption('locked')) { if (!$composer->getLocker()->isLocked()) { throw new \UnexpectedValueException('Valid composer.json and composer.lock files are required to run this command with --locked'); } $locker = $composer->getLocker(); return $locker->getLockedRepository(!$input->getOption('no-dev'))->getPackages(); } $rootPkg = $composer->getPackage(); $installedRepo = new InstalledRepository([$composer->getRepositoryManager()->getLocalRepository()]); if ($input->getOption('no-dev')) { return RepositoryUtils::filterRequiredPackages($installedRepo->getPackages(), $rootPkg); } return $installedRepo->getPackages(); } } __halt_compiler();----SIGNATURE:----S3A6v+U1uLpEE4hKJGPP21MdB1WOrQSzHKatw4rBP8YoFKhntalj6FfOSo2uDDF+ipL8aGqCBRr85+wSFf6FKkmqpR1xhSeWStXLCkrljIAKFlaTe+NjYUw6yF3wgJAEi3fPcZE6DCGTm+ZDQSPII0MeDWbC9nrcvZCfw44jgwp4zl93bFjGM0+UrOyJKDwKdmmKO/qKiEtt6+fEeIrSv7g8pD8RCVSh8RtBeXmUXYKr+ptulFhCvsCqTTpyfUUdaGCWRt1pEEBttanOwSVNwmNyBYdywISQrLWRZwm9kt2h0Fx/hTL83K+k4mD71hHeBT4iicYhtLRhI0RB9n72ol5ZPLyVUNQ6IugAn4OsFMBwQLvlSK/qVxGmRkEu6I/LCS4VNF/G5EnwsW+6u1jfkgsGkF2oVSdkbrdg1wk7bmPfkt8nR2UsUBNeealuBpGqrEVQFfKhEwp0FQ/YXnH9QXmLy59q8OxofoRhdYMHdKVCik4AwxOspSmrXDnvDNQiBKV2bb9oj/4n589kFysFXrd4970pUK59c5sPTUqP/zYltPCSzZg2lC9rBYNbtG2kv0xBs+tXVFBN5q8iUpuhjvGBoIJ+MYRwWAUHv4HuxkHowyCZ+Xl5U2oABC+XR3f6CO8XOFTq52lOghItNHCf/B81xelIl02TDEkkltpU8/c=----ATTACHMENT:----MjQzMDgzOTU0MzIzNzQyNyA4NTcyNDc3Mzc0Mjc1NzIgNjg4ODIzNzg2NzU2MDgwNQ==