InstalledVersions.php 5.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. <?php
  2. namespace Composer;
  3. use Composer\Semver\VersionParser;
  4. class InstalledVersions
  5. {
  6. private static $installed = array (
  7. 'root' =>
  8. array (
  9. 'pretty_version' => 'dev-master',
  10. 'version' => 'dev-master',
  11. 'aliases' =>
  12. array (
  13. ),
  14. 'reference' => 'a68ad1f58750b8dfe5c72c32579856ab916fc600',
  15. 'name' => 'gen781/print_server',
  16. ),
  17. 'versions' =>
  18. array (
  19. 'gen781/print_server' =>
  20. array (
  21. 'pretty_version' => 'dev-master',
  22. 'version' => 'dev-master',
  23. 'aliases' =>
  24. array (
  25. ),
  26. 'reference' => 'a68ad1f58750b8dfe5c72c32579856ab916fc600',
  27. ),
  28. 'hoa/consistency' =>
  29. array (
  30. 'pretty_version' => '1.17.05.02',
  31. 'version' => '1.17.05.02',
  32. 'aliases' =>
  33. array (
  34. ),
  35. 'reference' => 'fd7d0adc82410507f332516faf655b6ed22e4c2f',
  36. ),
  37. 'hoa/event' =>
  38. array (
  39. 'pretty_version' => '1.17.01.13',
  40. 'version' => '1.17.01.13',
  41. 'aliases' =>
  42. array (
  43. ),
  44. 'reference' => '6c0060dced212ffa3af0e34bb46624f990b29c54',
  45. ),
  46. 'hoa/exception' =>
  47. array (
  48. 'pretty_version' => '1.17.01.16',
  49. 'version' => '1.17.01.16',
  50. 'aliases' =>
  51. array (
  52. ),
  53. 'reference' => '091727d46420a3d7468ef0595651488bfc3a458f',
  54. ),
  55. 'hoa/http' =>
  56. array (
  57. 'pretty_version' => '1.17.01.13',
  58. 'version' => '1.17.01.13',
  59. 'aliases' =>
  60. array (
  61. ),
  62. 'reference' => '6d3e114b48a63cf6b9532f9e9607cebade6314ef',
  63. ),
  64. 'hoa/protocol' =>
  65. array (
  66. 'pretty_version' => '1.17.01.14',
  67. 'version' => '1.17.01.14',
  68. 'aliases' =>
  69. array (
  70. ),
  71. 'reference' => '5c2cf972151c45f373230da170ea015deecf19e2',
  72. ),
  73. 'hoa/socket' =>
  74. array (
  75. 'pretty_version' => '1.17.05.16',
  76. 'version' => '1.17.05.16',
  77. 'aliases' =>
  78. array (
  79. ),
  80. 'reference' => '1a43f073d910d0f803de8cc9256779db1027906d',
  81. ),
  82. 'hoa/stream' =>
  83. array (
  84. 'pretty_version' => '1.17.02.21',
  85. 'version' => '1.17.02.21',
  86. 'aliases' =>
  87. array (
  88. ),
  89. 'reference' => '3293cfffca2de10525df51436adf88a559151d82',
  90. ),
  91. 'hoa/websocket' =>
  92. array (
  93. 'pretty_version' => '3.17.01.09',
  94. 'version' => '3.17.01.09',
  95. 'aliases' =>
  96. array (
  97. ),
  98. 'reference' => 'a1bd79cefb67278f71ac8a44873ad1416924e906',
  99. ),
  100. 'mike42/escpos-php' =>
  101. array (
  102. 'pretty_version' => 'v3.0',
  103. 'version' => '3.0.0.0',
  104. 'aliases' =>
  105. array (
  106. ),
  107. 'reference' => 'dcb569a123d75f9f6a4a927aae7625ca6b7fdcf3',
  108. ),
  109. 'mike42/gfx-php' =>
  110. array (
  111. 'pretty_version' => 'v0.6',
  112. 'version' => '0.6.0.0',
  113. 'aliases' =>
  114. array (
  115. ),
  116. 'reference' => 'ed9ded2a9298e4084a9c557ab74a89b71e43dbdb',
  117. ),
  118. ),
  119. );
  120. public static function getInstalledPackages()
  121. {
  122. return array_keys(self::$installed['versions']);
  123. }
  124. public static function isInstalled($packageName)
  125. {
  126. return isset(self::$installed['versions'][$packageName]);
  127. }
  128. public static function satisfies(VersionParser $parser, $packageName, $constraint)
  129. {
  130. $constraint = $parser->parseConstraints($constraint);
  131. $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
  132. return $provided->matches($constraint);
  133. }
  134. public static function getVersionRanges($packageName)
  135. {
  136. if (!isset(self::$installed['versions'][$packageName])) {
  137. throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
  138. }
  139. $ranges = array();
  140. if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
  141. $ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
  142. }
  143. if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
  144. $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
  145. }
  146. if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
  147. $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
  148. }
  149. if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
  150. $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
  151. }
  152. return implode(' || ', $ranges);
  153. }
  154. public static function getVersion($packageName)
  155. {
  156. if (!isset(self::$installed['versions'][$packageName])) {
  157. throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
  158. }
  159. if (!isset(self::$installed['versions'][$packageName]['version'])) {
  160. return null;
  161. }
  162. return self::$installed['versions'][$packageName]['version'];
  163. }
  164. public static function getPrettyVersion($packageName)
  165. {
  166. if (!isset(self::$installed['versions'][$packageName])) {
  167. throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
  168. }
  169. if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
  170. return null;
  171. }
  172. return self::$installed['versions'][$packageName]['pretty_version'];
  173. }
  174. public static function getReference($packageName)
  175. {
  176. if (!isset(self::$installed['versions'][$packageName])) {
  177. throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
  178. }
  179. if (!isset(self::$installed['versions'][$packageName]['reference'])) {
  180. return null;
  181. }
  182. return self::$installed['versions'][$packageName]['reference'];
  183. }
  184. public static function getRootPackage()
  185. {
  186. return self::$installed['root'];
  187. }
  188. public static function getRawData()
  189. {
  190. return self::$installed;
  191. }
  192. public static function reload($data)
  193. {
  194. self::$installed = $data;
  195. }
  196. }