setDefaults([ 'indent_size' => null, 'indent_style' => null, 'no_update_lock' => true, 'verbose' => false, ]); $resolver->addAllowedTypes('indent_size', ['int', 'null']); $resolver->addAllowedTypes('indent_style', ['string', 'null']); $resolver->addAllowedValues('indent_style', ['tab', 'space', null]); $resolver->addAllowedTypes('no_update_lock', ['bool']); $resolver->addAllowedTypes('verbose', ['bool']); return $resolver; } public function run(ContextInterface $context): TaskResultInterface { $config = $this->getConfig()->getOptions(); $files = $context->getFiles() ->path(pathinfo('composer.json', PATHINFO_DIRNAME)) ->name(pathinfo('composer.json', PATHINFO_BASENAME)); if (0 === count($files)) { return TaskResult::createSkipped($this, $context); } $arguments = $this->processBuilder->createArgumentsForCommand('composer'); $arguments->add('normalize'); $arguments->add('--dry-run'); if ($config['indent_size'] !== null && $config['indent_style'] !== null) { $arguments->addOptionalArgument('--indent-style=%s', $config['indent_style']); $arguments->addOptionalArgument('--indent-size=%s', $config['indent_size']); } $arguments->addOptionalArgument('--no-update-lock', $config['no_update_lock']); $arguments->addOptionalArgument('-q', $config['verbose']); $process = $this->processBuilder->buildProcess($arguments); $process->run(); if (!$process->isSuccessful()) { return TaskResult::createFailed($this, $context, $this->formatter->format($process)); } return TaskResult::createPassed($this, $context); } }