Browse Source

Merge pull request #2952 from jeromemacias/config_validator_array_loader_flags

Add --no-check-all option to composer validate command
Jordi Boggiano 11 years ago
parent
commit
e87bc894da
3 changed files with 13 additions and 4 deletions
  1. 4 0
      doc/03-cli.md
  2. 6 2
      src/Composer/Command/ValidateCommand.php
  3. 3 2
      src/Composer/Util/ConfigValidator.php

+ 4 - 0
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

+ 6 - 2
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(<<<EOT
@@ -65,7 +68,8 @@ EOT
         }
 
         $validator = new ConfigValidator($this->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) {

+ 3 - 2
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';
             }