dependabot-composer 0.95.42 → 0.95.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (901) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/bin/run +1 -0
  3. metadata +3 -901
  4. data/helpers/vendor/autoload.php +0 -7
  5. data/helpers/vendor/bin/composer +0 -1
  6. data/helpers/vendor/bin/jsonlint +0 -1
  7. data/helpers/vendor/bin/validate-json +0 -1
  8. data/helpers/vendor/composer/ClassLoader.php +0 -445
  9. data/helpers/vendor/composer/LICENSE +0 -21
  10. data/helpers/vendor/composer/autoload_classmap.php +0 -9
  11. data/helpers/vendor/composer/autoload_files.php +0 -11
  12. data/helpers/vendor/composer/autoload_namespaces.php +0 -9
  13. data/helpers/vendor/composer/autoload_psr4.php +0 -26
  14. data/helpers/vendor/composer/autoload_real.php +0 -70
  15. data/helpers/vendor/composer/autoload_static.php +0 -128
  16. data/helpers/vendor/composer/ca-bundle/LICENSE +0 -19
  17. data/helpers/vendor/composer/ca-bundle/README.md +0 -85
  18. data/helpers/vendor/composer/ca-bundle/composer.json +0 -54
  19. data/helpers/vendor/composer/ca-bundle/res/cacert.pem +0 -3240
  20. data/helpers/vendor/composer/ca-bundle/src/CaBundle.php +0 -308
  21. data/helpers/vendor/composer/composer/.gitattributes +0 -12
  22. data/helpers/vendor/composer/composer/.github/CONTRIBUTING.md +0 -59
  23. data/helpers/vendor/composer/composer/.github/ISSUE_TEMPLATE.md +0 -25
  24. data/helpers/vendor/composer/composer/.gitignore +0 -11
  25. data/helpers/vendor/composer/composer/.php_cs +0 -58
  26. data/helpers/vendor/composer/composer/.travis.yml +0 -76
  27. data/helpers/vendor/composer/composer/CHANGELOG.md +0 -767
  28. data/helpers/vendor/composer/composer/LICENSE +0 -19
  29. data/helpers/vendor/composer/composer/PORTING_INFO +0 -39
  30. data/helpers/vendor/composer/composer/README.md +0 -62
  31. data/helpers/vendor/composer/composer/appveyor.yml +0 -33
  32. data/helpers/vendor/composer/composer/bin/compile +0 -31
  33. data/helpers/vendor/composer/composer/bin/composer +0 -57
  34. data/helpers/vendor/composer/composer/composer.json +0 -81
  35. data/helpers/vendor/composer/composer/composer.lock +0 -1800
  36. data/helpers/vendor/composer/composer/doc/00-intro.md +0 -156
  37. data/helpers/vendor/composer/composer/doc/01-basic-usage.md +0 -266
  38. data/helpers/vendor/composer/composer/doc/02-libraries.md +0 -153
  39. data/helpers/vendor/composer/composer/doc/03-cli.md +0 -931
  40. data/helpers/vendor/composer/composer/doc/04-schema.md +0 -924
  41. data/helpers/vendor/composer/composer/doc/05-repositories.md +0 -713
  42. data/helpers/vendor/composer/composer/doc/06-config.md +0 -277
  43. data/helpers/vendor/composer/composer/doc/07-community.md +0 -35
  44. data/helpers/vendor/composer/composer/doc/articles/aliases.md +0 -105
  45. data/helpers/vendor/composer/composer/doc/articles/autoloader-optimization.md +0 -111
  46. data/helpers/vendor/composer/composer/doc/articles/custom-installers.md +0 -204
  47. data/helpers/vendor/composer/composer/doc/articles/handling-private-packages-with-satis.md +0 -343
  48. data/helpers/vendor/composer/composer/doc/articles/http-basic-authentication.md +0 -59
  49. data/helpers/vendor/composer/composer/doc/articles/plugins.md +0 -285
  50. data/helpers/vendor/composer/composer/doc/articles/scripts.md +0 -304
  51. data/helpers/vendor/composer/composer/doc/articles/troubleshooting.md +0 -309
  52. data/helpers/vendor/composer/composer/doc/articles/vendor-binaries.md +0 -110
  53. data/helpers/vendor/composer/composer/doc/articles/versions.md +0 -230
  54. data/helpers/vendor/composer/composer/doc/dev/DefaultPolicy.md +0 -55
  55. data/helpers/vendor/composer/composer/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md +0 -50
  56. data/helpers/vendor/composer/composer/doc/faqs/how-to-install-composer-programmatically.md +0 -42
  57. data/helpers/vendor/composer/composer/doc/faqs/how-to-install-untrusted-packages-safely.md +0 -19
  58. data/helpers/vendor/composer/composer/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md +0 -32
  59. data/helpers/vendor/composer/composer/doc/faqs/which-version-numbering-system-does-composer-itself-use.md +0 -4
  60. data/helpers/vendor/composer/composer/doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md +0 -21
  61. data/helpers/vendor/composer/composer/doc/faqs/why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md +0 -21
  62. data/helpers/vendor/composer/composer/doc/faqs/why-can't-composer-load-repositories-recursively.md +0 -35
  63. data/helpers/vendor/composer/composer/doc/fixtures/fixtures.md +0 -22
  64. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-plain/packages.json +0 -158
  65. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/bar/baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json +0 -50
  66. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/foo/bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json +0 -77
  67. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/gar/nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json +0 -50
  68. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json +0 -16
  69. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/qux/quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json +0 -22
  70. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/packages.json +0 -9
  71. data/helpers/vendor/composer/composer/phpunit.xml.dist +0 -35
  72. data/helpers/vendor/composer/composer/res/composer-repository-schema.json +0 -110
  73. data/helpers/vendor/composer/composer/res/composer-schema.json +0 -843
  74. data/helpers/vendor/composer/composer/src/Composer/Autoload/AutoloadGenerator.php +0 -1057
  75. data/helpers/vendor/composer/composer/src/Composer/Autoload/ClassLoader.php +0 -445
  76. data/helpers/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php +0 -222
  77. data/helpers/vendor/composer/composer/src/Composer/Cache.php +0 -251
  78. data/helpers/vendor/composer/composer/src/Composer/Command/AboutCommand.php +0 -46
  79. data/helpers/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php +0 -165
  80. data/helpers/vendor/composer/composer/src/Composer/Command/BaseCommand.php +0 -181
  81. data/helpers/vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php +0 -255
  82. data/helpers/vendor/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php +0 -156
  83. data/helpers/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php +0 -72
  84. data/helpers/vendor/composer/composer/src/Composer/Command/ConfigCommand.php +0 -704
  85. data/helpers/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php +0 -384
  86. data/helpers/vendor/composer/composer/src/Composer/Command/DependsCommand.php +0 -56
  87. data/helpers/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php +0 -728
  88. data/helpers/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php +0 -86
  89. data/helpers/vendor/composer/composer/src/Composer/Command/ExecCommand.php +0 -90
  90. data/helpers/vendor/composer/composer/src/Composer/Command/GlobalCommand.php +0 -110
  91. data/helpers/vendor/composer/composer/src/Composer/Command/HomeCommand.php +0 -166
  92. data/helpers/vendor/composer/composer/src/Composer/Command/InitCommand.php +0 -795
  93. data/helpers/vendor/composer/composer/src/Composer/Command/InstallCommand.php +0 -123
  94. data/helpers/vendor/composer/composer/src/Composer/Command/LicensesCommand.php +0 -158
  95. data/helpers/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php +0 -95
  96. data/helpers/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php +0 -56
  97. data/helpers/vendor/composer/composer/src/Composer/Command/RemoveCommand.php +0 -162
  98. data/helpers/vendor/composer/composer/src/Composer/Command/RequireCommand.php +0 -243
  99. data/helpers/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php +0 -139
  100. data/helpers/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php +0 -64
  101. data/helpers/vendor/composer/composer/src/Composer/Command/SearchCommand.php +0 -82
  102. data/helpers/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php +0 -404
  103. data/helpers/vendor/composer/composer/src/Composer/Command/ShowCommand.php +0 -1014
  104. data/helpers/vendor/composer/composer/src/Composer/Command/StatusCommand.php +0 -213
  105. data/helpers/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php +0 -151
  106. data/helpers/vendor/composer/composer/src/Composer/Command/UpdateCommand.php +0 -227
  107. data/helpers/vendor/composer/composer/src/Composer/Command/ValidateCommand.php +0 -171
  108. data/helpers/vendor/composer/composer/src/Composer/Compiler.php +0 -283
  109. data/helpers/vendor/composer/composer/src/Composer/Composer.php +0 -246
  110. data/helpers/vendor/composer/composer/src/Composer/Config.php +0 -455
  111. data/helpers/vendor/composer/composer/src/Composer/Config/ConfigSourceInterface.php +0 -91
  112. data/helpers/vendor/composer/composer/src/Composer/Config/JsonConfigSource.php +0 -267
  113. data/helpers/vendor/composer/composer/src/Composer/Console/Application.php +0 -481
  114. data/helpers/vendor/composer/composer/src/Composer/Console/HtmlOutputFormatter.php +0 -90
  115. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Decisions.php +0 -199
  116. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php +0 -285
  117. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/GenericRule.php +0 -91
  118. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php +0 -66
  119. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php +0 -67
  120. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php +0 -67
  121. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php +0 -42
  122. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php +0 -50
  123. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php +0 -66
  124. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php +0 -80
  125. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php +0 -27
  126. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Pool.php +0 -378
  127. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Problem.php +0 -253
  128. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Request.php +0 -78
  129. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Rule.php +0 -263
  130. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php +0 -113
  131. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php +0 -176
  132. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php +0 -372
  133. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php +0 -94
  134. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php +0 -52
  135. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php +0 -144
  136. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php +0 -113
  137. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Solver.php +0 -868
  138. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/SolverBugException.php +0 -27
  139. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php +0 -88
  140. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Transaction.php +0 -244
  141. data/helpers/vendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php +0 -135
  142. data/helpers/vendor/composer/composer/src/Composer/Downloader/ChangeReportInterface.php +0 -32
  143. data/helpers/vendor/composer/composer/src/Composer/Downloader/DownloadManager.php +0 -325
  144. data/helpers/vendor/composer/composer/src/Composer/Downloader/DownloaderInterface.php +0 -64
  145. data/helpers/vendor/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php +0 -32
  146. data/helpers/vendor/composer/composer/src/Composer/Downloader/FileDownloader.php +0 -322
  147. data/helpers/vendor/composer/composer/src/Composer/Downloader/FilesystemException.php +0 -26
  148. data/helpers/vendor/composer/composer/src/Composer/Downloader/FossilDownloader.php +0 -116
  149. data/helpers/vendor/composer/composer/src/Composer/Downloader/GitDownloader.php +0 -516
  150. data/helpers/vendor/composer/composer/src/Composer/Downloader/GzipDownloader.php +0 -84
  151. data/helpers/vendor/composer/composer/src/Composer/Downloader/HgDownloader.php +0 -100
  152. data/helpers/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php +0 -175
  153. data/helpers/vendor/composer/composer/src/Composer/Downloader/PearPackageExtractor.php +0 -266
  154. data/helpers/vendor/composer/composer/src/Composer/Downloader/PerforceDownloader.php +0 -114
  155. data/helpers/vendor/composer/composer/src/Composer/Downloader/PharDownloader.php +0 -36
  156. data/helpers/vendor/composer/composer/src/Composer/Downloader/RarDownloader.php +0 -91
  157. data/helpers/vendor/composer/composer/src/Composer/Downloader/SvnDownloader.php +0 -225
  158. data/helpers/vendor/composer/composer/src/Composer/Downloader/TarDownloader.php +0 -31
  159. data/helpers/vendor/composer/composer/src/Composer/Downloader/TransportException.php +0 -53
  160. data/helpers/vendor/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php +0 -32
  161. data/helpers/vendor/composer/composer/src/Composer/Downloader/VcsDownloader.php +0 -293
  162. data/helpers/vendor/composer/composer/src/Composer/Downloader/XzDownloader.php +0 -60
  163. data/helpers/vendor/composer/composer/src/Composer/Downloader/ZipDownloader.php +0 -230
  164. data/helpers/vendor/composer/composer/src/Composer/EventDispatcher/Event.php +0 -103
  165. data/helpers/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php +0 -536
  166. data/helpers/vendor/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php +0 -48
  167. data/helpers/vendor/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php +0 -20
  168. data/helpers/vendor/composer/composer/src/Composer/Exception/NoSslException.php +0 -20
  169. data/helpers/vendor/composer/composer/src/Composer/Factory.php +0 -653
  170. data/helpers/vendor/composer/composer/src/Composer/IO/BaseIO.php +0 -255
  171. data/helpers/vendor/composer/composer/src/Composer/IO/BufferIO.php +0 -59
  172. data/helpers/vendor/composer/composer/src/Composer/IO/ConsoleIO.php +0 -322
  173. data/helpers/vendor/composer/composer/src/Composer/IO/IOInterface.php +0 -207
  174. data/helpers/vendor/composer/composer/src/Composer/IO/NullIO.php +0 -129
  175. data/helpers/vendor/composer/composer/src/Composer/Installer.php +0 -1793
  176. data/helpers/vendor/composer/composer/src/Composer/Installer/BinaryInstaller.php +0 -210
  177. data/helpers/vendor/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php +0 -30
  178. data/helpers/vendor/composer/composer/src/Composer/Installer/InstallationManager.php +0 -326
  179. data/helpers/vendor/composer/composer/src/Composer/Installer/InstallerEvent.php +0 -161
  180. data/helpers/vendor/composer/composer/src/Composer/Installer/InstallerEvents.php +0 -43
  181. data/helpers/vendor/composer/composer/src/Composer/Installer/InstallerInterface.php +0 -79
  182. data/helpers/vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php +0 -232
  183. data/helpers/vendor/composer/composer/src/Composer/Installer/MetapackageInstaller.php +0 -81
  184. data/helpers/vendor/composer/composer/src/Composer/Installer/NoopInstaller.php +0 -88
  185. data/helpers/vendor/composer/composer/src/Composer/Installer/PackageEvent.php +0 -65
  186. data/helpers/vendor/composer/composer/src/Composer/Installer/PackageEvents.php +0 -75
  187. data/helpers/vendor/composer/composer/src/Composer/Installer/PearBinaryInstaller.php +0 -144
  188. data/helpers/vendor/composer/composer/src/Composer/Installer/PearInstaller.php +0 -84
  189. data/helpers/vendor/composer/composer/src/Composer/Installer/PluginInstaller.php +0 -84
  190. data/helpers/vendor/composer/composer/src/Composer/Installer/ProjectInstaller.php +0 -99
  191. data/helpers/vendor/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php +0 -151
  192. data/helpers/vendor/composer/composer/src/Composer/Json/JsonFile.php +0 -301
  193. data/helpers/vendor/composer/composer/src/Composer/Json/JsonFormatter.php +0 -134
  194. data/helpers/vendor/composer/composer/src/Composer/Json/JsonManipulator.php +0 -521
  195. data/helpers/vendor/composer/composer/src/Composer/Json/JsonValidationException.php +0 -34
  196. data/helpers/vendor/composer/composer/src/Composer/Package/AliasPackage.php +0 -404
  197. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php +0 -44
  198. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php +0 -105
  199. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php +0 -178
  200. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php +0 -43
  201. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php +0 -148
  202. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php +0 -31
  203. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php +0 -79
  204. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php +0 -107
  205. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/PharArchiver.php +0 -97
  206. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php +0 -74
  207. data/helpers/vendor/composer/composer/src/Composer/Package/BasePackage.php +0 -250
  208. data/helpers/vendor/composer/composer/src/Composer/Package/Comparer/Comparer.php +0 -129
  209. data/helpers/vendor/composer/composer/src/Composer/Package/CompletePackage.php +0 -199
  210. data/helpers/vendor/composer/composer/src/Composer/Package/CompletePackageInterface.php +0 -95
  211. data/helpers/vendor/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php +0 -145
  212. data/helpers/vendor/composer/composer/src/Composer/Package/Link.php +0 -128
  213. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php +0 -24
  214. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php +0 -24
  215. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php +0 -24
  216. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php +0 -24
  217. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php +0 -24
  218. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php +0 -290
  219. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php +0 -46
  220. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/JsonLoader.php +0 -45
  221. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/LoaderInterface.php +0 -30
  222. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php +0 -241
  223. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php +0 -461
  224. data/helpers/vendor/composer/composer/src/Composer/Package/Locker.php +0 -438
  225. data/helpers/vendor/composer/composer/src/Composer/Package/Package.php +0 -612
  226. data/helpers/vendor/composer/composer/src/Composer/Package/PackageInterface.php +0 -361
  227. data/helpers/vendor/composer/composer/src/Composer/Package/RootAliasPackage.php +0 -173
  228. data/helpers/vendor/composer/composer/src/Composer/Package/RootPackage.php +0 -136
  229. data/helpers/vendor/composer/composer/src/Composer/Package/RootPackageInterface.php +0 -142
  230. data/helpers/vendor/composer/composer/src/Composer/Package/Version/VersionGuesser.php +0 -302
  231. data/helpers/vendor/composer/composer/src/Composer/Package/Version/VersionParser.php +0 -81
  232. data/helpers/vendor/composer/composer/src/Composer/Package/Version/VersionSelector.php +0 -176
  233. data/helpers/vendor/composer/composer/src/Composer/Plugin/Capability/Capability.php +0 -23
  234. data/helpers/vendor/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php +0 -33
  235. data/helpers/vendor/composer/composer/src/Composer/Plugin/Capable.php +0 -43
  236. data/helpers/vendor/composer/composer/src/Composer/Plugin/CommandEvent.php +0 -88
  237. data/helpers/vendor/composer/composer/src/Composer/Plugin/PluginEvents.php +0 -61
  238. data/helpers/vendor/composer/composer/src/Composer/Plugin/PluginInterface.php +0 -39
  239. data/helpers/vendor/composer/composer/src/Composer/Plugin/PluginManager.php +0 -403
  240. data/helpers/vendor/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php +0 -68
  241. data/helpers/vendor/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php +0 -78
  242. data/helpers/vendor/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php +0 -94
  243. data/helpers/vendor/composer/composer/src/Composer/Repository/ArrayRepository.php +0 -208
  244. data/helpers/vendor/composer/composer/src/Composer/Repository/ArtifactRepository.php +0 -167
  245. data/helpers/vendor/composer/composer/src/Composer/Repository/BaseRepository.php +0 -157
  246. data/helpers/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php +0 -838
  247. data/helpers/vendor/composer/composer/src/Composer/Repository/CompositeRepository.php +0 -164
  248. data/helpers/vendor/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php +0 -23
  249. data/helpers/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php +0 -92
  250. data/helpers/vendor/composer/composer/src/Composer/Repository/InstalledArrayRepository.php +0 -24
  251. data/helpers/vendor/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php +0 -22
  252. data/helpers/vendor/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php +0 -24
  253. data/helpers/vendor/composer/composer/src/Composer/Repository/InvalidRepositoryException.php +0 -22
  254. data/helpers/vendor/composer/composer/src/Composer/Repository/PackageRepository.php +0 -61
  255. data/helpers/vendor/composer/composer/src/Composer/Repository/PathRepository.php +0 -190
  256. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php +0 -82
  257. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php +0 -67
  258. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ChannelReader.php +0 -101
  259. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php +0 -164
  260. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php +0 -139
  261. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php +0 -60
  262. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php +0 -50
  263. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php +0 -317
  264. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/PackageInfo.php +0 -94
  265. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php +0 -50
  266. data/helpers/vendor/composer/composer/src/Composer/Repository/PearRepository.php +0 -198
  267. data/helpers/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php +0 -315
  268. data/helpers/vendor/composer/composer/src/Composer/Repository/RepositoryFactory.php +0 -166
  269. data/helpers/vendor/composer/composer/src/Composer/Repository/RepositoryInterface.php +0 -74
  270. data/helpers/vendor/composer/composer/src/Composer/Repository/RepositoryManager.php +0 -177
  271. data/helpers/vendor/composer/composer/src/Composer/Repository/RepositorySecurityException.php +0 -22
  272. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php +0 -443
  273. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php +0 -238
  274. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php +0 -91
  275. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/GitDriver.php +0 -222
  276. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php +0 -472
  277. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php +0 -511
  278. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php +0 -91
  279. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/HgDriver.php +0 -230
  280. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php +0 -181
  281. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php +0 -397
  282. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php +0 -175
  283. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php +0 -117
  284. data/helpers/vendor/composer/composer/src/Composer/Repository/VcsRepository.php +0 -377
  285. data/helpers/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php +0 -23
  286. data/helpers/vendor/composer/composer/src/Composer/Repository/WritableArrayRepository.php +0 -66
  287. data/helpers/vendor/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php +0 -54
  288. data/helpers/vendor/composer/composer/src/Composer/Script/CommandEvent.php +0 -22
  289. data/helpers/vendor/composer/composer/src/Composer/Script/Event.php +0 -89
  290. data/helpers/vendor/composer/composer/src/Composer/Script/PackageEvent.php +0 -24
  291. data/helpers/vendor/composer/composer/src/Composer/Script/ScriptEvents.php +0 -193
  292. data/helpers/vendor/composer/composer/src/Composer/SelfUpdate/Keys.php +0 -36
  293. data/helpers/vendor/composer/composer/src/Composer/SelfUpdate/Versions.php +0 -75
  294. data/helpers/vendor/composer/composer/src/Composer/Util/AuthHelper.php +0 -63
  295. data/helpers/vendor/composer/composer/src/Composer/Util/Bitbucket.php +0 -245
  296. data/helpers/vendor/composer/composer/src/Composer/Util/ComposerMirror.php +0 -57
  297. data/helpers/vendor/composer/composer/src/Composer/Util/ConfigValidator.php +0 -191
  298. data/helpers/vendor/composer/composer/src/Composer/Util/ErrorHandler.php +0 -79
  299. data/helpers/vendor/composer/composer/src/Composer/Util/Filesystem.php +0 -700
  300. data/helpers/vendor/composer/composer/src/Composer/Util/Git.php +0 -347
  301. data/helpers/vendor/composer/composer/src/Composer/Util/GitHub.php +0 -180
  302. data/helpers/vendor/composer/composer/src/Composer/Util/GitLab.php +0 -163
  303. data/helpers/vendor/composer/composer/src/Composer/Util/Hg.php +0 -94
  304. data/helpers/vendor/composer/composer/src/Composer/Util/IniHelper.php +0 -64
  305. data/helpers/vendor/composer/composer/src/Composer/Util/NoProxyPattern.php +0 -147
  306. data/helpers/vendor/composer/composer/src/Composer/Util/Perforce.php +0 -575
  307. data/helpers/vendor/composer/composer/src/Composer/Util/Platform.php +0 -92
  308. data/helpers/vendor/composer/composer/src/Composer/Util/ProcessExecutor.php +0 -186
  309. data/helpers/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php +0 -1093
  310. data/helpers/vendor/composer/composer/src/Composer/Util/Silencer.php +0 -78
  311. data/helpers/vendor/composer/composer/src/Composer/Util/SpdxLicense.php +0 -24
  312. data/helpers/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php +0 -177
  313. data/helpers/vendor/composer/composer/src/Composer/Util/Svn.php +0 -381
  314. data/helpers/vendor/composer/composer/src/Composer/Util/TlsHelper.php +0 -204
  315. data/helpers/vendor/composer/composer/src/Composer/Util/Url.php +0 -55
  316. data/helpers/vendor/composer/composer/src/Composer/XdebugHandler.php +0 -31
  317. data/helpers/vendor/composer/composer/src/bootstrap.php +0 -24
  318. data/helpers/vendor/composer/installed.json +0 -945
  319. data/helpers/vendor/composer/semver/CHANGELOG.md +0 -66
  320. data/helpers/vendor/composer/semver/LICENSE +0 -19
  321. data/helpers/vendor/composer/semver/README.md +0 -70
  322. data/helpers/vendor/composer/semver/composer.json +0 -58
  323. data/helpers/vendor/composer/semver/src/Comparator.php +0 -111
  324. data/helpers/vendor/composer/semver/src/Constraint/AbstractConstraint.php +0 -63
  325. data/helpers/vendor/composer/semver/src/Constraint/Constraint.php +0 -219
  326. data/helpers/vendor/composer/semver/src/Constraint/ConstraintInterface.php +0 -32
  327. data/helpers/vendor/composer/semver/src/Constraint/EmptyConstraint.php +0 -59
  328. data/helpers/vendor/composer/semver/src/Constraint/MultiConstraint.php +0 -120
  329. data/helpers/vendor/composer/semver/src/Semver.php +0 -127
  330. data/helpers/vendor/composer/semver/src/VersionParser.php +0 -548
  331. data/helpers/vendor/composer/spdx-licenses/.php_cs.dist +0 -59
  332. data/helpers/vendor/composer/spdx-licenses/CHANGELOG.md +0 -84
  333. data/helpers/vendor/composer/spdx-licenses/LICENSE +0 -19
  334. data/helpers/vendor/composer/spdx-licenses/README.md +0 -69
  335. data/helpers/vendor/composer/spdx-licenses/composer.json +0 -57
  336. data/helpers/vendor/composer/spdx-licenses/res/spdx-exceptions.json +0 -101
  337. data/helpers/vendor/composer/spdx-licenses/res/spdx-licenses.json +0 -1907
  338. data/helpers/vendor/composer/spdx-licenses/src/SpdxLicenses.php +0 -343
  339. data/helpers/vendor/composer/xdebug-handler/CHANGELOG.md +0 -51
  340. data/helpers/vendor/composer/xdebug-handler/LICENSE +0 -21
  341. data/helpers/vendor/composer/xdebug-handler/README.md +0 -280
  342. data/helpers/vendor/composer/xdebug-handler/composer.json +0 -40
  343. data/helpers/vendor/composer/xdebug-handler/src/PhpConfig.php +0 -73
  344. data/helpers/vendor/composer/xdebug-handler/src/Process.php +0 -160
  345. data/helpers/vendor/composer/xdebug-handler/src/Status.php +0 -163
  346. data/helpers/vendor/composer/xdebug-handler/src/XdebugHandler.php +0 -540
  347. data/helpers/vendor/justinrainbow/json-schema/.gitattributes +0 -5
  348. data/helpers/vendor/justinrainbow/json-schema/.php_cs.dist +0 -33
  349. data/helpers/vendor/justinrainbow/json-schema/LICENSE +0 -21
  350. data/helpers/vendor/justinrainbow/json-schema/README.md +0 -206
  351. data/helpers/vendor/justinrainbow/json-schema/bin/validate-json +0 -251
  352. data/helpers/vendor/justinrainbow/json-schema/composer.json +0 -65
  353. data/helpers/vendor/justinrainbow/json-schema/demo/README.md +0 -14
  354. data/helpers/vendor/justinrainbow/json-schema/demo/data.json +0 -3
  355. data/helpers/vendor/justinrainbow/json-schema/demo/demo.php +0 -18
  356. data/helpers/vendor/justinrainbow/json-schema/demo/schema.json +0 -3
  357. data/helpers/vendor/justinrainbow/json-schema/dist/schema/json-schema-draft-03.json +0 -174
  358. data/helpers/vendor/justinrainbow/json-schema/dist/schema/json-schema-draft-04.json +0 -150
  359. data/helpers/vendor/justinrainbow/json-schema/phpunit.xml.dist +0 -26
  360. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php +0 -148
  361. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php +0 -147
  362. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php +0 -213
  363. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php +0 -65
  364. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/EnumConstraint.php +0 -54
  365. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php +0 -220
  366. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php +0 -214
  367. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php +0 -86
  368. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php +0 -192
  369. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php +0 -94
  370. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php +0 -60
  371. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php +0 -68
  372. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php +0 -36
  373. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php +0 -18
  374. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeConstraint.php +0 -261
  375. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php +0 -413
  376. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php +0 -161
  377. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php +0 -7
  378. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidArgumentException.php +0 -17
  379. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidConfigException.php +0 -17
  380. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaException.php +0 -17
  381. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaMediaTypeException.php +0 -17
  382. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSourceUriException.php +0 -17
  383. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/JsonDecodingException.php +0 -40
  384. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ResourceNotFoundException.php +0 -17
  385. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/RuntimeException.php +0 -17
  386. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UnresolvableJsonPointerException.php +0 -19
  387. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UriResolverException.php +0 -17
  388. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ValidationException.php +0 -14
  389. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Iterator/ObjectIterator.php +0 -149
  390. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php +0 -30
  391. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php +0 -169
  392. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php +0 -41
  393. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/AbstractRetriever.php +0 -34
  394. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php +0 -83
  395. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php +0 -93
  396. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php +0 -56
  397. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php +0 -36
  398. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php +0 -175
  399. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php +0 -330
  400. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php +0 -26
  401. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/UriRetrieverInterface.php +0 -26
  402. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Validator.php +0 -90
  403. data/helpers/vendor/psr/log/.gitignore +0 -1
  404. data/helpers/vendor/psr/log/LICENSE +0 -19
  405. data/helpers/vendor/psr/log/Psr/Log/AbstractLogger.php +0 -128
  406. data/helpers/vendor/psr/log/Psr/Log/InvalidArgumentException.php +0 -7
  407. data/helpers/vendor/psr/log/Psr/Log/LogLevel.php +0 -18
  408. data/helpers/vendor/psr/log/Psr/Log/LoggerAwareInterface.php +0 -18
  409. data/helpers/vendor/psr/log/Psr/Log/LoggerAwareTrait.php +0 -26
  410. data/helpers/vendor/psr/log/Psr/Log/LoggerInterface.php +0 -123
  411. data/helpers/vendor/psr/log/Psr/Log/LoggerTrait.php +0 -140
  412. data/helpers/vendor/psr/log/Psr/Log/NullLogger.php +0 -28
  413. data/helpers/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php +0 -144
  414. data/helpers/vendor/psr/log/Psr/Log/Test/TestLogger.php +0 -146
  415. data/helpers/vendor/psr/log/README.md +0 -52
  416. data/helpers/vendor/psr/log/composer.json +0 -26
  417. data/helpers/vendor/seld/jsonlint/.gitignore +0 -3
  418. data/helpers/vendor/seld/jsonlint/.travis.yml +0 -25
  419. data/helpers/vendor/seld/jsonlint/CHANGELOG.md +0 -66
  420. data/helpers/vendor/seld/jsonlint/LICENSE +0 -19
  421. data/helpers/vendor/seld/jsonlint/README.md +0 -89
  422. data/helpers/vendor/seld/jsonlint/bin/jsonlint +0 -117
  423. data/helpers/vendor/seld/jsonlint/composer.json +0 -24
  424. data/helpers/vendor/seld/jsonlint/phpunit.xml.dist +0 -25
  425. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/DuplicateKeyException.php +0 -26
  426. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php +0 -502
  427. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php +0 -217
  428. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.php +0 -28
  429. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php +0 -16
  430. data/helpers/vendor/seld/jsonlint/tests/JsonParserTest.php +0 -230
  431. data/helpers/vendor/seld/jsonlint/tests/bom.json +0 -6
  432. data/helpers/vendor/seld/jsonlint/tests/bootstrap.php +0 -13
  433. data/helpers/vendor/seld/phar-utils/.gitignore +0 -1
  434. data/helpers/vendor/seld/phar-utils/LICENSE +0 -19
  435. data/helpers/vendor/seld/phar-utils/README.md +0 -39
  436. data/helpers/vendor/seld/phar-utils/composer.json +0 -26
  437. data/helpers/vendor/seld/phar-utils/composer.lock +0 -19
  438. data/helpers/vendor/seld/phar-utils/src/Timestamps.php +0 -192
  439. data/helpers/vendor/symfony/console/.gitignore +0 -3
  440. data/helpers/vendor/symfony/console/Application.php +0 -1174
  441. data/helpers/vendor/symfony/console/CHANGELOG.md +0 -140
  442. data/helpers/vendor/symfony/console/Command/Command.php +0 -654
  443. data/helpers/vendor/symfony/console/Command/HelpCommand.php +0 -81
  444. data/helpers/vendor/symfony/console/Command/ListCommand.php +0 -90
  445. data/helpers/vendor/symfony/console/Command/LockableTrait.php +0 -71
  446. data/helpers/vendor/symfony/console/CommandLoader/CommandLoaderInterface.php +0 -37
  447. data/helpers/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php +0 -55
  448. data/helpers/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php +0 -62
  449. data/helpers/vendor/symfony/console/ConsoleEvents.php +0 -47
  450. data/helpers/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php +0 -98
  451. data/helpers/vendor/symfony/console/Descriptor/ApplicationDescription.php +0 -144
  452. data/helpers/vendor/symfony/console/Descriptor/Descriptor.php +0 -107
  453. data/helpers/vendor/symfony/console/Descriptor/DescriptorInterface.php +0 -31
  454. data/helpers/vendor/symfony/console/Descriptor/JsonDescriptor.php +0 -168
  455. data/helpers/vendor/symfony/console/Descriptor/MarkdownDescriptor.php +0 -182
  456. data/helpers/vendor/symfony/console/Descriptor/TextDescriptor.php +0 -342
  457. data/helpers/vendor/symfony/console/Descriptor/XmlDescriptor.php +0 -245
  458. data/helpers/vendor/symfony/console/Event/ConsoleCommandEvent.php +0 -60
  459. data/helpers/vendor/symfony/console/Event/ConsoleErrorEvent.php +0 -58
  460. data/helpers/vendor/symfony/console/Event/ConsoleEvent.php +0 -67
  461. data/helpers/vendor/symfony/console/Event/ConsoleTerminateEvent.php +0 -53
  462. data/helpers/vendor/symfony/console/EventListener/ErrorListener.php +0 -91
  463. data/helpers/vendor/symfony/console/Exception/CommandNotFoundException.php +0 -43
  464. data/helpers/vendor/symfony/console/Exception/ExceptionInterface.php +0 -21
  465. data/helpers/vendor/symfony/console/Exception/InvalidArgumentException.php +0 -19
  466. data/helpers/vendor/symfony/console/Exception/InvalidOptionException.php +0 -21
  467. data/helpers/vendor/symfony/console/Exception/LogicException.php +0 -19
  468. data/helpers/vendor/symfony/console/Exception/NamespaceNotFoundException.php +0 -21
  469. data/helpers/vendor/symfony/console/Exception/RuntimeException.php +0 -19
  470. data/helpers/vendor/symfony/console/Formatter/OutputFormatter.php +0 -278
  471. data/helpers/vendor/symfony/console/Formatter/OutputFormatterInterface.php +0 -71
  472. data/helpers/vendor/symfony/console/Formatter/OutputFormatterStyle.php +0 -203
  473. data/helpers/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php +0 -62
  474. data/helpers/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php +0 -110
  475. data/helpers/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php +0 -25
  476. data/helpers/vendor/symfony/console/Helper/DebugFormatterHelper.php +0 -127
  477. data/helpers/vendor/symfony/console/Helper/DescriptorHelper.php +0 -94
  478. data/helpers/vendor/symfony/console/Helper/FormatterHelper.php +0 -106
  479. data/helpers/vendor/symfony/console/Helper/Helper.php +0 -138
  480. data/helpers/vendor/symfony/console/Helper/HelperInterface.php +0 -39
  481. data/helpers/vendor/symfony/console/Helper/HelperSet.php +0 -108
  482. data/helpers/vendor/symfony/console/Helper/InputAwareHelper.php +0 -33
  483. data/helpers/vendor/symfony/console/Helper/ProcessHelper.php +0 -156
  484. data/helpers/vendor/symfony/console/Helper/ProgressBar.php +0 -530
  485. data/helpers/vendor/symfony/console/Helper/ProgressIndicator.php +0 -269
  486. data/helpers/vendor/symfony/console/Helper/QuestionHelper.php +0 -434
  487. data/helpers/vendor/symfony/console/Helper/SymfonyQuestionHelper.php +0 -96
  488. data/helpers/vendor/symfony/console/Helper/Table.php +0 -808
  489. data/helpers/vendor/symfony/console/Helper/TableCell.php +0 -68
  490. data/helpers/vendor/symfony/console/Helper/TableRows.php +0 -32
  491. data/helpers/vendor/symfony/console/Helper/TableSeparator.php +0 -25
  492. data/helpers/vendor/symfony/console/Helper/TableStyle.php +0 -458
  493. data/helpers/vendor/symfony/console/Input/ArgvInput.php +0 -346
  494. data/helpers/vendor/symfony/console/Input/ArrayInput.php +0 -206
  495. data/helpers/vendor/symfony/console/Input/Input.php +0 -203
  496. data/helpers/vendor/symfony/console/Input/InputArgument.php +0 -129
  497. data/helpers/vendor/symfony/console/Input/InputAwareInterface.php +0 -26
  498. data/helpers/vendor/symfony/console/Input/InputDefinition.php +0 -402
  499. data/helpers/vendor/symfony/console/Input/InputInterface.php +0 -163
  500. data/helpers/vendor/symfony/console/Input/InputOption.php +0 -208
  501. data/helpers/vendor/symfony/console/Input/StreamableInputInterface.php +0 -37
  502. data/helpers/vendor/symfony/console/Input/StringInput.php +0 -72
  503. data/helpers/vendor/symfony/console/LICENSE +0 -19
  504. data/helpers/vendor/symfony/console/Logger/ConsoleLogger.php +0 -124
  505. data/helpers/vendor/symfony/console/Output/BufferedOutput.php +0 -45
  506. data/helpers/vendor/symfony/console/Output/ConsoleOutput.php +0 -161
  507. data/helpers/vendor/symfony/console/Output/ConsoleOutputInterface.php +0 -32
  508. data/helpers/vendor/symfony/console/Output/ConsoleSectionOutput.php +0 -141
  509. data/helpers/vendor/symfony/console/Output/NullOutput.php +0 -123
  510. data/helpers/vendor/symfony/console/Output/Output.php +0 -177
  511. data/helpers/vendor/symfony/console/Output/OutputInterface.php +0 -114
  512. data/helpers/vendor/symfony/console/Output/StreamOutput.php +0 -124
  513. data/helpers/vendor/symfony/console/Question/ChoiceQuestion.php +0 -184
  514. data/helpers/vendor/symfony/console/Question/ConfirmationQuestion.php +0 -59
  515. data/helpers/vendor/symfony/console/Question/Question.php +0 -246
  516. data/helpers/vendor/symfony/console/README.md +0 -20
  517. data/helpers/vendor/symfony/console/Resources/bin/hiddeninput.exe +0 -0
  518. data/helpers/vendor/symfony/console/Style/OutputStyle.php +0 -155
  519. data/helpers/vendor/symfony/console/Style/StyleInterface.php +0 -154
  520. data/helpers/vendor/symfony/console/Style/SymfonyStyle.php +0 -438
  521. data/helpers/vendor/symfony/console/Terminal.php +0 -137
  522. data/helpers/vendor/symfony/console/Tester/ApplicationTester.php +0 -77
  523. data/helpers/vendor/symfony/console/Tester/CommandTester.php +0 -79
  524. data/helpers/vendor/symfony/console/Tester/TesterTrait.php +0 -173
  525. data/helpers/vendor/symfony/console/Tests/ApplicationTest.php +0 -1791
  526. data/helpers/vendor/symfony/console/Tests/Command/CommandTest.php +0 -436
  527. data/helpers/vendor/symfony/console/Tests/Command/HelpCommandTest.php +0 -71
  528. data/helpers/vendor/symfony/console/Tests/Command/ListCommandTest.php +0 -113
  529. data/helpers/vendor/symfony/console/Tests/Command/LockableTraitTest.php +0 -67
  530. data/helpers/vendor/symfony/console/Tests/CommandLoader/ContainerCommandLoaderTest.php +0 -61
  531. data/helpers/vendor/symfony/console/Tests/CommandLoader/FactoryCommandLoaderTest.php +0 -60
  532. data/helpers/vendor/symfony/console/Tests/DependencyInjection/AddConsoleCommandPassTest.php +0 -258
  533. data/helpers/vendor/symfony/console/Tests/Descriptor/AbstractDescriptorTest.php +0 -107
  534. data/helpers/vendor/symfony/console/Tests/Descriptor/JsonDescriptorTest.php +0 -35
  535. data/helpers/vendor/symfony/console/Tests/Descriptor/MarkdownDescriptorTest.php +0 -45
  536. data/helpers/vendor/symfony/console/Tests/Descriptor/ObjectsProvider.php +0 -82
  537. data/helpers/vendor/symfony/console/Tests/Descriptor/TextDescriptorTest.php +0 -53
  538. data/helpers/vendor/symfony/console/Tests/Descriptor/XmlDescriptorTest.php +0 -27
  539. data/helpers/vendor/symfony/console/Tests/EventListener/ErrorListenerTest.php +0 -156
  540. data/helpers/vendor/symfony/console/Tests/Fixtures/BarBucCommand.php +0 -11
  541. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorApplication1.php +0 -18
  542. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorApplication2.php +0 -26
  543. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorApplicationMbString.php +0 -24
  544. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommand1.php +0 -27
  545. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommand2.php +0 -32
  546. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommand3.php +0 -27
  547. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommand4.php +0 -25
  548. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommandMbString.php +0 -32
  549. data/helpers/vendor/symfony/console/Tests/Fixtures/DummyOutput.php +0 -36
  550. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo1Command.php +0 -26
  551. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo2Command.php +0 -21
  552. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo3Command.php +0 -29
  553. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo4Command.php +0 -11
  554. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo5Command.php +0 -10
  555. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo6Command.php +0 -11
  556. data/helpers/vendor/symfony/console/Tests/Fixtures/FooCommand.php +0 -33
  557. data/helpers/vendor/symfony/console/Tests/Fixtures/FooLock2Command.php +0 -28
  558. data/helpers/vendor/symfony/console/Tests/Fixtures/FooLockCommand.php +0 -27
  559. data/helpers/vendor/symfony/console/Tests/Fixtures/FooOptCommand.php +0 -36
  560. data/helpers/vendor/symfony/console/Tests/Fixtures/FooSameCaseLowercaseCommand.php +0 -11
  561. data/helpers/vendor/symfony/console/Tests/Fixtures/FooSameCaseUppercaseCommand.php +0 -11
  562. data/helpers/vendor/symfony/console/Tests/Fixtures/FooSubnamespaced1Command.php +0 -26
  563. data/helpers/vendor/symfony/console/Tests/Fixtures/FooSubnamespaced2Command.php +0 -26
  564. data/helpers/vendor/symfony/console/Tests/Fixtures/FooWithoutAliasCommand.php +0 -21
  565. data/helpers/vendor/symfony/console/Tests/Fixtures/FoobarCommand.php +0 -25
  566. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_0.php +0 -11
  567. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_1.php +0 -13
  568. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_10.php +0 -17
  569. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_11.php +0 -12
  570. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_12.php +0 -13
  571. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_13.php +0 -14
  572. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_14.php +0 -17
  573. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_15.php +0 -14
  574. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_16.php +0 -15
  575. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_17.php +0 -13
  576. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_2.php +0 -16
  577. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_3.php +0 -12
  578. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_4.php +0 -34
  579. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_4_with_iterators.php +0 -34
  580. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_5.php +0 -37
  581. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_6.php +0 -16
  582. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_7.php +0 -15
  583. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_8.php +0 -26
  584. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_9.php +0 -11
  585. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/interactive_command_1.php +0 -19
  586. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/interactive_output_1.txt +0 -7
  587. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_0.txt +0 -3
  588. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_1.txt +0 -9
  589. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_10.txt +0 -7
  590. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_11.txt +0 -4
  591. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_12.txt +0 -6
  592. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_13.txt +0 -7
  593. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_14.txt +0 -6
  594. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_15.txt +0 -7
  595. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_16.txt +0 -8
  596. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_17.txt +0 -7
  597. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_2.txt +0 -13
  598. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_3.txt +0 -7
  599. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_4.txt +0 -32
  600. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_4_with_iterators.txt +0 -32
  601. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_5.txt +0 -18
  602. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_6.txt +0 -6
  603. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_7.txt +0 -5
  604. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_8.txt +0 -9
  605. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_9.txt +0 -5
  606. data/helpers/vendor/symfony/console/Tests/Fixtures/TestCommand.php +0 -28
  607. data/helpers/vendor/symfony/console/Tests/Fixtures/TestTiti.php +0 -21
  608. data/helpers/vendor/symfony/console/Tests/Fixtures/TestToto.php +0 -22
  609. data/helpers/vendor/symfony/console/Tests/Fixtures/application_1.json +0 -156
  610. data/helpers/vendor/symfony/console/Tests/Fixtures/application_1.md +0 -172
  611. data/helpers/vendor/symfony/console/Tests/Fixtures/application_1.txt +0 -17
  612. data/helpers/vendor/symfony/console/Tests/Fixtures/application_1.xml +0 -104
  613. data/helpers/vendor/symfony/console/Tests/Fixtures/application_2.json +0 -509
  614. data/helpers/vendor/symfony/console/Tests/Fixtures/application_2.md +0 -431
  615. data/helpers/vendor/symfony/console/Tests/Fixtures/application_2.txt +0 -21
  616. data/helpers/vendor/symfony/console/Tests/Fixtures/application_2.xml +0 -254
  617. data/helpers/vendor/symfony/console/Tests/Fixtures/application_filtered_namespace.txt +0 -16
  618. data/helpers/vendor/symfony/console/Tests/Fixtures/application_gethelp.txt +0 -1
  619. data/helpers/vendor/symfony/console/Tests/Fixtures/application_mbstring.md +0 -269
  620. data/helpers/vendor/symfony/console/Tests/Fixtures/application_mbstring.txt +0 -19
  621. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception1.txt +0 -5
  622. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception2.txt +0 -7
  623. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception3.txt +0 -18
  624. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception3decorated.txt +0 -18
  625. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception4.txt +0 -6
  626. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_doublewidth1.txt +0 -8
  627. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_doublewidth1decorated.txt +0 -8
  628. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_doublewidth2.txt +0 -9
  629. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_escapeslines.txt +0 -9
  630. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_linebreaks.txt +0 -11
  631. data/helpers/vendor/symfony/console/Tests/Fixtures/application_run1.txt +0 -17
  632. data/helpers/vendor/symfony/console/Tests/Fixtures/application_run2.txt +0 -29
  633. data/helpers/vendor/symfony/console/Tests/Fixtures/application_run3.txt +0 -29
  634. data/helpers/vendor/symfony/console/Tests/Fixtures/application_run4.txt +0 -1
  635. data/helpers/vendor/symfony/console/Tests/Fixtures/command_1.json +0 -15
  636. data/helpers/vendor/symfony/console/Tests/Fixtures/command_1.md +0 -12
  637. data/helpers/vendor/symfony/console/Tests/Fixtures/command_1.txt +0 -10
  638. data/helpers/vendor/symfony/console/Tests/Fixtures/command_1.xml +0 -12
  639. data/helpers/vendor/symfony/console/Tests/Fixtures/command_2.json +0 -33
  640. data/helpers/vendor/symfony/console/Tests/Fixtures/command_2.md +0 -29
  641. data/helpers/vendor/symfony/console/Tests/Fixtures/command_2.txt +0 -16
  642. data/helpers/vendor/symfony/console/Tests/Fixtures/command_2.xml +0 -21
  643. data/helpers/vendor/symfony/console/Tests/Fixtures/command_mbstring.md +0 -29
  644. data/helpers/vendor/symfony/console/Tests/Fixtures/command_mbstring.txt +0 -16
  645. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_1.json +0 -7
  646. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_1.md +0 -5
  647. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_1.txt +0 -1
  648. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_1.xml +0 -5
  649. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_2.json +0 -7
  650. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_2.md +0 -7
  651. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_2.txt +0 -1
  652. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_2.xml +0 -5
  653. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_3.json +0 -7
  654. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_3.md +0 -7
  655. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_3.txt +0 -1
  656. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_3.xml +0 -7
  657. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_4.json +0 -7
  658. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_4.md +0 -8
  659. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_4.txt +0 -2
  660. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_4.xml +0 -6
  661. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_default_inf_value.json +0 -7
  662. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_default_inf_value.md +0 -7
  663. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_default_inf_value.txt +0 -1
  664. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_default_inf_value.xml +0 -7
  665. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_style.json +0 -7
  666. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_style.md +0 -7
  667. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_style.txt +0 -1
  668. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_style.xml +0 -7
  669. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_1.json +0 -4
  670. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_1.md +0 -0
  671. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_1.txt +0 -0
  672. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_1.xml +0 -5
  673. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_2.json +0 -12
  674. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_2.md +0 -7
  675. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_2.txt +0 -2
  676. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_2.xml +0 -10
  677. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_3.json +0 -14
  678. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_3.md +0 -8
  679. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_3.txt +0 -2
  680. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_3.xml +0 -9
  681. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_4.json +0 -22
  682. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_4.md +0 -16
  683. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_4.txt +0 -5
  684. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_4.xml +0 -14
  685. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_1.json +0 -9
  686. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_1.md +0 -6
  687. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_1.txt +0 -1
  688. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_1.xml +0 -4
  689. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_2.json +0 -9
  690. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_2.md +0 -8
  691. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_2.txt +0 -1
  692. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_2.xml +0 -7
  693. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_3.json +0 -9
  694. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_3.md +0 -8
  695. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_3.txt +0 -1
  696. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_3.xml +0 -5
  697. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_4.json +0 -9
  698. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_4.md +0 -8
  699. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_4.txt +0 -1
  700. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_4.xml +0 -5
  701. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_5.json +0 -9
  702. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_5.md +0 -9
  703. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_5.txt +0 -2
  704. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_5.xml +0 -6
  705. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_6.json +0 -9
  706. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_6.md +0 -8
  707. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_6.txt +0 -1
  708. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_6.xml +0 -5
  709. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_default_inf_value.json +0 -9
  710. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_default_inf_value.md +0 -8
  711. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_default_inf_value.txt +0 -1
  712. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_default_inf_value.xml +0 -7
  713. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style.json +0 -9
  714. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style.md +0 -8
  715. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style.txt +0 -1
  716. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style.xml +0 -7
  717. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style_array.json +0 -12
  718. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style_array.md +0 -8
  719. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style_array.txt +0 -1
  720. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style_array.xml +0 -8
  721. data/helpers/vendor/symfony/console/Tests/Formatter/OutputFormatterStyleStackTest.php +0 -71
  722. data/helpers/vendor/symfony/console/Tests/Formatter/OutputFormatterStyleTest.php +0 -100
  723. data/helpers/vendor/symfony/console/Tests/Formatter/OutputFormatterTest.php +0 -352
  724. data/helpers/vendor/symfony/console/Tests/Helper/AbstractQuestionHelperTest.php +0 -34
  725. data/helpers/vendor/symfony/console/Tests/Helper/FormatterHelperTest.php +0 -129
  726. data/helpers/vendor/symfony/console/Tests/Helper/HelperSetTest.php +0 -127
  727. data/helpers/vendor/symfony/console/Tests/Helper/HelperTest.php +0 -55
  728. data/helpers/vendor/symfony/console/Tests/Helper/ProcessHelperTest.php +0 -133
  729. data/helpers/vendor/symfony/console/Tests/Helper/ProgressBarTest.php +0 -899
  730. data/helpers/vendor/symfony/console/Tests/Helper/ProgressIndicatorTest.php +0 -183
  731. data/helpers/vendor/symfony/console/Tests/Helper/QuestionHelperTest.php +0 -665
  732. data/helpers/vendor/symfony/console/Tests/Helper/SymfonyQuestionHelperTest.php +0 -168
  733. data/helpers/vendor/symfony/console/Tests/Helper/TableStyleTest.php +0 -28
  734. data/helpers/vendor/symfony/console/Tests/Helper/TableTest.php +0 -1127
  735. data/helpers/vendor/symfony/console/Tests/Input/ArgvInputTest.php +0 -458
  736. data/helpers/vendor/symfony/console/Tests/Input/ArrayInputTest.php +0 -177
  737. data/helpers/vendor/symfony/console/Tests/Input/InputArgumentTest.php +0 -103
  738. data/helpers/vendor/symfony/console/Tests/Input/InputDefinitionTest.php +0 -407
  739. data/helpers/vendor/symfony/console/Tests/Input/InputOptionTest.php +0 -196
  740. data/helpers/vendor/symfony/console/Tests/Input/InputTest.php +0 -149
  741. data/helpers/vendor/symfony/console/Tests/Input/StringInputTest.php +0 -87
  742. data/helpers/vendor/symfony/console/Tests/Logger/ConsoleLoggerTest.php +0 -215
  743. data/helpers/vendor/symfony/console/Tests/Output/ConsoleOutputTest.php +0 -42
  744. data/helpers/vendor/symfony/console/Tests/Output/ConsoleSectionOutputTest.php +0 -163
  745. data/helpers/vendor/symfony/console/Tests/Output/NullOutputTest.php +0 -88
  746. data/helpers/vendor/symfony/console/Tests/Output/OutputTest.php +0 -189
  747. data/helpers/vendor/symfony/console/Tests/Output/StreamOutputTest.php +0 -61
  748. data/helpers/vendor/symfony/console/Tests/Style/SymfonyStyleTest.php +0 -116
  749. data/helpers/vendor/symfony/console/Tests/TerminalTest.php +0 -44
  750. data/helpers/vendor/symfony/console/Tests/Tester/ApplicationTesterTest.php +0 -113
  751. data/helpers/vendor/symfony/console/Tests/Tester/CommandTesterTest.php +0 -207
  752. data/helpers/vendor/symfony/console/composer.json +0 -53
  753. data/helpers/vendor/symfony/console/phpunit.xml.dist +0 -41
  754. data/helpers/vendor/symfony/contracts/.gitignore +0 -3
  755. data/helpers/vendor/symfony/contracts/CHANGELOG.md +0 -12
  756. data/helpers/vendor/symfony/contracts/Cache/CacheInterface.php +0 -57
  757. data/helpers/vendor/symfony/contracts/Cache/CacheTrait.php +0 -71
  758. data/helpers/vendor/symfony/contracts/Cache/CallbackInterface.php +0 -30
  759. data/helpers/vendor/symfony/contracts/Cache/ItemInterface.php +0 -60
  760. data/helpers/vendor/symfony/contracts/Cache/TagAwareCacheInterface.php +0 -38
  761. data/helpers/vendor/symfony/contracts/LICENSE +0 -19
  762. data/helpers/vendor/symfony/contracts/README.md +0 -70
  763. data/helpers/vendor/symfony/contracts/Service/ResetInterface.php +0 -30
  764. data/helpers/vendor/symfony/contracts/Service/ServiceLocatorTrait.php +0 -97
  765. data/helpers/vendor/symfony/contracts/Service/ServiceSubscriberInterface.php +0 -53
  766. data/helpers/vendor/symfony/contracts/Service/ServiceSubscriberTrait.php +0 -61
  767. data/helpers/vendor/symfony/contracts/Tests/Cache/CacheTraitTest.php +0 -165
  768. data/helpers/vendor/symfony/contracts/Tests/Service/ServiceLocatorTest.php +0 -94
  769. data/helpers/vendor/symfony/contracts/Tests/Service/ServiceSubscriberTraitTest.php +0 -65
  770. data/helpers/vendor/symfony/contracts/Tests/Translation/TranslatorTest.php +0 -353
  771. data/helpers/vendor/symfony/contracts/Translation/LocaleAwareInterface.php +0 -31
  772. data/helpers/vendor/symfony/contracts/Translation/TranslatorInterface.php +0 -65
  773. data/helpers/vendor/symfony/contracts/Translation/TranslatorTrait.php +0 -255
  774. data/helpers/vendor/symfony/contracts/composer.json +0 -44
  775. data/helpers/vendor/symfony/contracts/phpunit.xml.dist +0 -31
  776. data/helpers/vendor/symfony/filesystem/.gitignore +0 -3
  777. data/helpers/vendor/symfony/filesystem/CHANGELOG.md +0 -59
  778. data/helpers/vendor/symfony/filesystem/Exception/ExceptionInterface.php +0 -21
  779. data/helpers/vendor/symfony/filesystem/Exception/FileNotFoundException.php +0 -34
  780. data/helpers/vendor/symfony/filesystem/Exception/IOException.php +0 -39
  781. data/helpers/vendor/symfony/filesystem/Exception/IOExceptionInterface.php +0 -27
  782. data/helpers/vendor/symfony/filesystem/Exception/InvalidArgumentException.php +0 -19
  783. data/helpers/vendor/symfony/filesystem/Filesystem.php +0 -767
  784. data/helpers/vendor/symfony/filesystem/LICENSE +0 -19
  785. data/helpers/vendor/symfony/filesystem/README.md +0 -13
  786. data/helpers/vendor/symfony/filesystem/Tests/ExceptionTest.php +0 -47
  787. data/helpers/vendor/symfony/filesystem/Tests/FilesystemTest.php +0 -1686
  788. data/helpers/vendor/symfony/filesystem/Tests/FilesystemTestCase.php +0 -166
  789. data/helpers/vendor/symfony/filesystem/Tests/Fixtures/MockStream/MockStream.php +0 -46
  790. data/helpers/vendor/symfony/filesystem/composer.json +0 -34
  791. data/helpers/vendor/symfony/filesystem/phpunit.xml.dist +0 -30
  792. data/helpers/vendor/symfony/finder/.gitignore +0 -3
  793. data/helpers/vendor/symfony/finder/CHANGELOG.md +0 -69
  794. data/helpers/vendor/symfony/finder/Comparator/Comparator.php +0 -98
  795. data/helpers/vendor/symfony/finder/Comparator/DateComparator.php +0 -51
  796. data/helpers/vendor/symfony/finder/Comparator/NumberComparator.php +0 -79
  797. data/helpers/vendor/symfony/finder/Exception/AccessDeniedException.php +0 -19
  798. data/helpers/vendor/symfony/finder/Finder.php +0 -780
  799. data/helpers/vendor/symfony/finder/Glob.php +0 -116
  800. data/helpers/vendor/symfony/finder/Iterator/CustomFilterIterator.php +0 -61
  801. data/helpers/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php +0 -58
  802. data/helpers/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php +0 -45
  803. data/helpers/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php +0 -84
  804. data/helpers/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php +0 -53
  805. data/helpers/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php +0 -58
  806. data/helpers/vendor/symfony/finder/Iterator/FilenameFilterIterator.php +0 -47
  807. data/helpers/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php +0 -112
  808. data/helpers/vendor/symfony/finder/Iterator/PathFilterIterator.php +0 -56
  809. data/helpers/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php +0 -140
  810. data/helpers/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php +0 -57
  811. data/helpers/vendor/symfony/finder/Iterator/SortableIterator.php +0 -98
  812. data/helpers/vendor/symfony/finder/LICENSE +0 -19
  813. data/helpers/vendor/symfony/finder/README.md +0 -14
  814. data/helpers/vendor/symfony/finder/SplFileInfo.php +0 -78
  815. data/helpers/vendor/symfony/finder/Tests/Comparator/ComparatorTest.php +0 -65
  816. data/helpers/vendor/symfony/finder/Tests/Comparator/DateComparatorTest.php +0 -64
  817. data/helpers/vendor/symfony/finder/Tests/Comparator/NumberComparatorTest.php +0 -108
  818. data/helpers/vendor/symfony/finder/Tests/FinderTest.php +0 -1280
  819. data/helpers/vendor/symfony/finder/Tests/Fixtures/.dot/a +0 -0
  820. data/helpers/vendor/symfony/finder/Tests/Fixtures/.dot/b/c.neon +0 -0
  821. data/helpers/vendor/symfony/finder/Tests/Fixtures/.dot/b/d.neon +0 -0
  822. data/helpers/vendor/symfony/finder/Tests/Fixtures/A/B/C/abc.dat +0 -0
  823. data/helpers/vendor/symfony/finder/Tests/Fixtures/A/B/ab.dat +0 -0
  824. data/helpers/vendor/symfony/finder/Tests/Fixtures/A/a.dat +0 -0
  825. data/helpers/vendor/symfony/finder/Tests/Fixtures/copy/A/B/C/abc.dat.copy +0 -0
  826. data/helpers/vendor/symfony/finder/Tests/Fixtures/copy/A/B/ab.dat.copy +0 -0
  827. data/helpers/vendor/symfony/finder/Tests/Fixtures/copy/A/a.dat.copy +0 -0
  828. data/helpers/vendor/symfony/finder/Tests/Fixtures/dolor.txt +0 -2
  829. data/helpers/vendor/symfony/finder/Tests/Fixtures/ipsum.txt +0 -2
  830. data/helpers/vendor/symfony/finder/Tests/Fixtures/lorem.txt +0 -2
  831. data/helpers/vendor/symfony/finder/Tests/Fixtures/one/.dot +0 -1
  832. data/helpers/vendor/symfony/finder/Tests/Fixtures/one/a +0 -0
  833. data/helpers/vendor/symfony/finder/Tests/Fixtures/one/b/c.neon +0 -0
  834. data/helpers/vendor/symfony/finder/Tests/Fixtures/one/b/d.neon +0 -0
  835. data/helpers/vendor/symfony/finder/Tests/Fixtures/r+e.gex[c]a(r)s/dir/bar.dat +0 -0
  836. data/helpers/vendor/symfony/finder/Tests/Fixtures/with space/foo.txt b/data/helpers/vendor/symfony/finder/Tests/Fixtures/with → space/foo.txt +0 -0
  837. data/helpers/vendor/symfony/finder/Tests/GlobTest.php +0 -95
  838. data/helpers/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php +0 -46
  839. data/helpers/vendor/symfony/finder/Tests/Iterator/DateRangeFilterIteratorTest.php +0 -92
  840. data/helpers/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php +0 -103
  841. data/helpers/vendor/symfony/finder/Tests/Iterator/ExcludeDirectoryFilterIteratorTest.php +0 -107
  842. data/helpers/vendor/symfony/finder/Tests/Iterator/FileTypeFilterIteratorTest.php +0 -82
  843. data/helpers/vendor/symfony/finder/Tests/Iterator/FilecontentFilterIteratorTest.php +0 -86
  844. data/helpers/vendor/symfony/finder/Tests/Iterator/FilenameFilterIteratorTest.php +0 -54
  845. data/helpers/vendor/symfony/finder/Tests/Iterator/Iterator.php +0 -55
  846. data/helpers/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php +0 -100
  847. data/helpers/vendor/symfony/finder/Tests/Iterator/MockFileListIterator.php +0 -21
  848. data/helpers/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php +0 -132
  849. data/helpers/vendor/symfony/finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php +0 -71
  850. data/helpers/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php +0 -82
  851. data/helpers/vendor/symfony/finder/Tests/Iterator/RealIteratorTestCase.php +0 -128
  852. data/helpers/vendor/symfony/finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php +0 -59
  853. data/helpers/vendor/symfony/finder/Tests/Iterator/SizeRangeFilterIteratorTest.php +0 -70
  854. data/helpers/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php +0 -262
  855. data/helpers/vendor/symfony/finder/composer.json +0 -33
  856. data/helpers/vendor/symfony/finder/phpunit.xml.dist +0 -30
  857. data/helpers/vendor/symfony/polyfill-ctype/Ctype.php +0 -227
  858. data/helpers/vendor/symfony/polyfill-ctype/LICENSE +0 -19
  859. data/helpers/vendor/symfony/polyfill-ctype/README.md +0 -12
  860. data/helpers/vendor/symfony/polyfill-ctype/bootstrap.php +0 -26
  861. data/helpers/vendor/symfony/polyfill-ctype/composer.json +0 -34
  862. data/helpers/vendor/symfony/polyfill-mbstring/LICENSE +0 -19
  863. data/helpers/vendor/symfony/polyfill-mbstring/Mbstring.php +0 -800
  864. data/helpers/vendor/symfony/polyfill-mbstring/README.md +0 -13
  865. data/helpers/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +0 -1096
  866. data/helpers/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +0 -5
  867. data/helpers/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +0 -1104
  868. data/helpers/vendor/symfony/polyfill-mbstring/bootstrap.php +0 -58
  869. data/helpers/vendor/symfony/polyfill-mbstring/composer.json +0 -34
  870. data/helpers/vendor/symfony/process/.gitignore +0 -3
  871. data/helpers/vendor/symfony/process/CHANGELOG.md +0 -90
  872. data/helpers/vendor/symfony/process/Exception/ExceptionInterface.php +0 -21
  873. data/helpers/vendor/symfony/process/Exception/InvalidArgumentException.php +0 -21
  874. data/helpers/vendor/symfony/process/Exception/LogicException.php +0 -21
  875. data/helpers/vendor/symfony/process/Exception/ProcessFailedException.php +0 -54
  876. data/helpers/vendor/symfony/process/Exception/ProcessSignaledException.php +0 -41
  877. data/helpers/vendor/symfony/process/Exception/ProcessTimedOutException.php +0 -69
  878. data/helpers/vendor/symfony/process/Exception/RuntimeException.php +0 -21
  879. data/helpers/vendor/symfony/process/ExecutableFinder.php +0 -88
  880. data/helpers/vendor/symfony/process/InputStream.php +0 -90
  881. data/helpers/vendor/symfony/process/LICENSE +0 -19
  882. data/helpers/vendor/symfony/process/PhpExecutableFinder.php +0 -101
  883. data/helpers/vendor/symfony/process/PhpProcess.php +0 -76
  884. data/helpers/vendor/symfony/process/Pipes/AbstractPipes.php +0 -178
  885. data/helpers/vendor/symfony/process/Pipes/PipesInterface.php +0 -67
  886. data/helpers/vendor/symfony/process/Pipes/UnixPipes.php +0 -153
  887. data/helpers/vendor/symfony/process/Pipes/WindowsPipes.php +0 -191
  888. data/helpers/vendor/symfony/process/Process.php +0 -1652
  889. data/helpers/vendor/symfony/process/ProcessUtils.php +0 -69
  890. data/helpers/vendor/symfony/process/README.md +0 -13
  891. data/helpers/vendor/symfony/process/Tests/ExecutableFinderTest.php +0 -178
  892. data/helpers/vendor/symfony/process/Tests/KillableProcessWithOutput.php +0 -25
  893. data/helpers/vendor/symfony/process/Tests/NonStopableProcess.php +0 -47
  894. data/helpers/vendor/symfony/process/Tests/PhpExecutableFinderTest.php +0 -49
  895. data/helpers/vendor/symfony/process/Tests/PhpProcessTest.php +0 -48
  896. data/helpers/vendor/symfony/process/Tests/PipeStdinInStdoutStdErrStreamSelect.php +0 -72
  897. data/helpers/vendor/symfony/process/Tests/ProcessFailedExceptionTest.php +0 -137
  898. data/helpers/vendor/symfony/process/Tests/ProcessTest.php +0 -1533
  899. data/helpers/vendor/symfony/process/Tests/SignalListener.php +0 -21
  900. data/helpers/vendor/symfony/process/composer.json +0 -33
  901. data/helpers/vendor/symfony/process/phpunit.xml.dist +0 -30
