diff --git a/src/Composer/Compiler.php b/src/Composer/Compiler.php index 94f1a15ff..fa86d7f21 100644 --- a/src/Composer/Compiler.php +++ b/src/Composer/Compiler.php @@ -24,6 +24,7 @@ use Symfony\Component\Process\Process; class Compiler { private $version; + private $versionDate; /** * Compiles composer into a single phar file @@ -43,6 +44,14 @@ class Compiler } $this->version = trim($process->getOutput()); + $process = new Process('git log -n1 --pretty=%ci HEAD', __DIR__); + if ($process->run() != 0) { + throw new \RuntimeException('Can\'t run git log. You must ensure to run compile from composer git repository clone and that git binary is available.'); + } + $date = new \DateTime(trim($process->getOutput())); + $date->setTimezone(new \DateTimeZone('UTC')); + $this->versionDate = $date->format('Y-m-d H:i:s'); + $process = new Process('git describe --tags HEAD'); if ($process->run() == 0) { $this->version = trim($process->getOutput()); @@ -127,6 +136,7 @@ class Compiler } $content = str_replace('@package_version@', $this->version, $content); + $content = str_replace('@release_date@', $this->versionDate, $content); $phar->addFromString($path, $content); } diff --git a/src/Composer/Composer.php b/src/Composer/Composer.php index 20279b5ac..0d1e0aa89 100644 --- a/src/Composer/Composer.php +++ b/src/Composer/Composer.php @@ -29,6 +29,7 @@ use Composer\Autoload\AutoloadGenerator; class Composer { const VERSION = '@package_version@'; + const RELEASE_DATE = '@release_date@'; /** * @var Package\RootPackageInterface diff --git a/src/Composer/Console/Application.php b/src/Composer/Console/Application.php index 63bb59124..9d622cf67 100644 --- a/src/Composer/Console/Application.php +++ b/src/Composer/Console/Application.php @@ -235,6 +235,14 @@ class Application extends BaseApplication return $commands; } + /** + * {@inheritDoc} + */ + public function getLongVersion() + { + return parent::getLongVersion() . ' ' . Composer::RELEASE_DATE; + } + /** * {@inheritDoc} */