Fail early if git/hg/svn can not be found on the system, so that download can be retried from dist, fixes #9681
parent
78d7792eb8
commit
6a869ede77
|
@ -71,6 +71,10 @@ class GitDownloader extends VcsDownloader implements DvcsDownloaderInterface
|
|||
if ($this->gitUtil->fetchRefOrSyncMirror($url, $cachePath, $ref) && is_dir($cachePath)) {
|
||||
$this->cachedPackages[$package->getId()][$ref] = true;
|
||||
}
|
||||
} else {
|
||||
if (null === GitUtil::getVersion($this->process)) {
|
||||
throw new \RuntimeException('git was not found in your PATH, skipping source download');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -26,6 +26,9 @@ class HgDownloader extends VcsDownloader
|
|||
*/
|
||||
protected function doDownload(PackageInterface $package, $path, $url, PackageInterface $prevPackage = null)
|
||||
{
|
||||
if (null === HgUtils::getVersion($this->process)) {
|
||||
throw new \RuntimeException('hg was not found in your PATH, skipping source download');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -30,6 +30,11 @@ class SvnDownloader extends VcsDownloader
|
|||
*/
|
||||
protected function doDownload(PackageInterface $package, $path, $url, PackageInterface $prevPackage = null)
|
||||
{
|
||||
SvnUtil::cleanEnv();
|
||||
$util = new SvnUtil($url, $this->io, $this->config, $this->process);
|
||||
if (null === $util->binaryVersion()) {
|
||||
throw new \RuntimeException('svn was not found in your PATH, skipping source download');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -403,15 +403,12 @@ class Git
|
|||
/**
|
||||
* Retrieves the current git version.
|
||||
*
|
||||
* @return string|null The git version number.
|
||||
* @return string|null The git version number, if present.
|
||||
*/
|
||||
public static function getVersion(ProcessExecutor $process)
|
||||
{
|
||||
if (false === self::$version) {
|
||||
self::$version = null;
|
||||
if (!$process) {
|
||||
$process = new ProcessExecutor;
|
||||
}
|
||||
if (0 === $process->execute('git --version', $output) && preg_match('/^git version (\d+(?:\.\d+)+)/m', $output, $matches)) {
|
||||
self::$version = $matches[1];
|
||||
}
|
||||
|
|
|
@ -74,10 +74,27 @@ class Hg
|
|||
|
||||
private function throwException($message, $url)
|
||||
{
|
||||
if (0 !== $this->process->execute('hg --version', $ignoredOutput)) {
|
||||
if (null === self::getVersion($this->process)) {
|
||||
throw new \RuntimeException(Url::sanitize('Failed to clone ' . $url . ', hg was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput()));
|
||||
}
|
||||
|
||||
throw new \RuntimeException(Url::sanitize($message));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the current hg version.
|
||||
*
|
||||
* @return string|null The hg version number, if present.
|
||||
*/
|
||||
public static function getVersion(ProcessExecutor $process)
|
||||
{
|
||||
if (false === self::$version) {
|
||||
self::$version = null;
|
||||
if (0 === $this->process->execute('hg --version', $output) && preg_match('/version (\d+(?:\.\d+)+)/m', $output, $matches)) {
|
||||
self::$version = $matches[1];
|
||||
}
|
||||
}
|
||||
|
||||
return self::$version;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue