Improve error messages for solver problems
parent
12abff8b4c
commit
5bea5974f7
|
@ -66,10 +66,10 @@ class Problem
|
|||
$ext = substr($job['packageName'], 4);
|
||||
$error = extension_loaded($ext) ? 'has the wrong version ('.phpversion($ext).') installed' : 'is missing from your system';
|
||||
|
||||
return 'The requested PHP extension "'.$job['packageName'].'" '.$this->constraintToText($job['constraint']).$error.'.';
|
||||
return 'The requested PHP extension '.$job['packageName'].$this->constraintToText($job['constraint']).' '.$error.'.';
|
||||
}
|
||||
|
||||
return 'The requested package "'.$job['packageName'].'" '.$this->constraintToText($job['constraint']).'could not be found.';
|
||||
return 'The requested package '.$job['packageName'].$this->constraintToText($job['constraint']).' could not be found.';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -115,14 +115,27 @@ class Problem
|
|||
{
|
||||
switch ($job['cmd']) {
|
||||
case 'install':
|
||||
return 'Installation of package "'.$job['packageName'].'" '.$this->constraintToText($job['constraint']).'was requested. Satisfiable by packages ['.implode(', ', $job['packages']).'].';
|
||||
if (!$job['packages']) {
|
||||
return 'No package found to satisfy install request for '.$job['packageName'].$this->constraintToText($job['constraint']);
|
||||
}
|
||||
|
||||
return 'Installation request for '.$job['packageName'].$this->constraintToText($job['constraint']).': Satisfiable by ['.$this->getPackageList($job['packages']).'].';
|
||||
case 'update':
|
||||
return 'Update of package "'.$job['packageName'].'" '.$this->constraintToText($job['constraint']).'was requested.';
|
||||
return 'Update request for '.$job['packageName'].$this->constraintToText($job['constraint']).'.';
|
||||
case 'remove':
|
||||
return 'Removal of package "'.$job['packageName'].'" '.$this->constraintToText($job['constraint']).'was requested.';
|
||||
return 'Removal request for '.$job['packageName'].$this->constraintToText($job['constraint']).'';
|
||||
}
|
||||
|
||||
return 'Job(cmd='.$job['cmd'].', target='.$job['packageName'].', packages=['.implode(', ', $job['packages']).'])';
|
||||
return 'Job(cmd='.$job['cmd'].', target='.$job['packageName'].', packages=['.$this->packageList($job['packages']).'])';
|
||||
}
|
||||
|
||||
protected function getPackageList($packages)
|
||||
{
|
||||
return implode(', ', array_map(function ($package) {
|
||||
return $package->getPrettyString();
|
||||
},
|
||||
$packages
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -133,6 +146,6 @@ class Problem
|
|||
*/
|
||||
protected function constraintToText($constraint)
|
||||
{
|
||||
return ($constraint) ? 'with constraint '.$constraint.' ' : '';
|
||||
return ($constraint) ? ' '.$constraint : '';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -171,7 +171,7 @@ class Rule
|
|||
$package1 = $this->pool->literalToPackage($this->literals[0]);
|
||||
$package2 = $this->pool->literalToPackage($this->literals[1]);
|
||||
|
||||
return 'Package "'.$package1.'" conflicts with "'.$package2.'"';
|
||||
return 'Package '.$package1->getPrettyString().' conflicts with '.$package2->getPrettyString().'"';
|
||||
|
||||
case self::RULE_PACKAGE_REQUIRES:
|
||||
$literals = $this->literals;
|
||||
|
|
|
@ -201,6 +201,11 @@ abstract class BasePackage implements PackageInterface
|
|||
return $this->getUniqueName();
|
||||
}
|
||||
|
||||
public function getPrettyString()
|
||||
{
|
||||
return $this->getPrettyName().'-'.$this->getPrettyVersion();
|
||||
}
|
||||
|
||||
public function __clone()
|
||||
{
|
||||
$this->repository = null;
|
||||
|
|
|
@ -356,4 +356,11 @@ interface PackageInterface
|
|||
* @return string
|
||||
*/
|
||||
public function __toString();
|
||||
|
||||
/**
|
||||
* Converts the package into a pretty readable string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPrettyString();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue