|
|
@ -59,6 +59,9 @@ class ShowCommand extends BaseCommand
|
|
|
|
/** @var ?RepositorySet */
|
|
|
|
/** @var ?RepositorySet */
|
|
|
|
private $repositorySet;
|
|
|
|
private $repositorySet;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
protected function configure()
|
|
|
|
protected function configure()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
$this
|
|
|
|
$this
|
|
|
@ -553,6 +556,9 @@ EOT
|
|
|
|
return $exitCode;
|
|
|
|
return $exitCode;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return string[]
|
|
|
|
|
|
|
|
*/
|
|
|
|
protected function getRootRequires()
|
|
|
|
protected function getRootRequires()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
$rootPackage = $this->getComposer()->getPackage();
|
|
|
|
$rootPackage = $this->getComposer()->getPackage();
|
|
|
@ -563,6 +569,9 @@ EOT
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return array|string|string[]
|
|
|
|
|
|
|
|
*/
|
|
|
|
protected function getVersionStyle(PackageInterface $latestPackage, PackageInterface $package)
|
|
|
|
protected function getVersionStyle(PackageInterface $latestPackage, PackageInterface $package)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return $this->updateStatusToVersionStyle($this->getUpdateStatus($latestPackage, $package));
|
|
|
|
return $this->updateStatusToVersionStyle($this->getUpdateStatus($latestPackage, $package));
|
|
|
@ -571,12 +580,10 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* finds a package by name and version if provided
|
|
|
|
* finds a package by name and version if provided
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param InstalledRepository $installedRepo
|
|
|
|
|
|
|
|
* @param RepositoryInterface $repos
|
|
|
|
|
|
|
|
* @param string $name
|
|
|
|
* @param string $name
|
|
|
|
* @param ConstraintInterface|string $version
|
|
|
|
* @param ConstraintInterface|string $version
|
|
|
|
* @throws \InvalidArgumentException
|
|
|
|
* @throws \InvalidArgumentException
|
|
|
|
* @return array array(CompletePackageInterface, array of versions)
|
|
|
|
* @return array{CompletePackageInterface|null, array<string, string>}
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected function getPackage(InstalledRepository $installedRepo, RepositoryInterface $repos, $name, $version = null)
|
|
|
|
protected function getPackage(InstalledRepository $installedRepo, RepositoryInterface $repos, $name, $version = null)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -617,10 +624,10 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Prints package info.
|
|
|
|
* Prints package info.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param CompletePackageInterface $package
|
|
|
|
* @param array<string, string> $versions
|
|
|
|
* @param array $versions
|
|
|
|
|
|
|
|
* @param InstalledRepository $installedRepo
|
|
|
|
|
|
|
|
* @param PackageInterface|null $latestPackage
|
|
|
|
* @param PackageInterface|null $latestPackage
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected function printPackageInfo(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, PackageInterface $latestPackage = null)
|
|
|
|
protected function printPackageInfo(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, PackageInterface $latestPackage = null)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -645,10 +652,10 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Prints package metadata.
|
|
|
|
* Prints package metadata.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param CompletePackageInterface $package
|
|
|
|
* @param array<string, string> $versions
|
|
|
|
* @param array $versions
|
|
|
|
|
|
|
|
* @param InstalledRepository $installedRepo
|
|
|
|
|
|
|
|
* @param PackageInterface|null $latestPackage
|
|
|
|
* @param PackageInterface|null $latestPackage
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected function printMeta(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, PackageInterface $latestPackage = null)
|
|
|
|
protected function printMeta(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, PackageInterface $latestPackage = null)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -713,9 +720,9 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Prints all available versions of this package and highlights the installed one if any.
|
|
|
|
* Prints all available versions of this package and highlights the installed one if any.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param CompletePackageInterface $package
|
|
|
|
* @param array<string, string> $versions
|
|
|
|
* @param array $versions
|
|
|
|
*
|
|
|
|
* @param InstalledRepository $installedRepo
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected function printVersions(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo)
|
|
|
|
protected function printVersions(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -741,9 +748,10 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* print link objects
|
|
|
|
* print link objects
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param CompletePackageInterface $package
|
|
|
|
|
|
|
|
* @param string $linkType
|
|
|
|
* @param string $linkType
|
|
|
|
* @param string $title
|
|
|
|
* @param string $title
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected function printLinks(CompletePackageInterface $package, $linkType, $title = null)
|
|
|
|
protected function printLinks(CompletePackageInterface $package, $linkType, $title = null)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -761,7 +769,7 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Prints the licenses of a package with metadata
|
|
|
|
* Prints the licenses of a package with metadata
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param CompletePackageInterface $package
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected function printLicenses(CompletePackageInterface $package)
|
|
|
|
protected function printLicenses(CompletePackageInterface $package)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -791,10 +799,9 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Prints package info in JSON format.
|
|
|
|
* Prints package info in JSON format.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param CompletePackageInterface $package
|
|
|
|
* @param array<string, string> $versions
|
|
|
|
* @param array $versions
|
|
|
|
*
|
|
|
|
* @param InstalledRepository $installedRepo
|
|
|
|
* @return void
|
|
|
|
* @param PackageInterface|null $latestPackage
|
|
|
|
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected function printPackageInfoAsJson(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, PackageInterface $latestPackage = null)
|
|
|
|
protected function printPackageInfoAsJson(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, PackageInterface $latestPackage = null)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -862,6 +869,11 @@ EOT
|
|
|
|
$this->getIO()->write(JsonFile::encode($json));
|
|
|
|
$this->getIO()->write(JsonFile::encode($json));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param array<string, string|string[]|null> $json
|
|
|
|
|
|
|
|
* @param array<string, string> $versions
|
|
|
|
|
|
|
|
* @return array<string, string|string[]|null>
|
|
|
|
|
|
|
|
*/
|
|
|
|
private function appendVersions($json, array $versions)
|
|
|
|
private function appendVersions($json, array $versions)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
uasort($versions, 'version_compare');
|
|
|
|
uasort($versions, 'version_compare');
|
|
|
@ -871,6 +883,10 @@ EOT
|
|
|
|
return $json;
|
|
|
|
return $json;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param array<string, string|string[]|null> $json
|
|
|
|
|
|
|
|
* @return array<string, string|string[]|null>
|
|
|
|
|
|
|
|
*/
|
|
|
|
private function appendLicenses($json, CompletePackageInterface $package)
|
|
|
|
private function appendLicenses($json, CompletePackageInterface $package)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if ($licenses = $package->getLicense()) {
|
|
|
|
if ($licenses = $package->getLicense()) {
|
|
|
@ -894,6 +910,10 @@ EOT
|
|
|
|
return $json;
|
|
|
|
return $json;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param array<string, string|string[]|null> $json
|
|
|
|
|
|
|
|
* @return array<string, string|string[]|null>
|
|
|
|
|
|
|
|
*/
|
|
|
|
private function appendAutoload($json, CompletePackageInterface $package)
|
|
|
|
private function appendAutoload($json, CompletePackageInterface $package)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if ($package->getAutoload()) {
|
|
|
|
if ($package->getAutoload()) {
|
|
|
@ -923,6 +943,10 @@ EOT
|
|
|
|
return $json;
|
|
|
|
return $json;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param array<string, string|string[]|null> $json
|
|
|
|
|
|
|
|
* @return array<string, string|string[]|null>
|
|
|
|
|
|
|
|
*/
|
|
|
|
private function appendLinks($json, CompletePackageInterface $package)
|
|
|
|
private function appendLinks($json, CompletePackageInterface $package)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
foreach (Link::$TYPES as $linkType) {
|
|
|
|
foreach (Link::$TYPES as $linkType) {
|
|
|
@ -932,6 +956,11 @@ EOT
|
|
|
|
return $json;
|
|
|
|
return $json;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param array<string, string|string[]|null> $json
|
|
|
|
|
|
|
|
* @param string $linkType
|
|
|
|
|
|
|
|
* @return array<string, string|string[]|null>
|
|
|
|
|
|
|
|
*/
|
|
|
|
private function appendLink($json, CompletePackageInterface $package, $linkType)
|
|
|
|
private function appendLink($json, CompletePackageInterface $package, $linkType)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
$links = $package->{'get' . ucfirst($linkType)}();
|
|
|
|
$links = $package->{'get' . ucfirst($linkType)}();
|
|
|
@ -950,7 +979,7 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Init styles for tree
|
|
|
|
* Init styles for tree
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param OutputInterface $output
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected function initStyles(OutputInterface $output)
|
|
|
|
protected function initStyles(OutputInterface $output)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -971,7 +1000,8 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Display the tree
|
|
|
|
* Display the tree
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param array $arrayTree
|
|
|
|
* @param array<int, array<string, string|array>> $arrayTree
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected function displayPackageTree(array $arrayTree)
|
|
|
|
protected function displayPackageTree(array $arrayTree)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -1016,10 +1046,7 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Generate the package tree
|
|
|
|
* Generate the package tree
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param PackageInterface $package
|
|
|
|
* @return array<string, array<int, array<string, array|string>>|string|null>
|
|
|
|
* @param InstalledRepository $installedRepo
|
|
|
|
|
|
|
|
* @param RepositoryInterface $remoteRepos
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected function generatePackageTree(
|
|
|
|
protected function generatePackageTree(
|
|
|
|
PackageInterface $package,
|
|
|
|
PackageInterface $package,
|
|
|
@ -1061,10 +1088,12 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Display a package tree
|
|
|
|
* Display a package tree
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param array|string $package
|
|
|
|
* @param array<string, array<int, array<string, array|string>>|string|null>|string $package
|
|
|
|
* @param array $packagesInTree
|
|
|
|
* @param array<int, string|array> $packagesInTree
|
|
|
|
* @param string $previousTreeBar
|
|
|
|
* @param string $previousTreeBar
|
|
|
|
* @param int $level
|
|
|
|
* @param int $level
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected function displayTree(
|
|
|
|
protected function displayTree(
|
|
|
|
$package,
|
|
|
|
$package,
|
|
|
@ -1115,11 +1144,8 @@ EOT
|
|
|
|
* Display a package tree
|
|
|
|
* Display a package tree
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param string $name
|
|
|
|
* @param string $name
|
|
|
|
* @param Link $link
|
|
|
|
* @param string[] $packagesInTree
|
|
|
|
* @param InstalledRepository $installedRepo
|
|
|
|
* @return array<int, array<string, array<int, array<string, string>>|string>>
|
|
|
|
* @param RepositoryInterface $remoteRepos
|
|
|
|
|
|
|
|
* @param array $packagesInTree
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected function addTree(
|
|
|
|
protected function addTree(
|
|
|
|
$name,
|
|
|
|
$name,
|
|
|
@ -1161,6 +1187,10 @@ EOT
|
|
|
|
return $children;
|
|
|
|
return $children;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param string $updateStatus
|
|
|
|
|
|
|
|
* @return string
|
|
|
|
|
|
|
|
*/
|
|
|
|
private function updateStatusToVersionStyle($updateStatus)
|
|
|
|
private function updateStatusToVersionStyle($updateStatus)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// 'up-to-date' is printed green
|
|
|
|
// 'up-to-date' is printed green
|
|
|
@ -1169,6 +1199,9 @@ EOT
|
|
|
|
return str_replace(array('up-to-date', 'semver-safe-update', 'update-possible'), array('info', 'highlight', 'comment'), $updateStatus);
|
|
|
|
return str_replace(array('up-to-date', 'semver-safe-update', 'update-possible'), array('info', 'highlight', 'comment'), $updateStatus);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @return string
|
|
|
|
|
|
|
|
*/
|
|
|
|
private function getUpdateStatus(PackageInterface $latestPackage, PackageInterface $package)
|
|
|
|
private function getUpdateStatus(PackageInterface $latestPackage, PackageInterface $package)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if ($latestPackage->getFullPrettyVersion() === $package->getFullPrettyVersion()) {
|
|
|
|
if ($latestPackage->getFullPrettyVersion() === $package->getFullPrettyVersion()) {
|
|
|
@ -1188,6 +1221,11 @@ EOT
|
|
|
|
return 'update-possible';
|
|
|
|
return 'update-possible';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* @param string $line
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @return void
|
|
|
|
|
|
|
|
*/
|
|
|
|
private function writeTreeLine($line)
|
|
|
|
private function writeTreeLine($line)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
$io = $this->getIO();
|
|
|
|
$io = $this->getIO();
|
|
|
@ -1201,9 +1239,6 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Given a package, this finds the latest package matching it
|
|
|
|
* Given a package, this finds the latest package matching it
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param PackageInterface $package
|
|
|
|
|
|
|
|
* @param Composer $composer
|
|
|
|
|
|
|
|
* @param PlatformRepository $platformRepo
|
|
|
|
|
|
|
|
* @param bool $minorOnly
|
|
|
|
* @param bool $minorOnly
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return PackageInterface|false
|
|
|
|
* @return PackageInterface|false
|
|
|
@ -1257,10 +1292,8 @@ EOT
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Find package requires and child requires
|
|
|
|
* Find package requires and child requires
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param RepositoryInterface $repo
|
|
|
|
* @param array<PackageInterface> $bucket
|
|
|
|
* @param PackageInterface $package
|
|
|
|
* @return array<PackageInterface>
|
|
|
|
* @param array $bucket
|
|
|
|
|
|
|
|
* @return array
|
|
|
|
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private function filterRequiredPackages(RepositoryInterface $repo, PackageInterface $package, $bucket = array())
|
|
|
|
private function filterRequiredPackages(RepositoryInterface $repo, PackageInterface $package, $bucket = array())
|
|
|
|
{
|
|
|
|
{
|
|
|
|