public function execute()
 {
     global $IP;
     $lockLocation = "{$IP}/composer.lock";
     $jsonLocation = "{$IP}/composer.json";
     if (!file_exists($lockLocation)) {
         // Maybe they're using mediawiki/vendor?
         $lockLocation = "{$IP}/vendor/composer.lock";
         if (!file_exists($lockLocation)) {
             $this->error('Could not find composer.lock file. Have you run "composer install"?', 1);
         }
     }
     $lock = new ComposerLock($lockLocation);
     $json = new ComposerJson($jsonLocation);
     if ($lock->getHash() === $json->getHash()) {
         $this->output("Your composer.lock file is up to date with current dependencies!\n");
         return;
     }
     // Out of date, lets figure out which dependencies are old
     $found = false;
     $installed = $lock->getInstalledDependencies();
     foreach ($json->getRequiredDependencies() as $name => $version) {
         if (isset($installed[$name])) {
             if ($installed[$name]['version'] !== $version) {
                 $this->output("{$name}: {$installed[$name]['version']} installed, {$version} required.\n");
                 $found = true;
             }
         } else {
             $this->output("{$name}: not installed, {$version} required.\n");
             $found = true;
         }
     }
     if ($found) {
         $this->error('Error: your composer.lock file is not up to date. ' . 'Run "composer update" to install newer dependencies', 1);
     } else {
         // The hash is the entire composer.json file,
         // so it can be updated without any of the dependencies changing
         // We couldn't find any out-of-date dependencies, so assume everything is ok!
         $this->output("Your composer.lock file is up to date with current dependencies!\n");
     }
 }
示例#2
0
 /**
  * @covers ComposerLock::getHash
  */
 public function testGetHash()
 {
     $lock = new ComposerLock($this->lock);
     $this->assertEquals('a3bb80b0ac4c4a31e52574d48c032923', $lock->getHash());
 }