*/
class OutdatedCommand extends BaseCommand
{
use CompletionTrait;
protected function configure(): void
{
$this
->setName('outdated')
->setDescription('Shows a list of installed packages that have updates available, including their latest version')
->setDefinition([
new InputArgument('package', InputArgument::OPTIONAL, 'Package to inspect. Or a name including a wildcard (*) to filter lists of packages instead.', null, $this->suggestInstalledPackage(false)),
new InputOption('outdated', 'o', InputOption::VALUE_NONE, 'Show only packages that are outdated (this is the default, but present here for compat with `show`'),
new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show all installed packages with their latest versions'),
new InputOption('locked', null, InputOption::VALUE_NONE, 'Shows updates for packages from the lock file, regardless of what is currently in vendor dir'),
new InputOption('direct', 'D', InputOption::VALUE_NONE, 'Shows only packages that are directly required by the root package'),
new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code when there are outdated packages'),
new InputOption('major-only', 'M', InputOption::VALUE_NONE, 'Show only packages that have major SemVer-compatible updates.'),
new InputOption('minor-only', 'm', InputOption::VALUE_NONE, 'Show only packages that have minor SemVer-compatible updates.'),
new InputOption('patch-only', 'p', InputOption::VALUE_NONE, 'Show only packages that have patch SemVer-compatible updates.'),
new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text', ['json', 'text']),
new InputOption('ignore', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore specified package(s). Use it if you don\'t want to be informed about new versions of some packages.', null, $this->suggestInstalledPackage(false)),
new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables search in require-dev packages.'),
new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages). Use with the --outdated option'),
new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages). Use with the --outdated option'),
])
->setHelp(
"The outdated command is just a proxy for `composer show -l`\n\nThe color coding (or signage if you have ANSI colors disabled) for dependency versions is as such:\n\n- green (=): Dependency is in the latest version and is up to date.\n- yellow (~): Dependency has a new version available that includes backwards\n compatibility breaks according to semver, so upgrade when you can but it\n may involve work.\n- red (!): Dependency has a new version that is semver-compatible and you should upgrade it.\n\nRead more at https://getcomposer.org/doc/03-cli.md#outdated"
)
;
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$args = [
'command' => 'show',
'--latest' => true,
];
if (!$input->getOption('all')) {
$args['--outdated'] = true;
}
if ($input->getOption('direct')) {
$args['--direct'] = true;
}
if (null !== $input->getArgument('package')) {
$args['package'] = $input->getArgument('package');
}
if ($input->getOption('strict')) {
$args['--strict'] = true;
}
if ($input->getOption('major-only')) {
$args['--major-only'] = true;
}
if ($input->getOption('minor-only')) {
$args['--minor-only'] = true;
}
if ($input->getOption('patch-only')) {
$args['--patch-only'] = true;
}
if ($input->getOption('locked')) {
$args['--locked'] = true;
}
if ($input->getOption('no-dev')) {
$args['--no-dev'] = true;
}
$args['--ignore-platform-req'] = $input->getOption('ignore-platform-req');
if ($input->getOption('ignore-platform-reqs')) {
$args['--ignore-platform-reqs'] = true;
}
$args['--format'] = $input->getOption('format');
$args['--ignore'] = $input->getOption('ignore');
$input = new ArrayInput($args);
return $this->getApplication()->run($input, $output);
}
/**
* @inheritDoc
*/
public function isProxyCommand(): bool
{
return true;
}
}
__halt_compiler();----SIGNATURE:----STqW3ebG9UvNTOJew1+V7LrxtBhKvCPopuUluUi1uQcyOnhtDpS5s+Fu9aLueYc9Af6J9ELs44ERbUBjfLg09yPLxuV+f+9Qg5QCcWqUX9DU5uuvK+753+0k6B24Z9FhpeDr0gh2vqCHG+clxJ/SXeBQLbXU0qqdKyGOR4Vdhzb6QANijwgFZj7vGT+mNoi0tAGgq4bWImReFGy4zdL3VvUek+37Kp9sUvgF7a6h2exC/5KFIbPvzMcOHTDA4axvG1GpCVOvHQOjlLnTPIWglHZNO/KlNUaywGU0KpjXOS+EWA+6CFuaU0T56/BTU+o+qa5rbmr8sgOvPrO1ACxH8VZ55L3M2ymPJs0lyDcUtJr19qsC0Xx2jxLXVAFSFGHEtmND9y/76zdHGujHTyF0m8PmmzyCOTsYWr9aWFECE/CfJRLE+NSQZRNJhaEL4W0VfKbeFXgfEZbyangjP+x77S7/ydE74gXHSlOrSBHUmB/sVdwelvftLFcVuq7uS99WZsULDUzYDEBMzk0vHj/wTz0cD/vMARf1J48eIZlibHPlleL6ubnRX2g0aSXJxNAQpqQUrP5OXdaAfb7PHo+aX+r/25rViVrc9aWdROm045NXcZv4n0YN7iXFvsuXt6YRmXvfFxrArUQH+Lbv+FTNB109fY3njcLwJ5r76VRm/2w=----ATTACHMENT:----MTQ4ODMyOTc4MDQyNDY4MyA2NzQwODc0NDIwNjgzOTU3IDE3MzU2NzIwNTQwOTkwMjE=