@@ -1,92 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Composer.
5
- *
6
- * (c) Nils Adermann <naderman@naderman.de>
7
- * Jordi Boggiano <j.boggiano@seld.be>
8
- *
9
- * For the full copyright and license information, please view the LICENSE
10
- * file that was distributed with this source code.
11
- */
12
-
13
- namespace Composer\Util;
14
-
15
- /**
16
- * Platform helper for uniform platform-specific tests.
17
- *
18
- * @author Niels Keurentjes <niels.keurentjes@omines.com>
19
- */
20
- class Platform
21
- {
22
- /**
23
- * Parses tildes and environment variables in paths.
24
- *
25
- * @param string $path
26
- * @return string
27
- */
28
- public static function expandPath($path)
29
- {
30
- if (preg_match('#^~[\\/]#', $path)) {
31
- return self::getUserDirectory() . substr($path, 1);
32
- }
33
-
34
- return preg_replace_callback('#^(\$|(?P<percent>%))(?P<var>\w++)(?(percent)%)(?P<path>.*)#', function ($matches) {
35
- // Treat HOME as an alias for USERPROFILE on Windows for legacy reasons
36
- if (Platform::isWindows() && $matches['var'] == 'HOME') {
37
- return (getenv('HOME') ?: getenv('USERPROFILE')) . $matches['path'];
38
- }
39
-
40
- return getenv($matches['var']) . $matches['path'];
41
- }, $path);
42
- }
43
-
44
- /**
45
- * @throws \RuntimeException If the user home could not reliably be determined
46
- * @return string The formal user home as detected from environment parameters
47
- */
48
- public static function getUserDirectory()
49
- {
50
- if (false !== ($home = getenv('HOME'))) {
51
- return $home;
52
- }
53
-
54
- if (self::isWindows() && false !== ($home = getenv('USERPROFILE'))) {
55
- return $home;
56
- }
57
-
58
- if (function_exists('posix_getuid') && function_exists('posix_getpwuid')) {
59
- $info = posix_getpwuid(posix_getuid());
60
-
61
- return $info['dir'];
62
- }
63
-
64
- throw new \RuntimeException('Could not determine user directory');
65
- }
66
-
67
- /**
68
- * @return bool Whether the host machine is running a Windows OS
69
- */
70
- public static function isWindows()
71
- {
72
- return defined('PHP_WINDOWS_VERSION_BUILD');
73
- }
74
-
75
- /**
76
- * @param string $str
77
- * @return int return a guaranteed binary length of the string, regardless of silly mbstring configs
78
- */
79
- public static function strlen($str)
80
- {
81
- static $useMbString = null;
82
- if (null === $useMbString) {
83
- $useMbString = function_exists('mb_strlen') && ini_get('mbstring.func_overload');
84
- }
85
-
86
- if ($useMbString) {
87
- return mb_strlen($str, '8bit');
88
- }
89
-
90
- return strlen($str);
91
- }
92
- }
@@ -1,186 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Composer.
5
- *
6
- * (c) Nils Adermann <naderman@naderman.de>
7
- * Jordi Boggiano <j.boggiano@seld.be>
8
- *
9
- * For the full copyright and license information, please view the LICENSE
10
- * file that was distributed with this source code.
11
- */
12
-
13
- namespace Composer\Util;
14
-
15
- use Composer\IO\IOInterface;
16
- use Symfony\Component\Process\Process;
17
- use Symfony\Component\Process\ProcessUtils;
18
-
19
- /**
20
- * @author Robert Schönthal <seroscho@googlemail.com>
21
- */
22
- class ProcessExecutor
23
- {
24
- protected static $timeout = 300;
25
-
26
- protected $captureOutput;
27
- protected $errorOutput;
28
- protected $io;
29
-
30
- public function __construct(IOInterface $io = null)
31
- {
32
- $this->io = $io;
33
- }
34
-
35
- /**
36
- * runs a process on the commandline
37
- *
38
- * @param string $command the command to execute
39
- * @param mixed $output the output will be written into this var if passed by ref
40
- * if a callable is passed it will be used as output handler
41
- * @param string $cwd the working directory
42
- * @return int statuscode
43
- */
44
- public function execute($command, &$output = null, $cwd = null)
45
- {
46
- if ($this->io && $this->io->isDebug()) {
47
- $safeCommand = preg_replace_callback('{://(?P<user>[^:/\s]+):(?P<password>[^@\s/]+)@}i', function ($m) {
48
- if (preg_match('{^[a-f0-9]{12,}$}', $m['user'])) {
49
- return '://***:***@';
50
- }
51
-
52
- return '://'.$m['user'].':***@';
53
- }, $command);
54
- $this->io->writeError('Executing command ('.($cwd ?: 'CWD').'): '.$safeCommand);
55
- }
56
-
57
- // make sure that null translate to the proper directory in case the dir is a symlink
58
- // and we call a git command, because msysgit does not handle symlinks properly
59
- if (null === $cwd && Platform::isWindows() && false !== strpos($command, 'git') && getcwd()) {
60
- $cwd = realpath(getcwd());
61
- }
62
-
63
- $this->captureOutput = func_num_args() > 1;
64
- $this->errorOutput = null;
65
- $process = new Process($command, $cwd, null, null, static::getTimeout());
66
-
67
- $callback = is_callable($output) ? $output : array($this, 'outputHandler');
68
- $process->run($callback);
69
-
70
- if ($this->captureOutput && !is_callable($output)) {
71
- $output = $process->getOutput();
72
- }
73
-
74
- $this->errorOutput = $process->getErrorOutput();
75
-
76
- return $process->getExitCode();
77
- }
78
-
79
- public function splitLines($output)
80
- {
81
- $output = trim($output);
82
-
83
- return ((string) $output === '') ? array() : preg_split('{\r?\n}', $output);
84
- }
85
-
86
- /**
87
- * Get any error output from the last command
88
- *
89
- * @return string
90
- */
91
- public function getErrorOutput()
92
- {
93
- return $this->errorOutput;
94
- }
95
-
96
- public function outputHandler($type, $buffer)
97
- {
98
- if ($this->captureOutput) {
99
- return;
100
- }
101
-
102
- if (null === $this->io) {
103
- echo $buffer;
104
-
105
- return;
106
- }
107
-
108
- if (Process::ERR === $type) {
109
- $this->io->writeError($buffer, false);
110
- } else {
111
- $this->io->write($buffer, false);
112
- }
113
- }
114
-
115
- public static function getTimeout()
116
- {
117
- return static::$timeout;
118
- }
119
-
120
- public static function setTimeout($timeout)
121
- {
122
- static::$timeout = $timeout;
123
- }
124
-
125
- /**
126
- * Escapes a string to be used as a shell argument.
127
- *
128
- * @param string $argument The argument that will be escaped
129
- *
130
- * @return string The escaped argument
131
- */
132
- public static function escape($argument)
133
- {
134
- return self::escapeArgument($argument);
135
- }
136
-
137
- /**
138
- * Copy of ProcessUtils::escapeArgument() that is deprecated in Symfony 3.3 and removed in Symfony 4.
139
- *
140
- * @param string $argument
141
- *
142
- * @return string
143
- */
144
- private static function escapeArgument($argument)
145
- {
146
- //Fix for PHP bug #43784 escapeshellarg removes % from given string
147
- //Fix for PHP bug #49446 escapeshellarg doesn't work on Windows
148
- //@see https://bugs.php.net/bug.php?id=43784
149
- //@see https://bugs.php.net/bug.php?id=49446
150
- if ('\\' === DIRECTORY_SEPARATOR) {
151
- if ('' === $argument) {
152
- return escapeshellarg($argument);
153
- }
154
-
155
- $escapedArgument = '';
156
- $quote = false;
157
- foreach (preg_split('/(")/', $argument, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE) as $part) {
158
- if ('"' === $part) {
159
- $escapedArgument .= '\\"';
160
- } elseif (self::isSurroundedBy($part, '%')) {
161
- // Avoid environment variable expansion
162
- $escapedArgument .= '^%"'.substr($part, 1, -1).'"^%';
163
- } else {
164
- // escape trailing backslash
165
- if ('\\' === substr($part, -1)) {
166
- $part .= '\\';
167
- }
168
- $quote = true;
169
- $escapedArgument .= $part;
170
- }
171
- }
172
- if ($quote) {
173
- $escapedArgument = '"'.$escapedArgument.'"';
174
- }
175
-
176
- return $escapedArgument;
177
- }
178
-
179
- return "'".str_replace("'", "'\\''", $argument)."'";
180
- }
181
-
182
- private static function isSurroundedBy($arg, $char)
183
- {
184
- return 2 < strlen($arg) && $char === $arg[0] && $char === $arg[strlen($arg) - 1];
185
- }
186
- }
@@ -1,1093 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * This file is part of Composer.
5
- *
6
- * (c) Nils Adermann <naderman@naderman.de>
7
- * Jordi Boggiano <j.boggiano@seld.be>
8
- *
9
- * For the full copyright and license information, please view the LICENSE
10
- * file that was distributed with this source code.
11
- */
12
-
13
- namespace Composer\Util;
14
-
15
- use Composer\Config;
16
- use Composer\IO\IOInterface;
17
- use Composer\Downloader\TransportException;
18
- use Composer\CaBundle\CaBundle;
19
- use Psr\Log\LoggerInterface;
20
-
21
- /**
22
- * @author François Pluchino <francois.pluchino@opendisplay.com>
23
- * @author Jordi Boggiano <j.boggiano@seld.be>
24
- * @author Nils Adermann <naderman@naderman.de>
25
- */
26
- class RemoteFilesystem
27
- {
28
- private $io;
29
- private $config;
30
- private $scheme;
31
- private $bytesMax;
32
- private $originUrl;
33
- private $fileUrl;
34
- private $fileName;
35
- private $retry;
36
- private $progress;
37
- private $lastProgress;
38
- private $options = array();
39
- private $peerCertificateMap = array();
40
- private $disableTls = false;
41
- private $retryAuthFailure;
42
- private $lastHeaders;
43
- private $storeAuth;
44
- private $degradedMode = false;
45
- private $redirects;
46
- private $maxRedirects = 20;
47
-
48
- /**
49
- * Constructor.
50
- *
51
- * @param IOInterface $io The IO instance
52
- * @param Config $config The config
53
- * @param array $options The options
54
- * @param bool $disableTls
55
- */
56
- public function __construct(IOInterface $io, Config $config = null, array $options = array(), $disableTls = false)
57
- {
58
- $this->io = $io;
59
-
60
- // Setup TLS options
61
- // The cafile option can be set via config.json
62
- if ($disableTls === false) {
63
- $this->options = $this->getTlsDefaults($options);
64
- } else {
65
- $this->disableTls = true;
66
- }
67
-
68
- // handle the other externally set options normally.
69
- $this->options = array_replace_recursive($this->options, $options);
70
- $this->config = $config;
71
- }
72
-
73
- /**
74
- * Copy the remote file in local.
75
- *
76
- * @param string $originUrl The origin URL
77
- * @param string $fileUrl The file URL
78
- * @param string $fileName the local filename
79
- * @param bool $progress Display the progression
80
- * @param array $options Additional context options
81
- *
82
- * @return bool true
83
- */
84
- public function copy($originUrl, $fileUrl, $fileName, $progress = true, $options = array())
85
- {
86
- return $this->get($originUrl, $fileUrl, $options, $fileName, $progress);
87
- }
88
-
89
- /**
90
- * Get the content.
91
- *
92
- * @param string $originUrl The origin URL
93
- * @param string $fileUrl The file URL
94
- * @param bool $progress Display the progression
95
- * @param array $options Additional context options
96
- *
97
- * @return bool|string The content
98
- */
99
- public function getContents($originUrl, $fileUrl, $progress = true, $options = array())
100
- {
101
- return $this->get($originUrl, $fileUrl, $options, null, $progress);
102
- }
103
-
104
- /**
105
- * Retrieve the options set in the constructor
106
- *
107
- * @return array Options
108
- */
109
- public function getOptions()
110
- {
111
- return $this->options;
112
- }
113
-
114
- /**
115
- * Merges new options
116
- *
117
- * @param array $options
118
- */
119
- public function setOptions(array $options)
120
- {
121
- $this->options = array_replace_recursive($this->options, $options);
122
- }
123
-
124
- /**
125
- * Check is disable TLS.
126
- *
127
- * @return bool
128
- */
129
- public function isTlsDisabled()
130
- {
131
- return $this->disableTls === true;
132
- }
133
-
134
- /**
135
- * Returns the headers of the last request
136
- *
137
- * @return array
138
- */
139
- public function getLastHeaders()
140
- {
141
- return $this->lastHeaders;
142
- }
143
-
144
- /**
145
- * @param array $headers array of returned headers like from getLastHeaders()
146
- * @param string $name header name (case insensitive)
147
- * @return string|null
148
- */
149
- public function findHeaderValue(array $headers, $name)
150
- {
151
- $value = null;
152
- foreach ($headers as $header) {
153
- if (preg_match('{^'.$name.':\s*(.+?)\s*$}i', $header, $match)) {
154
- $value = $match[1];
155
- } elseif (preg_match('{^HTTP/}i', $header)) {
156
- // In case of redirects, http_response_headers contains the headers of all responses
157
- // so we reset the flag when a new response is being parsed as we are only interested in the last response
158
- $value = null;
159
- }
160
- }
161
-
162
- return $value;
163
- }
164
-
165
- /**
166
- * @param array $headers array of returned headers like from getLastHeaders()
167
- * @return int|null
168
- */
169
- public function findStatusCode(array $headers)
170
- {
171
- $value = null;
172
- foreach ($headers as $header) {
173
- if (preg_match('{^HTTP/\S+ (\d+)}i', $header, $match)) {
174
- // In case of redirects, http_response_headers contains the headers of all responses
175
- // so we can not return directly and need to keep iterating
176
- $value = (int) $match[1];
177
- }
178
- }
179
-
180
- return $value;
181
- }
182
-
183
- /**
184
- * @param array $headers array of returned headers like from getLastHeaders()
185
- * @return string|null
186
- */
187
- public function findStatusMessage(array $headers)
188
- {
189
- $value = null;
190
- foreach ($headers as $header) {
191
- if (preg_match('{^HTTP/\S+ \d+}i', $header)) {
192
- // In case of redirects, http_response_headers contains the headers of all responses
193
- // so we can not return directly and need to keep iterating
194
- $value = $header;
195
- }
196
- }
197
-
198
- return $value;
199
- }
200
-
201
- /**
202
- * Get file content or copy action.
203
- *
204
- * @param string $originUrl The origin URL
205
- * @param string $fileUrl The file URL
206
- * @param array $additionalOptions context options
207
- * @param string $fileName the local filename
208
- * @param bool $progress Display the progression
209
- *
210
- * @throws TransportException|\Exception
211
- * @throws TransportException When the file could not be downloaded
212
- *
213
- * @return bool|string
214
- */
215
- protected function get($originUrl, $fileUrl, $additionalOptions = array(), $fileName = null, $progress = true)
216
- {
217
- if (strpos($originUrl, '.github.com') === (strlen($originUrl) - 11)) {
218
- $originUrl = 'github.com';
219
- }
220
-
221
- // Gitlab can be installed in a non-root context (i.e. gitlab.com/foo). When downloading archives the originUrl
222
- // is the host without the path, so we look for the registered gitlab-domains matching the host here
223
- if (
224
- $this->config
225
- && is_array($this->config->get('gitlab-domains'))
226
- && false === strpos($originUrl, '/')
227
- && !in_array($originUrl, $this->config->get('gitlab-domains'))
228
- ) {
229
- foreach ($this->config->get('gitlab-domains') as $gitlabDomain) {
230
- if (0 === strpos($gitlabDomain, $originUrl)) {
231
- $originUrl = $gitlabDomain;
232
- break;
233
- }
234
- }
235
- unset($gitlabDomain);
236
- }
237
-
238
- $this->scheme = parse_url($fileUrl, PHP_URL_SCHEME);
239
- $this->bytesMax = 0;
240
- $this->originUrl = $originUrl;
241
- $this->fileUrl = $fileUrl;
242
- $this->fileName = $fileName;
243
- $this->progress = $progress;
244
- $this->lastProgress = null;
245
- $this->retryAuthFailure = true;
246
- $this->lastHeaders = array();
247
- $this->redirects = 1; // The first request counts.
248
-
249
- // capture username/password from URL if there is one
250
- if (preg_match('{^https?://([^:/]+):([^@/]+)@([^/]+)}i', $fileUrl, $match)) {
251
- $this->io->setAuthentication($originUrl, rawurldecode($match[1]), rawurldecode($match[2]));
252
- }
253
-
254
- $tempAdditionalOptions = $additionalOptions;
255
- if (isset($tempAdditionalOptions['retry-auth-failure'])) {
256
- $this->retryAuthFailure = (bool) $tempAdditionalOptions['retry-auth-failure'];
257
-
258
- unset($tempAdditionalOptions['retry-auth-failure']);
259
- }
260
-
261
- $isRedirect = false;
262
- if (isset($tempAdditionalOptions['redirects'])) {
263
- $this->redirects = $tempAdditionalOptions['redirects'];
264
- $isRedirect = true;
265
-
266
- unset($tempAdditionalOptions['redirects']);
267
- }
268
-
269
- $options = $this->getOptionsForUrl($originUrl, $tempAdditionalOptions);
270
- unset($tempAdditionalOptions);
271
-
272
- $origFileUrl = $fileUrl;
273
-
274
- if (isset($options['github-token'])) {
275
- // only add the access_token if it is actually a github URL (in case we were redirected to S3)
276
- if (preg_match('{^https?://([a-z0-9-]+\.)*github\.com/}', $fileUrl)) {
277
- $fileUrl .= (false === strpos($fileUrl, '?') ? '?' : '&') . 'access_token='.$options['github-token'];
278
- }
279
- unset($options['github-token']);
280
- }
281
-
282
- if (isset($options['gitlab-token'])) {
283
- $fileUrl .= (false === strpos($fileUrl, '?') ? '?' : '&') . 'access_token='.$options['gitlab-token'];
284
- unset($options['gitlab-token']);
285
- }
286
-
287
- if (isset($options['http'])) {
288
- $options['http']['ignore_errors'] = true;
289
- }
290
-
291
- if ($this->degradedMode && substr($fileUrl, 0, 26) === 'http://repo.packagist.org/') {
292
- // access packagist using the resolved IPv4 instead of the hostname to force IPv4 protocol
293
- $fileUrl = 'http://' . gethostbyname('repo.packagist.org') . substr($fileUrl, 20);
294
- $degradedPackagist = true;
295
- }
296
-
297
- $ctx = StreamContextFactory::getContext($fileUrl, $options, array('notification' => array($this, 'callbackGet')));
298
-
299
- $actualContextOptions = stream_context_get_options($ctx);
300
- $usingProxy = !empty($actualContextOptions['http']['proxy']) ? ' using proxy ' . $actualContextOptions['http']['proxy'] : '';
301
- $this->io->writeError((substr($origFileUrl, 0, 4) === 'http' ? 'Downloading ' : 'Reading ') . $origFileUrl . $usingProxy, true, IOInterface::DEBUG);
302
- unset($origFileUrl, $actualContextOptions);
303
-
304
- // Check for secure HTTP, but allow insecure Packagist calls to $hashed providers as file integrity is verified with sha256
305
- if ((!preg_match('{^http://(repo\.)?packagist\.org/p/}', $fileUrl) || (false === strpos($fileUrl, '$') && false === strpos($fileUrl, '%24'))) && empty($degradedPackagist) && $this->config) {
306
- $this->config->prohibitUrlByConfig($fileUrl, $this->io);
307
- }
308
-
309
- if ($this->progress && !$isRedirect) {
310
- $this->io->writeError("Downloading (<comment>connecting...</comment>)", false);
311
- }
312
-
313
- $errorMessage = '';
314
- $errorCode = 0;
315
- $result = false;
316
- set_error_handler(function ($code, $msg) use (&$errorMessage) {
317
- if ($errorMessage) {
318
- $errorMessage .= "\n";
319
- }
320
- $errorMessage .= preg_replace('{^file_get_contents\(.*?\): }', '', $msg);
321
- });
322
- try {
323
- $result = $this->getRemoteContents($originUrl, $fileUrl, $ctx, $http_response_header);
324
-
325
- if (!empty($http_response_header[0])) {
326
- $statusCode = $this->findStatusCode($http_response_header);
327
- if (in_array($statusCode, array(401, 403)) && $this->retryAuthFailure) {
328
- $warning = null;
329
- if ($this->findHeaderValue($http_response_header, 'content-type') === 'application/json') {
330
- $data = json_decode($result, true);
331
- if (!empty($data['warning'])) {
332
- $warning = $data['warning'];
333
- }
334
- }
335
- $this->promptAuthAndRetry($statusCode, $this->findStatusMessage($http_response_header), $warning, $http_response_header);
336
- }
337
- }
338
-
339
- $contentLength = !empty($http_response_header[0]) ? $this->findHeaderValue($http_response_header, 'content-length') : null;
340
- if ($contentLength && Platform::strlen($result) < $contentLength) {
341
- // alas, this is not possible via the stream callback because STREAM_NOTIFY_COMPLETED is documented, but not implemented anywhere in PHP
342
- $e = new TransportException('Content-Length mismatch, received '.Platform::strlen($result).' bytes out of the expected '.$contentLength);
343
- $e->setHeaders($http_response_header);
344
- $e->setStatusCode($this->findStatusCode($http_response_header));
345
- $e->setResponse($result);
346
- $this->io->writeError('Content-Length mismatch, received '.Platform::strlen($result).' out of '.$contentLength.' bytes: (' . base64_encode($result).')', true, IOInterface::DEBUG);
347
-
348
- throw $e;
349
- }
350
-
351
- if (PHP_VERSION_ID < 50600 && !empty($options['ssl']['peer_fingerprint'])) {
352
- // Emulate fingerprint validation on PHP < 5.6
353
- $params = stream_context_get_params($ctx);
354
- $expectedPeerFingerprint = $options['ssl']['peer_fingerprint'];
355
- $peerFingerprint = TlsHelper::getCertificateFingerprint($params['options']['ssl']['peer_certificate']);
356
-
357
- // Constant time compare??!
358
- if ($expectedPeerFingerprint !== $peerFingerprint) {
359
- throw new TransportException('Peer fingerprint did not match');
360
- }
361
- }
362
- } catch (\Exception $e) {
363
- if ($e instanceof TransportException && !empty($http_response_header[0])) {
364
- $e->setHeaders($http_response_header);
365
- $e->setStatusCode($this->findStatusCode($http_response_header));
366
- }
367
- if ($e instanceof TransportException && $result !== false) {
368
- $e->setResponse($result);
369
- }
370
- $result = false;
371
- }
372
- if ($errorMessage && !filter_var(ini_get('allow_url_fopen'), FILTER_VALIDATE_BOOLEAN)) {
373
- $errorMessage = 'allow_url_fopen must be enabled in php.ini ('.$errorMessage.')';
374
- }
375
- restore_error_handler();
376
- if (isset($e) && !$this->retry) {
377
- if (!$this->degradedMode && false !== strpos($e->getMessage(), 'Operation timed out')) {
378
- $this->degradedMode = true;
379
- $this->io->writeError('');
380
- $this->io->writeError(array(
381
- '<error>'.$e->getMessage().'</error>',
382
- '<error>Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info</error>',
383
- ));
384
-
385
- return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress);
386
- }
387
-
388
- throw $e;
389
- }
390
-
391
- $statusCode = null;
392
- $contentType = null;
393
- $locationHeader = null;
394
- if (!empty($http_response_header[0])) {
395
- $statusCode = $this->findStatusCode($http_response_header);
396
- $contentType = $this->findHeaderValue($http_response_header, 'content-type');
397
- $locationHeader = $this->findHeaderValue($http_response_header, 'location');
398
- }
399
-
400
- // check for bitbucket login page asking to authenticate
401
- if ($originUrl === 'bitbucket.org'
402
- && !$this->isPublicBitBucketDownload($fileUrl)
403
- && substr($fileUrl, -4) === '.zip'
404
- && (!$locationHeader || substr($locationHeader, -4) !== '.zip')
405
- && $contentType && preg_match('{^text/html\b}i', $contentType)
406
- ) {
407
- $result = false;
408
- if ($this->retryAuthFailure) {
409
- $this->promptAuthAndRetry(401);
410
- }
411
- }
412
-
413
- // check for gitlab 404 when downloading archives
414
- if ($statusCode === 404
415
- && $this->config && in_array($originUrl, $this->config->get('gitlab-domains'), true)
416
- && false !== strpos($fileUrl, 'archive.zip')
417
- ) {
418
- $result = false;
419
- if ($this->retryAuthFailure) {
420
- $this->promptAuthAndRetry(401);
421
- }
422
- }
423
-
424
- // handle 3xx redirects, 304 Not Modified is excluded
425
- $hasFollowedRedirect = false;
426
- if ($statusCode >= 300 && $statusCode <= 399 && $statusCode !== 304 && $this->redirects < $this->maxRedirects) {
427
- $hasFollowedRedirect = true;
428
- $result = $this->handleRedirect($http_response_header, $additionalOptions, $result);
429
- }
430
-
431
- // fail 4xx and 5xx responses and capture the response
432
- if ($statusCode && $statusCode >= 400 && $statusCode <= 599) {
433
- if (!$this->retry) {
434
- if ($this->progress && !$this->retry && !$isRedirect) {
435
- $this->io->overwriteError("Downloading (<error>failed</error>)", false);
436
- }
437
-
438
- $e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded ('.$http_response_header[0].')', $statusCode);
439
- $e->setHeaders($http_response_header);
440
- $e->setResponse($result);
441
- $e->setStatusCode($statusCode);
442
- throw $e;
443
- }
444
- $result = false;
445
- }
446
-
447
- if ($this->progress && !$this->retry && !$isRedirect) {
448
- $this->io->overwriteError("Downloading (".($result === false ? '<error>failed</error>' : '<comment>100%</comment>').")", false);
449
- }
450
-
451
- // decode gzip
452
- if ($result && extension_loaded('zlib') && substr($fileUrl, 0, 4) === 'http' && !$hasFollowedRedirect) {
453
- $contentEncoding = $this->findHeaderValue($http_response_header, 'content-encoding');
454
- $decode = $contentEncoding && 'gzip' === strtolower($contentEncoding);
455
-
456
- if ($decode) {
457
- try {
458
- if (PHP_VERSION_ID >= 50400) {
459
- $result = zlib_decode($result);
460
- } else {
461
- // work around issue with gzuncompress & co that do not work with all gzip checksums
462
- $result = file_get_contents('compress.zlib://data:application/octet-stream;base64,'.base64_encode($result));
463
- }
464
-
465
- if (!$result) {
466
- throw new TransportException('Failed to decode zlib stream');
467
- }
468
- } catch (\Exception $e) {
469
- if ($this->degradedMode) {
470
- throw $e;
471
- }
472
-
473
- $this->degradedMode = true;
474
- $this->io->writeError(array(
475
- '',
476
- '<error>Failed to decode response: '.$e->getMessage().'</error>',
477
- '<error>Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info</error>',
478
- ));
479
-
480
- return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress);
481
- }
482
- }
483
- }
484
-
485
- // handle copy command if download was successful
486
- if (false !== $result && null !== $fileName && !$isRedirect) {
487
- if ('' === $result) {
488
- throw new TransportException('"'.$this->fileUrl.'" appears broken, and returned an empty 200 response');
489
- }
490
-
491
- $errorMessage = '';
492
- set_error_handler(function ($code, $msg) use (&$errorMessage) {
493
- if ($errorMessage) {
494
- $errorMessage .= "\n";
495
- }
496
- $errorMessage .= preg_replace('{^file_put_contents\(.*?\): }', '', $msg);
497
- });
498
- $result = (bool) file_put_contents($fileName, $result);
499
- restore_error_handler();
500
- if (false === $result) {
501
- throw new TransportException('The "'.$this->fileUrl.'" file could not be written to '.$fileName.': '.$errorMessage);
502
- }
503
- }
504
-
505
- // Handle SSL cert match issues
506
- if (false === $result && false !== strpos($errorMessage, 'Peer certificate') && PHP_VERSION_ID < 50600) {
507
- // Certificate name error, PHP doesn't support subjectAltName on PHP < 5.6
508
- // The procedure to handle sAN for older PHP's is:
509
- //
510
- // 1. Open socket to remote server and fetch certificate (disabling peer
511
- // validation because PHP errors without giving up the certificate.)
512
- //
513
- // 2. Verifying the domain in the URL against the names in the sAN field.
514
- // If there is a match record the authority [host/port], certificate
515
- // common name, and certificate fingerprint.
516
- //
517
- // 3. Retry the original request but changing the CN_match parameter to
518
- // the common name extracted from the certificate in step 2.
519
- //
520
- // 4. To prevent any attempt at being hoodwinked by switching the
521
- // certificate between steps 2 and 3 the fingerprint of the certificate
522
- // presented in step 3 is compared against the one recorded in step 2.
523
- if (CaBundle::isOpensslParseSafe()) {
524
- $certDetails = $this->getCertificateCnAndFp($this->fileUrl, $options);
525
-
526
- if ($certDetails) {
527
- $this->peerCertificateMap[$this->getUrlAuthority($this->fileUrl)] = $certDetails;
528
-
529
- $this->retry = true;
530
- }
531
- } else {
532
- $this->io->writeError('');
533
- $this->io->writeError(sprintf(
534
- '<error>Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.</error>',
535
- PHP_VERSION
536
- ));
537
- }
538
- }
539
-
540
- if ($this->retry) {
541
- $this->retry = false;
542
-
543
- $result = $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress);
544
-
545
- if ($this->storeAuth && $this->config) {
546
- $authHelper = new AuthHelper($this->io, $this->config);
547
- $authHelper->storeAuth($this->originUrl, $this->storeAuth);
548
- $this->storeAuth = false;
549
- }
550
-
551
- return $result;
552
- }
553
-
554
- if (false === $result) {
555
- $e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded: '.$errorMessage, $errorCode);
556
- if (!empty($http_response_header[0])) {
557
- $e->setHeaders($http_response_header);
558
- }
559
-
560
- if (!$this->degradedMode && false !== strpos($e->getMessage(), 'Operation timed out')) {
561
- $this->degradedMode = true;
562
- $this->io->writeError('');
563
- $this->io->writeError(array(
564
- '<error>'.$e->getMessage().'</error>',
565
- '<error>Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info</error>',
566
- ));
567
-
568
- return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress);
569
- }
570
-
571
- throw $e;
572
- }
573
-
574
- if (!empty($http_response_header[0])) {
575
- $this->lastHeaders = $http_response_header;
576
- }
577
-
578
- return $result;
579
- }
580
-
581
- /**
582
- * Get contents of remote URL.
583
- *
584
- * @param string $originUrl The origin URL
585
- * @param string $fileUrl The file URL
586
- * @param resource $context The stream context
587
- *
588
- * @return string|false The response contents or false on failure
589
- */
590
- protected function getRemoteContents($originUrl, $fileUrl, $context, array &$responseHeaders = null)
591
- {
592
- try {
593
- $e = null;
594
- $result = file_get_contents($fileUrl, false, $context);
595
- } catch (\Throwable $e) {
596
- } catch (\Exception $e) {
597
- }
598
-
599
- $responseHeaders = isset($http_response_header) ? $http_response_header : array();
600
-
601
- if (null !== $e) {
602
- throw $e;
603
- }
604
-
605
- return $result;
606
- }
607
-
608
- /**
609
- * Get notification action.
610
- *
611
- * @param int $notificationCode The notification code
612
- * @param int $severity The severity level
613
- * @param string $message The message
614
- * @param int $messageCode The message code
615
- * @param int $bytesTransferred The loaded size
616
- * @param int $bytesMax The total size
617
- * @throws TransportException
618
- */
619
- protected function callbackGet($notificationCode, $severity, $message, $messageCode, $bytesTransferred, $bytesMax)
620
- {
621
- switch ($notificationCode) {
622
- case STREAM_NOTIFY_FAILURE:
623
- if (400 === $messageCode) {
624
- // This might happen if your host is secured by ssl client certificate authentication
625
- // but you do not send an appropriate certificate
626
- throw new TransportException("The '" . $this->fileUrl . "' URL could not be accessed: " . $message, $messageCode);
627
- }
628
- break;
629
-
630
- case STREAM_NOTIFY_FILE_SIZE_IS:
631
- $this->bytesMax = $bytesMax;
632
- break;
633
-
634
- case STREAM_NOTIFY_PROGRESS:
635
- if ($this->bytesMax > 0 && $this->progress) {
636
- $progression = min(100, round($bytesTransferred / $this->bytesMax * 100));
637
-
638
- if ((0 === $progression % 5) && 100 !== $progression && $progression !== $this->lastProgress) {
639
- $this->lastProgress = $progression;
640
- $this->io->overwriteError("Downloading (<comment>$progression%</comment>)", false);
641
- }
642
- }
643
- break;
644
-
645
- default:
646
- break;
647
- }
648
- }
649
-
650
- protected function promptAuthAndRetry($httpStatus, $reason = null, $warning = null, $headers = array())
651
- {
652
- if ($this->config && in_array($this->originUrl, $this->config->get('github-domains'), true)) {
653
- $gitHubUtil = new GitHub($this->io, $this->config, null);
654
- $message = "\n";
655
-
656
- $rateLimited = $gitHubUtil->isRateLimited($headers);
657
- if ($rateLimited) {
658
- $rateLimit = $gitHubUtil->getRateLimit($headers);
659
- if ($this->io->hasAuthentication($this->originUrl)) {
660
- $message = 'Review your configured GitHub OAuth token or enter a new one to go over the API rate limit.';
661
- } else {
662
- $message = 'Create a GitHub OAuth token to go over the API rate limit.';
663
- }
664
-
665
- $message = sprintf(
666
- 'GitHub API limit (%d calls/hr) is exhausted, could not fetch '.$this->fileUrl.'. '.$message.' You can also wait until %s for the rate limit to reset.',
667
- $rateLimit['limit'],
668
- $rateLimit['reset']
669
- )."\n";
670
- } else {
671
- $message .= 'Could not fetch '.$this->fileUrl.', please ';
672
- if ($this->io->hasAuthentication($this->originUrl)) {
673
- $message .= 'review your configured GitHub OAuth token or enter a new one to access private repos';
674
- } else {
675
- $message .= 'create a GitHub OAuth token to access private repos';
676
- }
677
- }
678
-
679
- if (!$gitHubUtil->authorizeOAuth($this->originUrl)
680
- && (!$this->io->isInteractive() || !$gitHubUtil->authorizeOAuthInteractively($this->originUrl, $message))
681
- ) {
682
- throw new TransportException('Could not authenticate against '.$this->originUrl, 401);
683
- }
684
- } elseif ($this->config && in_array($this->originUrl, $this->config->get('gitlab-domains'), true)) {
685
- $message = "\n".'Could not fetch '.$this->fileUrl.', enter your ' . $this->originUrl . ' credentials ' .($httpStatus === 401 ? 'to access private repos' : 'to go over the API rate limit');
686
- $gitLabUtil = new GitLab($this->io, $this->config, null);
687
-
688
- if ($this->io->hasAuthentication($this->originUrl) && ($auth = $this->io->getAuthentication($this->originUrl)) && $auth['password'] === 'private-token') {
689
- throw new TransportException("Invalid credentials for '" . $this->fileUrl . "', aborting.", $httpStatus);
690
- }
691
-
692
- if (!$gitLabUtil->authorizeOAuth($this->originUrl)
693
- && (!$this->io->isInteractive() || !$gitLabUtil->authorizeOAuthInteractively($this->scheme, $this->originUrl, $message))
694
- ) {
695
- throw new TransportException('Could not authenticate against '.$this->originUrl, 401);
696
- }
697
- } elseif ($this->config && $this->originUrl === 'bitbucket.org') {
698
- $askForOAuthToken = true;
699
- if ($this->io->hasAuthentication($this->originUrl)) {
700
- $auth = $this->io->getAuthentication($this->originUrl);
701
- if ($auth['username'] !== 'x-token-auth') {
702
- $bitbucketUtil = new Bitbucket($this->io, $this->config);
703
- $accessToken = $bitbucketUtil->requestToken($this->originUrl, $auth['username'], $auth['password']);
704
- if (!empty($accessToken)) {
705
- $this->io->setAuthentication($this->originUrl, 'x-token-auth', $accessToken);
706
- $askForOAuthToken = false;
707
- }
708
- } else {
709
- throw new TransportException('Could not authenticate against ' . $this->originUrl, 401);
710
- }
711
- }
712
-
713
- if ($askForOAuthToken) {
714
- $message = "\n".'Could not fetch ' . $this->fileUrl . ', please create a bitbucket OAuth token to ' . (($httpStatus === 401 || $httpStatus === 403) ? 'access private repos' : 'go over the API rate limit');
715
- $bitBucketUtil = new Bitbucket($this->io, $this->config);
716
- if (! $bitBucketUtil->authorizeOAuth($this->originUrl)
717
- && (! $this->io->isInteractive() || !$bitBucketUtil->authorizeOAuthInteractively($this->originUrl, $message))
718
- ) {
719
- throw new TransportException('Could not authenticate against ' . $this->originUrl, 401);
720
- }
721
- }
722
- } else {
723
- // 404s are only handled for github
724
- if ($httpStatus === 404) {
725
- return;
726
- }
727
-
728
- // fail if the console is not interactive
729
- if (!$this->io->isInteractive()) {
730
- if ($httpStatus === 401) {
731
- $message = "The '" . $this->fileUrl . "' URL required authentication.\nYou must be using the interactive console to authenticate";
732
- }
733
- if ($httpStatus === 403) {
734
- $message = "The '" . $this->fileUrl . "' URL could not be accessed: " . $reason;
735
- }
736
-
737
- throw new TransportException($message, $httpStatus);
738
- }
739
- // fail if we already have auth
740
- if ($this->io->hasAuthentication($this->originUrl)) {
741
- throw new TransportException("Invalid credentials for '" . $this->fileUrl . "', aborting.", $httpStatus);
742
- }
743
-
744
- $this->io->overwriteError('');
745
- if ($warning) {
746
- $this->io->writeError(' <warning>'.$warning.'</warning>');
747
- }
748
- $this->io->writeError(' Authentication required (<info>'.parse_url($this->fileUrl, PHP_URL_HOST).'</info>):');
749
- $username = $this->io->ask(' Username: ');
750
- $password = $this->io->askAndHideAnswer(' Password: ');
751
- $this->io->setAuthentication($this->originUrl, $username, $password);
752
- $this->storeAuth = $this->config->get('store-auths');
753
- }
754
-
755
- $this->retry = true;
756
- throw new TransportException('RETRY');
757
- }
758
-
759
- protected function getOptionsForUrl($originUrl, $additionalOptions)
760
- {
761
- $tlsOptions = array();
762
-
763
- // Setup remaining TLS options - the matching may need monitoring, esp. www vs none in CN
764
- if ($this->disableTls === false && PHP_VERSION_ID < 50600 && !stream_is_local($this->fileUrl)) {
765
- $host = parse_url($this->fileUrl, PHP_URL_HOST);
766
-
767
- if (PHP_VERSION_ID < 50304) {
768
- // PHP < 5.3.4 does not support follow_location, for those people
769
- // do some really nasty hard coded transformations. These will
770
- // still breakdown if the site redirects to a domain we don't
771
- // expect.
772
-
773
- if ($host === 'github.com' || $host === 'api.github.com') {
774
- $host = '*.github.com';
775
- }
776
- }
777
-
778
- $tlsOptions['ssl']['CN_match'] = $host;
779
- $tlsOptions['ssl']['SNI_server_name'] = $host;
780
-
781
- $urlAuthority = $this->getUrlAuthority($this->fileUrl);
782
-
783
- if (isset($this->peerCertificateMap[$urlAuthority])) {
784
- // Handle subjectAltName on lesser PHP's.
785
- $certMap = $this->peerCertificateMap[$urlAuthority];
786
-
787
- $this->io->writeError('', true, IOInterface::DEBUG);
788
- $this->io->writeError(sprintf(
789
- 'Using <info>%s</info> as CN for subjectAltName enabled host <info>%s</info>',
790
- $certMap['cn'],
791
- $urlAuthority
792
- ), true, IOInterface::DEBUG);
793
-
794
- $tlsOptions['ssl']['CN_match'] = $certMap['cn'];
795
- $tlsOptions['ssl']['peer_fingerprint'] = $certMap['fp'];
796
- } elseif (!CaBundle::isOpensslParseSafe() && $host === 'repo.packagist.org') {
797
- // handle subjectAltName for packagist.org's repo domain on very old PHPs
798
- $tlsOptions['ssl']['CN_match'] = 'packagist.org';
799
- }
800
- }
801
-
802
- $headers = array();
803
-
804
- if (extension_loaded('zlib')) {
805
- $headers[] = 'Accept-Encoding: gzip';
806
- }
807
-
808
- $options = array_replace_recursive($this->options, $tlsOptions, $additionalOptions);
809
- if (!$this->degradedMode) {
810
- // degraded mode disables HTTP/1.1 which causes issues with some bad
811
- // proxies/software due to the use of chunked encoding
812
- $options['http']['protocol_version'] = 1.1;
813
- $headers[] = 'Connection: close';
814
- }
815
-
816
- if ($this->io->hasAuthentication($originUrl)) {
817
- $auth = $this->io->getAuthentication($originUrl);
818
- if ('github.com' === $originUrl && 'x-oauth-basic' === $auth['password']) {
819
- $options['github-token'] = $auth['username'];
820
- } elseif ($this->config && in_array($originUrl, $this->config->get('gitlab-domains'), true)) {
821
- if ($auth['password'] === 'oauth2') {
822
- $headers[] = 'Authorization: Bearer '.$auth['username'];
823
- } elseif ($auth['password'] === 'private-token') {
824
- $headers[] = 'PRIVATE-TOKEN: '.$auth['username'];
825
- }
826
- } elseif ('bitbucket.org' === $originUrl
827
- && $this->fileUrl !== Bitbucket::OAUTH2_ACCESS_TOKEN_URL && 'x-token-auth' === $auth['username']
828
- ) {
829
- if (!$this->isPublicBitBucketDownload($this->fileUrl)) {
830
- $headers[] = 'Authorization: Bearer ' . $auth['password'];
831
- }
832
- } else {
833
- $authStr = base64_encode($auth['username'] . ':' . $auth['password']);
834
- $headers[] = 'Authorization: Basic '.$authStr;
835
- }
836
- }
837
-
838
- $options['http']['follow_location'] = 0;
839
-
840
- if (isset($options['http']['header']) && !is_array($options['http']['header'])) {
841
- $options['http']['header'] = explode("\r\n", trim($options['http']['header'], "\r\n"));
842
- }
843
- foreach ($headers as $header) {
844
- $options['http']['header'][] = $header;
845
- }
846
-
847
- return $options;
848
- }
849
-
850
- private function handleRedirect(array $http_response_header, array $additionalOptions, $result)
851
- {
852
- if ($locationHeader = $this->findHeaderValue($http_response_header, 'location')) {
853
- if (parse_url($locationHeader, PHP_URL_SCHEME)) {
854
- // Absolute URL; e.g. https://example.com/composer
855
- $targetUrl = $locationHeader;
856
- } elseif (parse_url($locationHeader, PHP_URL_HOST)) {
857
- // Scheme relative; e.g. //example.com/foo
858
- $targetUrl = $this->scheme.':'.$locationHeader;
859
- } elseif ('/' === $locationHeader[0]) {
860
- // Absolute path; e.g. /foo
861
- $urlHost = parse_url($this->fileUrl, PHP_URL_HOST);
862
-
863
- // Replace path using hostname as an anchor.
864
- $targetUrl = preg_replace('{^(.+(?://|@)'.preg_quote($urlHost).'(?::\d+)?)(?:[/\?].*)?$}', '\1'.$locationHeader, $this->fileUrl);
865
- } else {
866
- // Relative path; e.g. foo
867
- // This actually differs from PHP which seems to add duplicate slashes.
868
- $targetUrl = preg_replace('{^(.+/)[^/?]*(?:\?.*)?$}', '\1'.$locationHeader, $this->fileUrl);
869
- }
870
- }
871
-
872
- if (!empty($targetUrl)) {
873
- $this->redirects++;
874
-
875
- $this->io->writeError('', true, IOInterface::DEBUG);
876
- $this->io->writeError(sprintf('Following redirect (%u) %s', $this->redirects, $targetUrl), true, IOInterface::DEBUG);
877
-
878
- $additionalOptions['redirects'] = $this->redirects;
879
-
880
- return $this->get(parse_url($targetUrl, PHP_URL_HOST), $targetUrl, $additionalOptions, $this->fileName, $this->progress);
881
- }
882
-
883
- if (!$this->retry) {
884
- $e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded, got redirect without Location ('.$http_response_header[0].')');
885
- $e->setHeaders($http_response_header);
886
- $e->setResponse($result);
887
-
888
- throw $e;
889
- }
890
-
891
- return false;
892
- }
893
-
894
- /**
895
- * @param array $options
896
- *
897
- * @return array
898
- */
899
- private function getTlsDefaults(array $options)
900
- {
901
- $ciphers = implode(':', array(
902
- 'ECDHE-RSA-AES128-GCM-SHA256',
903
- 'ECDHE-ECDSA-AES128-GCM-SHA256',
904
- 'ECDHE-RSA-AES256-GCM-SHA384',
905
- 'ECDHE-ECDSA-AES256-GCM-SHA384',
906
- 'DHE-RSA-AES128-GCM-SHA256',
907
- 'DHE-DSS-AES128-GCM-SHA256',
908
- 'kEDH+AESGCM',
909
- 'ECDHE-RSA-AES128-SHA256',
910
- 'ECDHE-ECDSA-AES128-SHA256',
911
- 'ECDHE-RSA-AES128-SHA',
912
- 'ECDHE-ECDSA-AES128-SHA',
913
- 'ECDHE-RSA-AES256-SHA384',
914
- 'ECDHE-ECDSA-AES256-SHA384',
915
- 'ECDHE-RSA-AES256-SHA',
916
- 'ECDHE-ECDSA-AES256-SHA',
917
- 'DHE-RSA-AES128-SHA256',
918
- 'DHE-RSA-AES128-SHA',
919
- 'DHE-DSS-AES128-SHA256',
920
- 'DHE-RSA-AES256-SHA256',
921
- 'DHE-DSS-AES256-SHA',
922
- 'DHE-RSA-AES256-SHA',
923
- 'AES128-GCM-SHA256',
924
- 'AES256-GCM-SHA384',
925
- 'AES128-SHA256',
926
- 'AES256-SHA256',
927
- 'AES128-SHA',
928
- 'AES256-SHA',
929
- 'AES',
930
- 'CAMELLIA',
931
- 'DES-CBC3-SHA',
932
- '!aNULL',
933
- '!eNULL',
934
- '!EXPORT',
935
- '!DES',
936
- '!RC4',
937
- '!MD5',
938
- '!PSK',
939
- '!aECDH',
940
- '!EDH-DSS-DES-CBC3-SHA',
941
- '!EDH-RSA-DES-CBC3-SHA',
942
- '!KRB5-DES-CBC3-SHA',
943
- ));
944
-
945
- /**
946
- * CN_match and SNI_server_name are only known once a URL is passed.
947
- * They will be set in the getOptionsForUrl() method which receives a URL.
948
- *
949
- * cafile or capath can be overridden by passing in those options to constructor.
950
- */
951
- $defaults = array(
952
- 'ssl' => array(
953
- 'ciphers' => $ciphers,
954
- 'verify_peer' => true,
955
- 'verify_depth' => 7,
956
- 'SNI_enabled' => true,
957
- 'capture_peer_cert' => true,
958
- ),
959
- );
960
-
961
- if (isset($options['ssl'])) {
962
- $defaults['ssl'] = array_replace_recursive($defaults['ssl'], $options['ssl']);
963
- }
964
-
965
- $caBundleLogger = $this->io instanceof LoggerInterface ? $this->io : null;
966
-
967
- /**
968
- * Attempt to find a local cafile or throw an exception if none pre-set
969
- * The user may go download one if this occurs.
970
- */
971
- if (!isset($defaults['ssl']['cafile']) && !isset($defaults['ssl']['capath'])) {
972
- $result = CaBundle::getSystemCaRootBundlePath($caBundleLogger);
973
-
974
- if (is_dir($result)) {
975
- $defaults['ssl']['capath'] = $result;
976
- } else {
977
- $defaults['ssl']['cafile'] = $result;
978
- }
979
- }
980
-
981
- if (isset($defaults['ssl']['cafile']) && (!is_readable($defaults['ssl']['cafile']) || !CaBundle::validateCaFile($defaults['ssl']['cafile'], $caBundleLogger))) {
982
- throw new TransportException('The configured cafile was not valid or could not be read.');
983
- }
984
-
985
- if (isset($defaults['ssl']['capath']) && (!is_dir($defaults['ssl']['capath']) || !is_readable($defaults['ssl']['capath']))) {
986
- throw new TransportException('The configured capath was not valid or could not be read.');
987
- }
988
-
989
- /**
990
- * Disable TLS compression to prevent CRIME attacks where supported.
991
- */
992
- if (PHP_VERSION_ID >= 50413) {
993
- $defaults['ssl']['disable_compression'] = true;
994
- }
995
-
996
- return $defaults;
997
- }
998
-
999
- /**
1000
- * Fetch certificate common name and fingerprint for validation of SAN.
1001
- *
1002
- * @todo Remove when PHP 5.6 is minimum supported version.
1003
- */
1004
- private function getCertificateCnAndFp($url, $options)
1005
- {
1006
- if (PHP_VERSION_ID >= 50600) {
1007
- throw new \BadMethodCallException(sprintf(
1008
- '%s must not be used on PHP >= 5.6',
1009
- __METHOD__
1010
- ));
1011
- }
1012
-
1013
- $context = StreamContextFactory::getContext($url, $options, array('options' => array(
1014
- 'ssl' => array(
1015
- 'capture_peer_cert' => true,
1016
- 'verify_peer' => false, // Yes this is fucking insane! But PHP is lame.
1017
- ), ),
1018
- ));
1019
-
1020
- // Ideally this would just use stream_socket_client() to avoid sending a
1021
- // HTTP request but that does not capture the certificate.
1022
- if (false === $handle = @fopen($url, 'rb', false, $context)) {
1023
- return;
1024
- }
1025
-
1026
- // Close non authenticated connection without reading any content.
1027
- fclose($handle);
1028
- $handle = null;
1029
-
1030
- $params = stream_context_get_params($context);
1031
-
1032
- if (!empty($params['options']['ssl']['peer_certificate'])) {
1033
- $peerCertificate = $params['options']['ssl']['peer_certificate'];
1034
-
1035
- if (TlsHelper::checkCertificateHost($peerCertificate, parse_url($url, PHP_URL_HOST), $commonName)) {
1036
- return array(
1037
- 'cn' => $commonName,
1038
- 'fp' => TlsHelper::getCertificateFingerprint($peerCertificate),
1039
- );
1040
- }
1041
- }
1042
- }
1043
-
1044
- private function getUrlAuthority($url)
1045
- {
1046
- $defaultPorts = array(
1047
- 'ftp' => 21,
1048
- 'http' => 80,
1049
- 'https' => 443,
1050
- 'ssh2.sftp' => 22,
1051
- 'ssh2.scp' => 22,
1052
- );
1053
-
1054
- $scheme = parse_url($url, PHP_URL_SCHEME);
1055
-
1056
- if (!isset($defaultPorts[$scheme])) {
1057
- throw new \InvalidArgumentException(sprintf(
1058
- 'Could not get default port for unknown scheme: %s',
1059
- $scheme
1060
- ));
1061
- }
1062
-
1063
- $defaultPort = $defaultPorts[$scheme];
1064
- $port = parse_url($url, PHP_URL_PORT) ?: $defaultPort;
1065
-
1066
- return parse_url($url, PHP_URL_HOST).':'.$port;
1067
- }
1068
-
1069
- /**
1070
- * @link https://github.com/composer/composer/issues/5584
1071
- *
1072
- * @param string $urlToBitBucketFile URL to a file at bitbucket.org.
1073
- *
1074
- * @return bool Whether the given URL is a public BitBucket download which requires no authentication.
1075
- */
1076
- private function isPublicBitBucketDownload($urlToBitBucketFile)
1077
- {
1078
- $domain = parse_url($urlToBitBucketFile, PHP_URL_HOST);
1079
- if (strpos($domain, 'bitbucket.org') === false) {
1080
- // Bitbucket downloads are hosted on amazonaws.
1081
- // We do not need to authenticate there at all
1082
- return true;
1083
- }
1084
-
1085
- $path = parse_url($urlToBitBucketFile, PHP_URL_PATH);
1086
-
1087
- // Path for a public download follows this pattern /{user}/{repo}/downloads/{whatever}
1088
- // {@link https://blog.bitbucket.org/2009/04/12/new-feature-downloads/}
1089
- $pathParts = explode('/', $path);
1090
-
1091
- return count($pathParts) >= 4 && $pathParts[3] == 'downloads';
1092
- }
1093
- }