Merge pull request #4086 from legoktm/format-version
Move VersionParser::formatVersion() to BasePackage::getFullPrettyVersion()pull/4213/head
commit
2438105e11
|
@ -298,7 +298,7 @@ EOT
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$io->writeError('<info>Installing ' . $package->getName() . ' (' . VersionParser::formatVersion($package, false) . ')</info>');
|
$io->writeError('<info>Installing ' . $package->getName() . ' (' . $package->getFullPrettyVersion(false) . ')</info>');
|
||||||
|
|
||||||
if ($disablePlugins) {
|
if ($disablePlugins) {
|
||||||
$io->writeError('<info>Plugins have been disabled.</info>');
|
$io->writeError('<info>Plugins have been disabled.</info>');
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
namespace Composer\Command;
|
namespace Composer\Command;
|
||||||
|
|
||||||
use Composer\Json\JsonFile;
|
use Composer\Json\JsonFile;
|
||||||
use Composer\Package\Version\VersionParser;
|
|
||||||
use Composer\Plugin\CommandEvent;
|
use Composer\Plugin\CommandEvent;
|
||||||
use Composer\Plugin\PluginEvents;
|
use Composer\Plugin\PluginEvents;
|
||||||
use Composer\Package\PackageInterface;
|
use Composer\Package\PackageInterface;
|
||||||
|
@ -56,8 +55,6 @@ EOT
|
||||||
$root = $composer->getPackage();
|
$root = $composer->getPackage();
|
||||||
$repo = $composer->getRepositoryManager()->getLocalRepository();
|
$repo = $composer->getRepositoryManager()->getLocalRepository();
|
||||||
|
|
||||||
$versionParser = new VersionParser;
|
|
||||||
|
|
||||||
if ($input->getOption('no-dev')) {
|
if ($input->getOption('no-dev')) {
|
||||||
$packages = $this->filterRequiredPackages($repo, $root);
|
$packages = $this->filterRequiredPackages($repo, $root);
|
||||||
} else {
|
} else {
|
||||||
|
@ -69,7 +66,7 @@ EOT
|
||||||
switch ($format = $input->getOption('format')) {
|
switch ($format = $input->getOption('format')) {
|
||||||
case 'text':
|
case 'text':
|
||||||
$this->getIO()->write('Name: <comment>'.$root->getPrettyName().'</comment>');
|
$this->getIO()->write('Name: <comment>'.$root->getPrettyName().'</comment>');
|
||||||
$this->getIO()->write('Version: <comment>'.$versionParser->formatVersion($root).'</comment>');
|
$this->getIO()->write('Version: <comment>'.$root->getFullPrettyVersion().'</comment>');
|
||||||
$this->getIO()->write('Licenses: <comment>'.(implode(', ', $root->getLicense()) ?: 'none').'</comment>');
|
$this->getIO()->write('Licenses: <comment>'.(implode(', ', $root->getLicense()) ?: 'none').'</comment>');
|
||||||
$this->getIO()->write('Dependencies:');
|
$this->getIO()->write('Dependencies:');
|
||||||
$this->getIO()->write('');
|
$this->getIO()->write('');
|
||||||
|
@ -82,7 +79,7 @@ EOT
|
||||||
foreach ($packages as $package) {
|
foreach ($packages as $package) {
|
||||||
$table->addRow(array(
|
$table->addRow(array(
|
||||||
$package->getPrettyName(),
|
$package->getPrettyName(),
|
||||||
$versionParser->formatVersion($package),
|
$package->getFullPrettyVersion(),
|
||||||
implode(', ', $package->getLicense()) ?: 'none',
|
implode(', ', $package->getLicense()) ?: 'none',
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
@ -92,14 +89,14 @@ EOT
|
||||||
case 'json':
|
case 'json':
|
||||||
foreach ($packages as $package) {
|
foreach ($packages as $package) {
|
||||||
$dependencies[$package->getPrettyName()] = array(
|
$dependencies[$package->getPrettyName()] = array(
|
||||||
'version' => $versionParser->formatVersion($package),
|
'version' => $package->getFullPrettyVersion(),
|
||||||
'license' => $package->getLicense(),
|
'license' => $package->getLicense(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->getIO()->write(JsonFile::encode(array(
|
$this->getIO()->write(JsonFile::encode(array(
|
||||||
'name' => $root->getPrettyName(),
|
'name' => $root->getPrettyName(),
|
||||||
'version' => $versionParser->formatVersion($root),
|
'version' => $root->getFullPrettyVersion(),
|
||||||
'license' => $root->getLicense(),
|
'license' => $root->getLicense(),
|
||||||
'dependencies' => $dependencies,
|
'dependencies' => $dependencies,
|
||||||
)));
|
)));
|
||||||
|
|
|
@ -181,7 +181,7 @@ EOT
|
||||||
foreach ($packages[$type] as $package) {
|
foreach ($packages[$type] as $package) {
|
||||||
if (is_object($package)) {
|
if (is_object($package)) {
|
||||||
$nameLength = max($nameLength, strlen($package->getPrettyName()));
|
$nameLength = max($nameLength, strlen($package->getPrettyName()));
|
||||||
$versionLength = max($versionLength, strlen($this->versionParser->formatVersion($package)));
|
$versionLength = max($versionLength, strlen($package->getFullPrettyVersion()));
|
||||||
} else {
|
} else {
|
||||||
$nameLength = max($nameLength, $package);
|
$nameLength = max($nameLength, $package);
|
||||||
}
|
}
|
||||||
|
@ -209,7 +209,7 @@ EOT
|
||||||
$output->write($indent . str_pad($package->getPrettyName(), $nameLength, ' '), false);
|
$output->write($indent . str_pad($package->getPrettyName(), $nameLength, ' '), false);
|
||||||
|
|
||||||
if ($writeVersion) {
|
if ($writeVersion) {
|
||||||
$output->write(' ' . str_pad($this->versionParser->formatVersion($package), $versionLength, ' '), false);
|
$output->write(' ' . str_pad($package->getFullPrettyVersion(), $versionLength, ' '), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($writeDescription) {
|
if ($writeDescription) {
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
|
|
||||||
namespace Composer\DependencyResolver\Operation;
|
namespace Composer\DependencyResolver\Operation;
|
||||||
|
|
||||||
use Composer\Package\Version\VersionParser;
|
|
||||||
use Composer\Package\PackageInterface;
|
use Composer\Package\PackageInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -46,6 +45,6 @@ abstract class SolverOperation implements OperationInterface
|
||||||
|
|
||||||
protected function formatVersion(PackageInterface $package)
|
protected function formatVersion(PackageInterface $package)
|
||||||
{
|
{
|
||||||
return VersionParser::formatVersion($package);
|
return $package->getFullPrettyVersion();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@ use Composer\Config;
|
||||||
use Composer\Cache;
|
use Composer\Cache;
|
||||||
use Composer\IO\IOInterface;
|
use Composer\IO\IOInterface;
|
||||||
use Composer\Package\PackageInterface;
|
use Composer\Package\PackageInterface;
|
||||||
use Composer\Package\Version\VersionParser;
|
|
||||||
use Composer\Plugin\PluginEvents;
|
use Composer\Plugin\PluginEvents;
|
||||||
use Composer\Plugin\PreFileDownloadEvent;
|
use Composer\Plugin\PreFileDownloadEvent;
|
||||||
use Composer\EventDispatcher\EventDispatcher;
|
use Composer\EventDispatcher\EventDispatcher;
|
||||||
|
@ -81,7 +80,7 @@ class FileDownloader implements DownloaderInterface
|
||||||
throw new \InvalidArgumentException('The given package is missing url information');
|
throw new \InvalidArgumentException('The given package is missing url information');
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->io->writeError(" - Installing <info>" . $package->getName() . "</info> (<comment>" . VersionParser::formatVersion($package) . "</comment>)");
|
$this->io->writeError(" - Installing <info>" . $package->getName() . "</info> (<comment>" . $package->getFullPrettyVersion() . "</comment>)");
|
||||||
|
|
||||||
$urls = $package->getDistUrls();
|
$urls = $package->getDistUrls();
|
||||||
while ($url = array_shift($urls)) {
|
while ($url = array_shift($urls)) {
|
||||||
|
@ -205,7 +204,7 @@ class FileDownloader implements DownloaderInterface
|
||||||
*/
|
*/
|
||||||
public function remove(PackageInterface $package, $path)
|
public function remove(PackageInterface $package, $path)
|
||||||
{
|
{
|
||||||
$this->io->writeError(" - Removing <info>" . $package->getName() . "</info> (<comment>" . VersionParser::formatVersion($package) . "</comment>)");
|
$this->io->writeError(" - Removing <info>" . $package->getName() . "</info> (<comment>" . $package->getFullPrettyVersion() . "</comment>)");
|
||||||
if (!$this->filesystem->removeDirectory($path)) {
|
if (!$this->filesystem->removeDirectory($path)) {
|
||||||
throw new \RuntimeException('Could not completely delete '.$path.', aborting.');
|
throw new \RuntimeException('Could not completely delete '.$path.', aborting.');
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,6 @@ namespace Composer\Downloader;
|
||||||
|
|
||||||
use Composer\Config;
|
use Composer\Config;
|
||||||
use Composer\Package\PackageInterface;
|
use Composer\Package\PackageInterface;
|
||||||
use Composer\Package\Version\VersionParser;
|
|
||||||
use Composer\Util\ProcessExecutor;
|
use Composer\Util\ProcessExecutor;
|
||||||
use Composer\IO\IOInterface;
|
use Composer\IO\IOInterface;
|
||||||
use Composer\Util\Filesystem;
|
use Composer\Util\Filesystem;
|
||||||
|
@ -54,7 +53,7 @@ abstract class VcsDownloader implements DownloaderInterface, ChangeReportInterfa
|
||||||
throw new \InvalidArgumentException('Package '.$package->getPrettyName().' is missing reference information');
|
throw new \InvalidArgumentException('Package '.$package->getPrettyName().' is missing reference information');
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->io->writeError(" - Installing <info>" . $package->getName() . "</info> (<comment>" . VersionParser::formatVersion($package) . "</comment>)");
|
$this->io->writeError(" - Installing <info>" . $package->getName() . "</info> (<comment>" . $package->getFullPrettyVersion() . "</comment>)");
|
||||||
$this->filesystem->emptyDirectory($path);
|
$this->filesystem->emptyDirectory($path);
|
||||||
|
|
||||||
$urls = $package->getSourceUrls();
|
$urls = $package->getSourceUrls();
|
||||||
|
@ -100,8 +99,8 @@ abstract class VcsDownloader implements DownloaderInterface, ChangeReportInterfa
|
||||||
}
|
}
|
||||||
$name .= ' '.$initial->getPrettyVersion();
|
$name .= ' '.$initial->getPrettyVersion();
|
||||||
} else {
|
} else {
|
||||||
$from = VersionParser::formatVersion($initial);
|
$from = $initial->getFullPrettyVersion();
|
||||||
$to = VersionParser::formatVersion($target);
|
$to = $target->getFullPrettyVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->io->writeError(" - Updating <info>" . $name . "</info> (<comment>" . $from . "</comment> => <comment>" . $to . "</comment>)");
|
$this->io->writeError(" - Updating <info>" . $name . "</info> (<comment>" . $from . "</comment> => <comment>" . $to . "</comment>)");
|
||||||
|
|
|
@ -206,6 +206,23 @@ abstract class BasePackage implements PackageInterface
|
||||||
return $this->getPrettyName().' '.$this->getPrettyVersion();
|
return $this->getPrettyName().' '.$this->getPrettyVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public function getFullPrettyVersion($truncate = true)
|
||||||
|
{
|
||||||
|
if (!$this->isDev() || !in_array($this->getSourceType(), array('hg', 'git'))) {
|
||||||
|
return $this->getPrettyVersion();
|
||||||
|
}
|
||||||
|
|
||||||
|
// if source reference is a sha1 hash -- truncate
|
||||||
|
if ($truncate && strlen($this->getSourceReference()) === 40) {
|
||||||
|
return $this->getPrettyVersion() . ' ' . substr($this->getSourceReference(), 0, 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->getPrettyVersion() . ' ' . $this->getSourceReference();
|
||||||
|
}
|
||||||
|
|
||||||
public function __clone()
|
public function __clone()
|
||||||
{
|
{
|
||||||
$this->repository = null;
|
$this->repository = null;
|
||||||
|
|
|
@ -192,6 +192,16 @@ interface PackageInterface
|
||||||
*/
|
*/
|
||||||
public function getPrettyVersion();
|
public function getPrettyVersion();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the pretty version string plus a git or hg commit hash of this package
|
||||||
|
*
|
||||||
|
* @see getPrettyVersion
|
||||||
|
*
|
||||||
|
* @param bool $truncate If the source reference is a sha1 hash, truncate it
|
||||||
|
* @return string version
|
||||||
|
*/
|
||||||
|
public function getFullPrettyVersion($truncate = true);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the release date of the package
|
* Returns the release date of the package
|
||||||
*
|
*
|
||||||
|
|
|
@ -69,18 +69,15 @@ class VersionParser
|
||||||
return $stability === 'rc' ? 'RC' : $stability;
|
return $stability === 'rc' ? 'RC' : $stability;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Use PackageInterface::getFullPrettyVersion instead
|
||||||
|
*/
|
||||||
public static function formatVersion(PackageInterface $package, $truncate = true)
|
public static function formatVersion(PackageInterface $package, $truncate = true)
|
||||||
{
|
{
|
||||||
if (!$package->isDev() || !in_array($package->getSourceType(), array('hg', 'git'))) {
|
trigger_error(__METHOD__.' is deprecated. Use '.
|
||||||
return $package->getPrettyVersion();
|
'\Composer\Package\PackageInterface::getFullPrettyVersion() instead', E_USER_DEPRECATED);
|
||||||
}
|
|
||||||
|
|
||||||
// if source reference is a sha1 hash -- truncate
|
return $package->getFullPrettyVersion($truncate);
|
||||||
if ($truncate && strlen($package->getSourceReference()) === 40) {
|
|
||||||
return $package->getPrettyVersion() . ' ' . substr($package->getSourceReference(), 0, 7);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $package->getPrettyVersion() . ' ' . $package->getSourceReference();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
|
|
||||||
namespace Composer\Test\Package;
|
namespace Composer\Test\Package;
|
||||||
|
|
||||||
|
use Composer\Package\BasePackage;
|
||||||
|
|
||||||
class BasePackageTest extends \PHPUnit_Framework_TestCase
|
class BasePackageTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
public function testSetSameRepository()
|
public function testSetSameRepository()
|
||||||
|
@ -37,4 +39,51 @@ class BasePackageTest extends \PHPUnit_Framework_TestCase
|
||||||
$package->setRepository($this->getMock('Composer\Repository\RepositoryInterface'));
|
$package->setRepository($this->getMock('Composer\Repository\RepositoryInterface'));
|
||||||
$package->setRepository($this->getMock('Composer\Repository\RepositoryInterface'));
|
$package->setRepository($this->getMock('Composer\Repository\RepositoryInterface'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider formattedVersions
|
||||||
|
*/
|
||||||
|
public function testFormatVersionForDevPackage(BasePackage $package, $truncate, $expected)
|
||||||
|
{
|
||||||
|
$this->assertSame($expected, $package->getFullPrettyVersion($truncate));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function formattedVersions()
|
||||||
|
{
|
||||||
|
$data = array(
|
||||||
|
array(
|
||||||
|
'sourceReference' => 'v2.1.0-RC2',
|
||||||
|
'truncate' => true,
|
||||||
|
'expected' => 'PrettyVersion v2.1.0-RC2'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'sourceReference' => 'bbf527a27356414bfa9bf520f018c5cb7af67c77',
|
||||||
|
'truncate' => true,
|
||||||
|
'expected' => 'PrettyVersion bbf527a'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'sourceReference' => 'v1.0.0',
|
||||||
|
'truncate' => false,
|
||||||
|
'expected' => 'PrettyVersion v1.0.0'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'sourceReference' => 'bbf527a27356414bfa9bf520f018c5cb7af67c77',
|
||||||
|
'truncate' => false,
|
||||||
|
'expected' => 'PrettyVersion bbf527a27356414bfa9bf520f018c5cb7af67c77'
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
$self = $this;
|
||||||
|
$createPackage = function ($arr) use ($self) {
|
||||||
|
$package = $self->getMockForAbstractClass('\Composer\Package\BasePackage', array(), '', false);
|
||||||
|
$package->expects($self->once())->method('isDev')->will($self->returnValue(true));
|
||||||
|
$package->expects($self->once())->method('getSourceType')->will($self->returnValue('git'));
|
||||||
|
$package->expects($self->once())->method('getPrettyVersion')->will($self->returnValue('PrettyVersion'));
|
||||||
|
$package->expects($self->any())->method('getSourceReference')->will($self->returnValue($arr['sourceReference']));
|
||||||
|
|
||||||
|
return array($package, $arr['truncate'], $arr['expected']);
|
||||||
|
};
|
||||||
|
|
||||||
|
return array_map($createPackage, $data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,52 +21,6 @@ use Composer\Package\PackageInterface;
|
||||||
|
|
||||||
class VersionParserTest extends \PHPUnit_Framework_TestCase
|
class VersionParserTest extends \PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @dataProvider formattedVersions
|
|
||||||
*/
|
|
||||||
public function testFormatVersionForDevPackage(PackageInterface $package, $truncate, $expected)
|
|
||||||
{
|
|
||||||
$this->assertSame($expected, VersionParser::formatVersion($package, $truncate));
|
|
||||||
}
|
|
||||||
|
|
||||||
public function formattedVersions()
|
|
||||||
{
|
|
||||||
$data = array(
|
|
||||||
array(
|
|
||||||
'sourceReference' => 'v2.1.0-RC2',
|
|
||||||
'truncate' => true,
|
|
||||||
'expected' => 'PrettyVersion v2.1.0-RC2'
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
'sourceReference' => 'bbf527a27356414bfa9bf520f018c5cb7af67c77',
|
|
||||||
'truncate' => true,
|
|
||||||
'expected' => 'PrettyVersion bbf527a'
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
'sourceReference' => 'v1.0.0',
|
|
||||||
'truncate' => false,
|
|
||||||
'expected' => 'PrettyVersion v1.0.0'
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
'sourceReference' => 'bbf527a27356414bfa9bf520f018c5cb7af67c77',
|
|
||||||
'truncate' => false,
|
|
||||||
'expected' => 'PrettyVersion bbf527a27356414bfa9bf520f018c5cb7af67c77'
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
$self = $this;
|
|
||||||
$createPackage = function ($arr) use ($self) {
|
|
||||||
$package = $self->getMock('\Composer\Package\PackageInterface');
|
|
||||||
$package->expects($self->once())->method('isDev')->will($self->returnValue(true));
|
|
||||||
$package->expects($self->once())->method('getSourceType')->will($self->returnValue('git'));
|
|
||||||
$package->expects($self->once())->method('getPrettyVersion')->will($self->returnValue('PrettyVersion'));
|
|
||||||
$package->expects($self->any())->method('getSourceReference')->will($self->returnValue($arr['sourceReference']));
|
|
||||||
|
|
||||||
return array($package, $arr['truncate'], $arr['expected']);
|
|
||||||
};
|
|
||||||
|
|
||||||
return array_map($createPackage, $data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider numericAliasVersions
|
* @dataProvider numericAliasVersions
|
||||||
|
|
Loading…
Reference in New Issue