annotate vendor/sebastian/version/src/Version.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@0 1 <?php
Chris@0 2 /*
Chris@0 3 * This file is part of the Version package.
Chris@0 4 *
Chris@0 5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
Chris@0 6 *
Chris@0 7 * For the full copyright and license information, please view the LICENSE
Chris@0 8 * file that was distributed with this source code.
Chris@0 9 */
Chris@0 10
Chris@0 11 namespace SebastianBergmann;
Chris@0 12
Chris@0 13 /**
Chris@0 14 * @since Class available since Release 1.0.0
Chris@0 15 */
Chris@0 16 class Version
Chris@0 17 {
Chris@14 18 /**
Chris@14 19 * @var string
Chris@14 20 */
Chris@0 21 private $path;
Chris@14 22
Chris@14 23 /**
Chris@14 24 * @var string
Chris@14 25 */
Chris@0 26 private $release;
Chris@14 27
Chris@14 28 /**
Chris@14 29 * @var string
Chris@14 30 */
Chris@0 31 private $version;
Chris@0 32
Chris@0 33 /**
Chris@0 34 * @param string $release
Chris@0 35 * @param string $path
Chris@0 36 */
Chris@0 37 public function __construct($release, $path)
Chris@0 38 {
Chris@0 39 $this->release = $release;
Chris@0 40 $this->path = $path;
Chris@0 41 }
Chris@0 42
Chris@0 43 /**
Chris@0 44 * @return string
Chris@0 45 */
Chris@0 46 public function getVersion()
Chris@0 47 {
Chris@0 48 if ($this->version === null) {
Chris@0 49 if (count(explode('.', $this->release)) == 3) {
Chris@0 50 $this->version = $this->release;
Chris@0 51 } else {
Chris@0 52 $this->version = $this->release . '-dev';
Chris@0 53 }
Chris@0 54
Chris@0 55 $git = $this->getGitInformation($this->path);
Chris@0 56
Chris@0 57 if ($git) {
Chris@0 58 if (count(explode('.', $this->release)) == 3) {
Chris@0 59 $this->version = $git;
Chris@0 60 } else {
Chris@0 61 $git = explode('-', $git);
Chris@0 62
Chris@0 63 $this->version = $this->release . '-' . end($git);
Chris@0 64 }
Chris@0 65 }
Chris@0 66 }
Chris@0 67
Chris@0 68 return $this->version;
Chris@0 69 }
Chris@0 70
Chris@0 71 /**
Chris@14 72 * @param string $path
Chris@14 73 *
Chris@0 74 * @return bool|string
Chris@0 75 */
Chris@0 76 private function getGitInformation($path)
Chris@0 77 {
Chris@0 78 if (!is_dir($path . DIRECTORY_SEPARATOR . '.git')) {
Chris@0 79 return false;
Chris@0 80 }
Chris@0 81
Chris@14 82 $process = proc_open(
Chris@14 83 'git describe --tags',
Chris@14 84 [
Chris@14 85 1 => ['pipe', 'w'],
Chris@14 86 2 => ['pipe', 'w'],
Chris@14 87 ],
Chris@14 88 $pipes,
Chris@14 89 $path
Chris@14 90 );
Chris@14 91
Chris@14 92 if (!is_resource($process)) {
Chris@14 93 return false;
Chris@14 94 }
Chris@14 95
Chris@14 96 $result = trim(stream_get_contents($pipes[1]));
Chris@14 97
Chris@14 98 fclose($pipes[1]);
Chris@14 99 fclose($pipes[2]);
Chris@14 100
Chris@14 101 $returnCode = proc_close($process);
Chris@0 102
Chris@0 103 if ($returnCode !== 0) {
Chris@0 104 return false;
Chris@0 105 }
Chris@0 106
Chris@0 107 return $result;
Chris@0 108 }
Chris@0 109 }