/** * Updates the running Phar if any is available. * * @param string|Version $version The current version. * @param boolean $major Lock to current major version? * @param boolean $pre Allow pre-releases? * * @return boolean TRUE if an update was performed, FALSE if none available. */ public function update($version, $major = false, $pre = false, $newVersion = null) { if (false === $version instanceof Version) { $version = Parser::toVersion($version); } if ($newVersion !== null && false === $newVersion instanceof Version) { $newVersion = Parser::toVersion($newVersion); } if ($newVersion) { if (Comparator::isEqualTo($version, $newVersion)) { $this->logger->error(sprintf('You are already using jarvis version "%s".', (string) $version)); } $update = $this->manifest->find($newVersion); if (null === $update) { $this->logger->error(sprintf('No update found for version "%s".', (string) $newVersion)); return false; } } else { $update = $this->manifest->findRecent($version, $major, $pre); } if (null === $update) { $this->logger->error(sprintf('You are already using jarvis version "%s".', (string) $version)); return false; } if ($update instanceof Update) { if (!$this->downloadFile($update)) { return false; } } return true; }