From 4f417e3985a512c8793ac930ec29c7f609c69412 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Macias?= Date: Wed, 30 Apr 2014 15:51:54 +0200 Subject: [PATCH] Add --no-check-all option to composer validate command --- doc/03-cli.md | 4 ++++ src/Composer/Command/ValidateCommand.php | 8 ++++++-- src/Composer/Util/ConfigValidator.php | 5 +++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/doc/03-cli.md b/doc/03-cli.md index e885a7a9f..acbd470e2 100644 --- a/doc/03-cli.md +++ b/doc/03-cli.md @@ -248,6 +248,10 @@ You should always run the `validate` command before you commit your $ php composer.phar validate +### Options + +* **--no-check-all:** Wether or not composer do a complete validation. + ## status If you often need to modify the code of your dependencies and they are diff --git a/src/Composer/Command/ValidateCommand.php b/src/Composer/Command/ValidateCommand.php index 38a524125..e7e0860e1 100644 --- a/src/Composer/Command/ValidateCommand.php +++ b/src/Composer/Command/ValidateCommand.php @@ -12,9 +12,11 @@ namespace Composer\Command; +use Composer\Package\Loader\ValidatingArrayLoader; use Composer\Util\ConfigValidator; -use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** @@ -34,6 +36,7 @@ class ValidateCommand extends Command ->setName('validate') ->setDescription('Validates a composer.json') ->setDefinition(array( + new InputOption('no-check-all', null, InputOption::VALUE_NONE, 'Do not make a complete validation'), new InputArgument('file', InputArgument::OPTIONAL, 'path to composer.json file', './composer.json') )) ->setHelp(<<getIO()); - list($errors, $publishErrors, $warnings) = $validator->validate($file); + $checkAll = $input->getOption('no-check-all') ? 0 : ValidatingArrayLoader::CHECK_ALL; + list($errors, $publishErrors, $warnings) = $validator->validate($file, $checkAll); // output errors/warnings if (!$errors && !$publishErrors && !$warnings) { diff --git a/src/Composer/Util/ConfigValidator.php b/src/Composer/Util/ConfigValidator.php index 731575e90..5b9a7cf26 100644 --- a/src/Composer/Util/ConfigValidator.php +++ b/src/Composer/Util/ConfigValidator.php @@ -38,10 +38,11 @@ class ConfigValidator * Validates the config, and returns the result. * * @param string $file The path to the file + * @param integer $arrayLoaderValidationFlags Flags for ArrayLoader validation * * @return array a triple containing the errors, publishable errors, and warnings */ - public function validate($file) + public function validate($file, $arrayLoaderValidationFlags = ValidatingArrayLoader::CHECK_ALL) { $errors = array(); $publishErrors = array(); @@ -119,7 +120,7 @@ class ConfigValidator } try { - $loader = new ValidatingArrayLoader(new ArrayLoader(), true, null, ValidatingArrayLoader::CHECK_ALL); + $loader = new ValidatingArrayLoader(new ArrayLoader(), true, null, $arrayLoaderValidationFlags); if (!isset($manifest['version'])) { $manifest['version'] = '1.0.0'; }