InstalledVersions.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  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' => '760abcd1a11ae40b4cc86ff27aa5f1653731097a',
  15. 'name' => '__root__',
  16. ),
  17. 'versions' =>
  18. array (
  19. '__root__' =>
  20. array (
  21. 'pretty_version' => 'dev-master',
  22. 'version' => 'dev-master',
  23. 'aliases' =>
  24. array (
  25. ),
  26. 'reference' => '760abcd1a11ae40b4cc86ff27aa5f1653731097a',
  27. ),
  28. 'ark/filecache' =>
  29. array (
  30. 'pretty_version' => 'v0.1.0',
  31. 'version' => '0.1.0.0',
  32. 'aliases' =>
  33. array (
  34. ),
  35. 'reference' => '2646305ff6b9dfec96f3df00a42dc33a7a13560d',
  36. ),
  37. 'cache/adapter-common' =>
  38. array (
  39. 'pretty_version' => '1.2.0',
  40. 'version' => '1.2.0.0',
  41. 'aliases' =>
  42. array (
  43. ),
  44. 'reference' => '6b87c5cbdf03be42437b595dbe5de8e97cd1d497',
  45. ),
  46. 'cache/filesystem-adapter' =>
  47. array (
  48. 'pretty_version' => '1.1.0',
  49. 'version' => '1.1.0.0',
  50. 'aliases' =>
  51. array (
  52. ),
  53. 'reference' => '1501ca71502f45114844824209e6a41d87afb221',
  54. ),
  55. 'cache/tag-interop' =>
  56. array (
  57. 'pretty_version' => '1.0.1',
  58. 'version' => '1.0.1.0',
  59. 'aliases' =>
  60. array (
  61. ),
  62. 'reference' => '909a5df87e698f1665724a9e84851c11c45fbfb9',
  63. ),
  64. 'guzzlehttp/guzzle' =>
  65. array (
  66. 'pretty_version' => '7.2.0',
  67. 'version' => '7.2.0.0',
  68. 'aliases' =>
  69. array (
  70. ),
  71. 'reference' => '0aa74dfb41ae110835923ef10a9d803a22d50e79',
  72. ),
  73. 'guzzlehttp/promises' =>
  74. array (
  75. 'pretty_version' => '1.4.0',
  76. 'version' => '1.4.0.0',
  77. 'aliases' =>
  78. array (
  79. ),
  80. 'reference' => '60d379c243457e073cff02bc323a2a86cb355631',
  81. ),
  82. 'guzzlehttp/psr7' =>
  83. array (
  84. 'pretty_version' => '1.7.0',
  85. 'version' => '1.7.0.0',
  86. 'aliases' =>
  87. array (
  88. ),
  89. 'reference' => '53330f47520498c0ae1f61f7e2c90f55690c06a3',
  90. ),
  91. 'jaeger/g-http' =>
  92. array (
  93. 'pretty_version' => 'V1.7.1',
  94. 'version' => '1.7.1.0',
  95. 'aliases' =>
  96. array (
  97. ),
  98. 'reference' => '611cfa6986be53d580b19472f10efaa4dde38a80',
  99. ),
  100. 'jaeger/phpquery-single' =>
  101. array (
  102. 'pretty_version' => '1.0.1',
  103. 'version' => '1.0.1.0',
  104. 'aliases' =>
  105. array (
  106. ),
  107. 'reference' => 'fb80b4a0e5a337438d26e061ec3fb725c9f2a116',
  108. ),
  109. 'jaeger/querylist' =>
  110. array (
  111. 'pretty_version' => 'V4.2.7',
  112. 'version' => '4.2.7.0',
  113. 'aliases' =>
  114. array (
  115. ),
  116. 'reference' => '5953daac54683700ce6a6725489fa7f3798aad94',
  117. ),
  118. 'league/flysystem' =>
  119. array (
  120. 'pretty_version' => '1.1.3',
  121. 'version' => '1.1.3.0',
  122. 'aliases' =>
  123. array (
  124. ),
  125. 'reference' => '9be3b16c877d477357c015cec057548cf9b2a14a',
  126. ),
  127. 'league/mime-type-detection' =>
  128. array (
  129. 'pretty_version' => '1.5.1',
  130. 'version' => '1.5.1.0',
  131. 'aliases' =>
  132. array (
  133. ),
  134. 'reference' => '353f66d7555d8a90781f6f5e7091932f9a4250aa',
  135. ),
  136. 'php-imap/php-imap' =>
  137. array (
  138. 'pretty_version' => '3.1.0',
  139. 'version' => '3.1.0.0',
  140. 'aliases' =>
  141. array (
  142. ),
  143. 'reference' => '1df5b8b17527829a990475292b6794f06aaa4843',
  144. ),
  145. 'psr/cache' =>
  146. array (
  147. 'pretty_version' => '1.0.1',
  148. 'version' => '1.0.1.0',
  149. 'aliases' =>
  150. array (
  151. ),
  152. 'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8',
  153. ),
  154. 'psr/cache-implementation' =>
  155. array (
  156. 'provided' =>
  157. array (
  158. 0 => '^1.0',
  159. ),
  160. ),
  161. 'psr/http-client' =>
  162. array (
  163. 'pretty_version' => '1.0.1',
  164. 'version' => '1.0.1.0',
  165. 'aliases' =>
  166. array (
  167. ),
  168. 'reference' => '2dfb5f6c5eff0e91e20e913f8c5452ed95b86621',
  169. ),
  170. 'psr/http-client-implementation' =>
  171. array (
  172. 'provided' =>
  173. array (
  174. 0 => '1.0',
  175. ),
  176. ),
  177. 'psr/http-message' =>
  178. array (
  179. 'pretty_version' => '1.0.1',
  180. 'version' => '1.0.1.0',
  181. 'aliases' =>
  182. array (
  183. ),
  184. 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
  185. ),
  186. 'psr/http-message-implementation' =>
  187. array (
  188. 'provided' =>
  189. array (
  190. 0 => '1.0',
  191. ),
  192. ),
  193. 'psr/log' =>
  194. array (
  195. 'pretty_version' => '1.1.3',
  196. 'version' => '1.1.3.0',
  197. 'aliases' =>
  198. array (
  199. ),
  200. 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc',
  201. ),
  202. 'psr/simple-cache' =>
  203. array (
  204. 'pretty_version' => '1.0.1',
  205. 'version' => '1.0.1.0',
  206. 'aliases' =>
  207. array (
  208. ),
  209. 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b',
  210. ),
  211. 'psr/simple-cache-implementation' =>
  212. array (
  213. 'provided' =>
  214. array (
  215. 0 => '^1.0',
  216. ),
  217. ),
  218. 'ralouphie/getallheaders' =>
  219. array (
  220. 'pretty_version' => '3.0.3',
  221. 'version' => '3.0.3.0',
  222. 'aliases' =>
  223. array (
  224. ),
  225. 'reference' => '120b605dfeb996808c31b6477290a714d356e822',
  226. ),
  227. 'symfony/polyfill-mbstring' =>
  228. array (
  229. 'pretty_version' => 'v1.22.0',
  230. 'version' => '1.22.0.0',
  231. 'aliases' =>
  232. array (
  233. ),
  234. 'reference' => 'f377a3dd1fde44d37b9831d68dc8dea3ffd28e13',
  235. ),
  236. 'symfony/polyfill-php80' =>
  237. array (
  238. 'pretty_version' => 'v1.22.0',
  239. 'version' => '1.22.0.0',
  240. 'aliases' =>
  241. array (
  242. ),
  243. 'reference' => 'dc3063ba22c2a1fd2f45ed856374d79114998f91',
  244. ),
  245. 'symfony/var-dumper' =>
  246. array (
  247. 'pretty_version' => 'v5.2.1',
  248. 'version' => '5.2.1.0',
  249. 'aliases' =>
  250. array (
  251. ),
  252. 'reference' => '13e7e882eaa55863faa7c4ad7c60f12f1a8b5089',
  253. ),
  254. 'tightenco/collect' =>
  255. array (
  256. 'pretty_version' => 'v8.19.0',
  257. 'version' => '8.19.0.0',
  258. 'aliases' =>
  259. array (
  260. ),
  261. 'reference' => '0c0243a0dc0b66f54d0ec409f36cd9889665b132',
  262. ),
  263. ),
  264. );
  265. public static function getInstalledPackages()
  266. {
  267. return array_keys(self::$installed['versions']);
  268. }
  269. public static function isInstalled($packageName)
  270. {
  271. return isset(self::$installed['versions'][$packageName]);
  272. }
  273. public static function satisfies(VersionParser $parser, $packageName, $constraint)
  274. {
  275. $constraint = $parser->parseConstraints($constraint);
  276. $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
  277. return $provided->matches($constraint);
  278. }
  279. public static function getVersionRanges($packageName)
  280. {
  281. if (!isset(self::$installed['versions'][$packageName])) {
  282. throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
  283. }
  284. $ranges = array();
  285. if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
  286. $ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
  287. }
  288. if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
  289. $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
  290. }
  291. if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
  292. $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
  293. }
  294. if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
  295. $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
  296. }
  297. return implode(' || ', $ranges);
  298. }
  299. public static function getVersion($packageName)
  300. {
  301. if (!isset(self::$installed['versions'][$packageName])) {
  302. throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
  303. }
  304. if (!isset(self::$installed['versions'][$packageName]['version'])) {
  305. return null;
  306. }
  307. return self::$installed['versions'][$packageName]['version'];
  308. }
  309. public static function getPrettyVersion($packageName)
  310. {
  311. if (!isset(self::$installed['versions'][$packageName])) {
  312. throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
  313. }
  314. if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
  315. return null;
  316. }
  317. return self::$installed['versions'][$packageName]['pretty_version'];
  318. }
  319. public static function getReference($packageName)
  320. {
  321. if (!isset(self::$installed['versions'][$packageName])) {
  322. throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
  323. }
  324. if (!isset(self::$installed['versions'][$packageName]['reference'])) {
  325. return null;
  326. }
  327. return self::$installed['versions'][$packageName]['reference'];
  328. }
  329. public static function getRootPackage()
  330. {
  331. return self::$installed['root'];
  332. }
  333. public static function getRawData()
  334. {
  335. return self::$installed;
  336. }
  337. public static function reload($data)
  338. {
  339. self::$installed = $data;
  340. }
  341. }