Mercurial > hg > isophonics-drupal-site
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 } |