dependabot-composer 0.111.55 → 0.111.56

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 (907) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/vendor/autoload.php +7 -0
  3. data/helpers/vendor/bin/composer +1 -0
  4. data/helpers/vendor/bin/jsonlint +1 -0
  5. data/helpers/vendor/bin/validate-json +1 -0
  6. data/helpers/vendor/composer/ClassLoader.php +445 -0
  7. data/helpers/vendor/composer/LICENSE +21 -0
  8. data/helpers/vendor/composer/autoload_classmap.php +10 -0
  9. data/helpers/vendor/composer/autoload_files.php +12 -0
  10. data/helpers/vendor/composer/autoload_namespaces.php +9 -0
  11. data/helpers/vendor/composer/autoload_psr4.php +28 -0
  12. data/helpers/vendor/composer/autoload_real.php +70 -0
  13. data/helpers/vendor/composer/autoload_static.php +144 -0
  14. data/helpers/vendor/composer/ca-bundle/LICENSE +19 -0
  15. data/helpers/vendor/composer/ca-bundle/README.md +85 -0
  16. data/helpers/vendor/composer/ca-bundle/composer.json +54 -0
  17. data/helpers/vendor/composer/ca-bundle/res/cacert.pem +3507 -0
  18. data/helpers/vendor/composer/ca-bundle/src/CaBundle.php +310 -0
  19. data/helpers/vendor/composer/composer/.editorconfig +11 -0
  20. data/helpers/vendor/composer/composer/.gitattributes +17 -0
  21. data/helpers/vendor/composer/composer/.gitignore +11 -0
  22. data/helpers/vendor/composer/composer/CHANGELOG.md +828 -0
  23. data/helpers/vendor/composer/composer/LICENSE +19 -0
  24. data/helpers/vendor/composer/composer/PORTING_INFO +39 -0
  25. data/helpers/vendor/composer/composer/README.md +62 -0
  26. data/helpers/vendor/composer/composer/bin/compile +31 -0
  27. data/helpers/vendor/composer/composer/bin/composer +62 -0
  28. data/helpers/vendor/composer/composer/composer.json +86 -0
  29. data/helpers/vendor/composer/composer/composer.lock +1800 -0
  30. data/helpers/vendor/composer/composer/doc/00-intro.md +156 -0
  31. data/helpers/vendor/composer/composer/doc/01-basic-usage.md +266 -0
  32. data/helpers/vendor/composer/composer/doc/02-libraries.md +153 -0
  33. data/helpers/vendor/composer/composer/doc/03-cli.md +941 -0
  34. data/helpers/vendor/composer/composer/doc/04-schema.md +924 -0
  35. data/helpers/vendor/composer/composer/doc/05-repositories.md +717 -0
  36. data/helpers/vendor/composer/composer/doc/06-config.md +299 -0
  37. data/helpers/vendor/composer/composer/doc/07-community.md +35 -0
  38. data/helpers/vendor/composer/composer/doc/articles/aliases.md +111 -0
  39. data/helpers/vendor/composer/composer/doc/articles/autoloader-optimization.md +111 -0
  40. data/helpers/vendor/composer/composer/doc/articles/custom-installers.md +204 -0
  41. data/helpers/vendor/composer/composer/doc/articles/handling-private-packages-with-satis.md +356 -0
  42. data/helpers/vendor/composer/composer/doc/articles/http-basic-authentication.md +59 -0
  43. data/helpers/vendor/composer/composer/doc/articles/plugins.md +290 -0
  44. data/helpers/vendor/composer/composer/doc/articles/scripts.md +357 -0
  45. data/helpers/vendor/composer/composer/doc/articles/troubleshooting.md +309 -0
  46. data/helpers/vendor/composer/composer/doc/articles/vendor-binaries.md +110 -0
  47. data/helpers/vendor/composer/composer/doc/articles/versions.md +230 -0
  48. data/helpers/vendor/composer/composer/doc/dev/DefaultPolicy.md +55 -0
  49. data/helpers/vendor/composer/composer/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md +50 -0
  50. data/helpers/vendor/composer/composer/doc/faqs/how-to-install-composer-programmatically.md +42 -0
  51. data/helpers/vendor/composer/composer/doc/faqs/how-to-install-untrusted-packages-safely.md +19 -0
  52. data/helpers/vendor/composer/composer/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md +32 -0
  53. data/helpers/vendor/composer/composer/doc/faqs/which-version-numbering-system-does-composer-itself-use.md +4 -0
  54. data/helpers/vendor/composer/composer/doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md +21 -0
  55. data/helpers/vendor/composer/composer/doc/faqs/why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md +21 -0
  56. data/helpers/vendor/composer/composer/doc/faqs/why-can't-composer-load-repositories-recursively.md +35 -0
  57. data/helpers/vendor/composer/composer/doc/fixtures/fixtures.md +22 -0
  58. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-plain/packages.json +158 -0
  59. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/bar/baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json +50 -0
  60. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/foo/bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json +77 -0
  61. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/gar/nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json +50 -0
  62. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json +16 -0
  63. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/qux/quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json +22 -0
  64. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/packages.json +9 -0
  65. data/helpers/vendor/composer/composer/res/composer-repository-schema.json +110 -0
  66. data/helpers/vendor/composer/composer/res/composer-schema.json +847 -0
  67. data/helpers/vendor/composer/composer/src/Composer/Autoload/AutoloadGenerator.php +1013 -0
  68. data/helpers/vendor/composer/composer/src/Composer/Autoload/ClassLoader.php +445 -0
  69. data/helpers/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php +222 -0
  70. data/helpers/vendor/composer/composer/src/Composer/Cache.php +257 -0
  71. data/helpers/vendor/composer/composer/src/Composer/Command/AboutCommand.php +46 -0
  72. data/helpers/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php +166 -0
  73. data/helpers/vendor/composer/composer/src/Composer/Command/BaseCommand.php +181 -0
  74. data/helpers/vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php +255 -0
  75. data/helpers/vendor/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php +162 -0
  76. data/helpers/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php +74 -0
  77. data/helpers/vendor/composer/composer/src/Composer/Command/ConfigCommand.php +722 -0
  78. data/helpers/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php +387 -0
  79. data/helpers/vendor/composer/composer/src/Composer/Command/DependsCommand.php +57 -0
  80. data/helpers/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php +729 -0
  81. data/helpers/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php +88 -0
  82. data/helpers/vendor/composer/composer/src/Composer/Command/ExecCommand.php +97 -0
  83. data/helpers/vendor/composer/composer/src/Composer/Command/GlobalCommand.php +111 -0
  84. data/helpers/vendor/composer/composer/src/Composer/Command/HomeCommand.php +168 -0
  85. data/helpers/vendor/composer/composer/src/Composer/Command/InitCommand.php +820 -0
  86. data/helpers/vendor/composer/composer/src/Composer/Command/InstallCommand.php +124 -0
  87. data/helpers/vendor/composer/composer/src/Composer/Command/LicensesCommand.php +159 -0
  88. data/helpers/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php +95 -0
  89. data/helpers/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php +57 -0
  90. data/helpers/vendor/composer/composer/src/Composer/Command/RemoveCommand.php +163 -0
  91. data/helpers/vendor/composer/composer/src/Composer/Command/RequireCommand.php +267 -0
  92. data/helpers/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php +142 -0
  93. data/helpers/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php +66 -0
  94. data/helpers/vendor/composer/composer/src/Composer/Command/SearchCommand.php +83 -0
  95. data/helpers/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php +405 -0
  96. data/helpers/vendor/composer/composer/src/Composer/Command/ShowCommand.php +1015 -0
  97. data/helpers/vendor/composer/composer/src/Composer/Command/StatusCommand.php +214 -0
  98. data/helpers/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php +152 -0
  99. data/helpers/vendor/composer/composer/src/Composer/Command/UpdateCommand.php +228 -0
  100. data/helpers/vendor/composer/composer/src/Composer/Command/ValidateCommand.php +172 -0
  101. data/helpers/vendor/composer/composer/src/Composer/Compiler.php +284 -0
  102. data/helpers/vendor/composer/composer/src/Composer/Composer.php +283 -0
  103. data/helpers/vendor/composer/composer/src/Composer/Config.php +479 -0
  104. data/helpers/vendor/composer/composer/src/Composer/Config/ConfigSourceInterface.php +91 -0
  105. data/helpers/vendor/composer/composer/src/Composer/Config/JsonConfigSource.php +271 -0
  106. data/helpers/vendor/composer/composer/src/Composer/Console/Application.php +494 -0
  107. data/helpers/vendor/composer/composer/src/Composer/Console/HtmlOutputFormatter.php +90 -0
  108. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Decisions.php +211 -0
  109. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php +285 -0
  110. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/GenericRule.php +91 -0
  111. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php +66 -0
  112. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php +67 -0
  113. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php +67 -0
  114. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php +42 -0
  115. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php +50 -0
  116. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php +66 -0
  117. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php +80 -0
  118. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php +27 -0
  119. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Pool.php +378 -0
  120. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Problem.php +257 -0
  121. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Request.php +78 -0
  122. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Rule.php +268 -0
  123. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php +113 -0
  124. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php +176 -0
  125. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php +376 -0
  126. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php +94 -0
  127. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php +52 -0
  128. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php +144 -0
  129. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php +113 -0
  130. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Solver.php +874 -0
  131. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/SolverBugException.php +27 -0
  132. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php +88 -0
  133. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Transaction.php +244 -0
  134. data/helpers/vendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php +135 -0
  135. data/helpers/vendor/composer/composer/src/Composer/Downloader/ChangeReportInterface.php +32 -0
  136. data/helpers/vendor/composer/composer/src/Composer/Downloader/DownloadManager.php +325 -0
  137. data/helpers/vendor/composer/composer/src/Composer/Downloader/DownloaderInterface.php +64 -0
  138. data/helpers/vendor/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php +32 -0
  139. data/helpers/vendor/composer/composer/src/Composer/Downloader/FileDownloader.php +322 -0
  140. data/helpers/vendor/composer/composer/src/Composer/Downloader/FilesystemException.php +26 -0
  141. data/helpers/vendor/composer/composer/src/Composer/Downloader/FossilDownloader.php +116 -0
  142. data/helpers/vendor/composer/composer/src/Composer/Downloader/GitDownloader.php +517 -0
  143. data/helpers/vendor/composer/composer/src/Composer/Downloader/GzipDownloader.php +84 -0
  144. data/helpers/vendor/composer/composer/src/Composer/Downloader/HgDownloader.php +100 -0
  145. data/helpers/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php +224 -0
  146. data/helpers/vendor/composer/composer/src/Composer/Downloader/PearPackageExtractor.php +266 -0
  147. data/helpers/vendor/composer/composer/src/Composer/Downloader/PerforceDownloader.php +112 -0
  148. data/helpers/vendor/composer/composer/src/Composer/Downloader/PharDownloader.php +36 -0
  149. data/helpers/vendor/composer/composer/src/Composer/Downloader/RarDownloader.php +91 -0
  150. data/helpers/vendor/composer/composer/src/Composer/Downloader/SvnDownloader.php +225 -0
  151. data/helpers/vendor/composer/composer/src/Composer/Downloader/TarDownloader.php +31 -0
  152. data/helpers/vendor/composer/composer/src/Composer/Downloader/TransportException.php +53 -0
  153. data/helpers/vendor/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php +32 -0
  154. data/helpers/vendor/composer/composer/src/Composer/Downloader/VcsDownloader.php +293 -0
  155. data/helpers/vendor/composer/composer/src/Composer/Downloader/XzDownloader.php +60 -0
  156. data/helpers/vendor/composer/composer/src/Composer/Downloader/ZipDownloader.php +230 -0
  157. data/helpers/vendor/composer/composer/src/Composer/EventDispatcher/Event.php +103 -0
  158. data/helpers/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php +544 -0
  159. data/helpers/vendor/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php +48 -0
  160. data/helpers/vendor/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php +20 -0
  161. data/helpers/vendor/composer/composer/src/Composer/Exception/NoSslException.php +20 -0
  162. data/helpers/vendor/composer/composer/src/Composer/Factory.php +653 -0
  163. data/helpers/vendor/composer/composer/src/Composer/IO/BaseIO.php +263 -0
  164. data/helpers/vendor/composer/composer/src/Composer/IO/BufferIO.php +86 -0
  165. data/helpers/vendor/composer/composer/src/Composer/IO/ConsoleIO.php +322 -0
  166. data/helpers/vendor/composer/composer/src/Composer/IO/IOInterface.php +207 -0
  167. data/helpers/vendor/composer/composer/src/Composer/IO/NullIO.php +129 -0
  168. data/helpers/vendor/composer/composer/src/Composer/Installer.php +1803 -0
  169. data/helpers/vendor/composer/composer/src/Composer/Installer/BinaryInstaller.php +214 -0
  170. data/helpers/vendor/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php +30 -0
  171. data/helpers/vendor/composer/composer/src/Composer/Installer/InstallationManager.php +326 -0
  172. data/helpers/vendor/composer/composer/src/Composer/Installer/InstallerEvent.php +161 -0
  173. data/helpers/vendor/composer/composer/src/Composer/Installer/InstallerEvents.php +43 -0
  174. data/helpers/vendor/composer/composer/src/Composer/Installer/InstallerInterface.php +79 -0
  175. data/helpers/vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php +232 -0
  176. data/helpers/vendor/composer/composer/src/Composer/Installer/MetapackageInstaller.php +100 -0
  177. data/helpers/vendor/composer/composer/src/Composer/Installer/NoopInstaller.php +88 -0
  178. data/helpers/vendor/composer/composer/src/Composer/Installer/PackageEvent.php +65 -0
  179. data/helpers/vendor/composer/composer/src/Composer/Installer/PackageEvents.php +75 -0
  180. data/helpers/vendor/composer/composer/src/Composer/Installer/PearBinaryInstaller.php +144 -0
  181. data/helpers/vendor/composer/composer/src/Composer/Installer/PearInstaller.php +84 -0
  182. data/helpers/vendor/composer/composer/src/Composer/Installer/PluginInstaller.php +84 -0
  183. data/helpers/vendor/composer/composer/src/Composer/Installer/ProjectInstaller.php +99 -0
  184. data/helpers/vendor/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php +151 -0
  185. data/helpers/vendor/composer/composer/src/Composer/Json/JsonFile.php +306 -0
  186. data/helpers/vendor/composer/composer/src/Composer/Json/JsonFormatter.php +134 -0
  187. data/helpers/vendor/composer/composer/src/Composer/Json/JsonManipulator.php +522 -0
  188. data/helpers/vendor/composer/composer/src/Composer/Json/JsonValidationException.php +34 -0
  189. data/helpers/vendor/composer/composer/src/Composer/Package/AliasPackage.php +414 -0
  190. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php +44 -0
  191. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php +105 -0
  192. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php +183 -0
  193. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php +43 -0
  194. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php +148 -0
  195. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php +31 -0
  196. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php +79 -0
  197. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php +107 -0
  198. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/PharArchiver.php +97 -0
  199. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php +74 -0
  200. data/helpers/vendor/composer/composer/src/Composer/Package/BasePackage.php +251 -0
  201. data/helpers/vendor/composer/composer/src/Composer/Package/Comparer/Comparer.php +129 -0
  202. data/helpers/vendor/composer/composer/src/Composer/Package/CompletePackage.php +199 -0
  203. data/helpers/vendor/composer/composer/src/Composer/Package/CompletePackageInterface.php +95 -0
  204. data/helpers/vendor/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php +151 -0
  205. data/helpers/vendor/composer/composer/src/Composer/Package/Link.php +128 -0
  206. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php +24 -0
  207. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php +24 -0
  208. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php +24 -0
  209. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php +24 -0
  210. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php +24 -0
  211. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php +290 -0
  212. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php +46 -0
  213. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/JsonLoader.php +45 -0
  214. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/LoaderInterface.php +30 -0
  215. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php +264 -0
  216. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php +499 -0
  217. data/helpers/vendor/composer/composer/src/Composer/Package/Locker.php +438 -0
  218. data/helpers/vendor/composer/composer/src/Composer/Package/Package.php +612 -0
  219. data/helpers/vendor/composer/composer/src/Composer/Package/PackageInterface.php +389 -0
  220. data/helpers/vendor/composer/composer/src/Composer/Package/RootAliasPackage.php +173 -0
  221. data/helpers/vendor/composer/composer/src/Composer/Package/RootPackage.php +136 -0
  222. data/helpers/vendor/composer/composer/src/Composer/Package/RootPackageInterface.php +142 -0
  223. data/helpers/vendor/composer/composer/src/Composer/Package/Version/VersionGuesser.php +302 -0
  224. data/helpers/vendor/composer/composer/src/Composer/Package/Version/VersionParser.php +81 -0
  225. data/helpers/vendor/composer/composer/src/Composer/Package/Version/VersionSelector.php +176 -0
  226. data/helpers/vendor/composer/composer/src/Composer/Plugin/Capability/Capability.php +23 -0
  227. data/helpers/vendor/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php +33 -0
  228. data/helpers/vendor/composer/composer/src/Composer/Plugin/Capable.php +43 -0
  229. data/helpers/vendor/composer/composer/src/Composer/Plugin/CommandEvent.php +88 -0
  230. data/helpers/vendor/composer/composer/src/Composer/Plugin/PluginEvents.php +61 -0
  231. data/helpers/vendor/composer/composer/src/Composer/Plugin/PluginInterface.php +39 -0
  232. data/helpers/vendor/composer/composer/src/Composer/Plugin/PluginManager.php +406 -0
  233. data/helpers/vendor/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php +68 -0
  234. data/helpers/vendor/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php +78 -0
  235. data/helpers/vendor/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php +94 -0
  236. data/helpers/vendor/composer/composer/src/Composer/Repository/ArrayRepository.php +208 -0
  237. data/helpers/vendor/composer/composer/src/Composer/Repository/ArtifactRepository.php +107 -0
  238. data/helpers/vendor/composer/composer/src/Composer/Repository/BaseRepository.php +157 -0
  239. data/helpers/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php +833 -0
  240. data/helpers/vendor/composer/composer/src/Composer/Repository/CompositeRepository.php +164 -0
  241. data/helpers/vendor/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php +23 -0
  242. data/helpers/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php +97 -0
  243. data/helpers/vendor/composer/composer/src/Composer/Repository/InstalledArrayRepository.php +24 -0
  244. data/helpers/vendor/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php +22 -0
  245. data/helpers/vendor/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php +24 -0
  246. data/helpers/vendor/composer/composer/src/Composer/Repository/InvalidRepositoryException.php +22 -0
  247. data/helpers/vendor/composer/composer/src/Composer/Repository/PackageRepository.php +61 -0
  248. data/helpers/vendor/composer/composer/src/Composer/Repository/PathRepository.php +190 -0
  249. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php +82 -0
  250. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php +67 -0
  251. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ChannelReader.php +101 -0
  252. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php +164 -0
  253. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php +139 -0
  254. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php +60 -0
  255. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php +50 -0
  256. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php +317 -0
  257. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/PackageInfo.php +94 -0
  258. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php +50 -0
  259. data/helpers/vendor/composer/composer/src/Composer/Repository/PearRepository.php +198 -0
  260. data/helpers/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php +342 -0
  261. data/helpers/vendor/composer/composer/src/Composer/Repository/RepositoryFactory.php +169 -0
  262. data/helpers/vendor/composer/composer/src/Composer/Repository/RepositoryInterface.php +74 -0
  263. data/helpers/vendor/composer/composer/src/Composer/Repository/RepositoryManager.php +177 -0
  264. data/helpers/vendor/composer/composer/src/Composer/Repository/RepositorySecurityException.php +22 -0
  265. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php +452 -0
  266. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php +243 -0
  267. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php +91 -0
  268. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/GitDriver.php +226 -0
  269. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php +476 -0
  270. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php +518 -0
  271. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php +91 -0
  272. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/HgDriver.php +236 -0
  273. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php +186 -0
  274. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php +397 -0
  275. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php +175 -0
  276. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php +117 -0
  277. data/helpers/vendor/composer/composer/src/Composer/Repository/VcsRepository.php +410 -0
  278. data/helpers/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php +23 -0
  279. data/helpers/vendor/composer/composer/src/Composer/Repository/WritableArrayRepository.php +66 -0
  280. data/helpers/vendor/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php +54 -0
  281. data/helpers/vendor/composer/composer/src/Composer/Script/CommandEvent.php +22 -0
  282. data/helpers/vendor/composer/composer/src/Composer/Script/Event.php +133 -0
  283. data/helpers/vendor/composer/composer/src/Composer/Script/PackageEvent.php +24 -0
  284. data/helpers/vendor/composer/composer/src/Composer/Script/ScriptEvents.php +193 -0
  285. data/helpers/vendor/composer/composer/src/Composer/SelfUpdate/Keys.php +36 -0
  286. data/helpers/vendor/composer/composer/src/Composer/SelfUpdate/Versions.php +75 -0
  287. data/helpers/vendor/composer/composer/src/Composer/Util/AuthHelper.php +63 -0
  288. data/helpers/vendor/composer/composer/src/Composer/Util/Bitbucket.php +245 -0
  289. data/helpers/vendor/composer/composer/src/Composer/Util/ComposerMirror.php +57 -0
  290. data/helpers/vendor/composer/composer/src/Composer/Util/ConfigValidator.php +191 -0
  291. data/helpers/vendor/composer/composer/src/Composer/Util/ErrorHandler.php +82 -0
  292. data/helpers/vendor/composer/composer/src/Composer/Util/Filesystem.php +715 -0
  293. data/helpers/vendor/composer/composer/src/Composer/Util/Git.php +374 -0
  294. data/helpers/vendor/composer/composer/src/Composer/Util/GitHub.php +180 -0
  295. data/helpers/vendor/composer/composer/src/Composer/Util/GitLab.php +172 -0
  296. data/helpers/vendor/composer/composer/src/Composer/Util/Hg.php +94 -0
  297. data/helpers/vendor/composer/composer/src/Composer/Util/IniHelper.php +64 -0
  298. data/helpers/vendor/composer/composer/src/Composer/Util/NoProxyPattern.php +147 -0
  299. data/helpers/vendor/composer/composer/src/Composer/Util/PackageSorter.php +92 -0
  300. data/helpers/vendor/composer/composer/src/Composer/Util/Perforce.php +579 -0
  301. data/helpers/vendor/composer/composer/src/Composer/Util/Platform.php +92 -0
  302. data/helpers/vendor/composer/composer/src/Composer/Util/ProcessExecutor.php +193 -0
  303. data/helpers/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php +1126 -0
  304. data/helpers/vendor/composer/composer/src/Composer/Util/Silencer.php +78 -0
  305. data/helpers/vendor/composer/composer/src/Composer/Util/SpdxLicense.php +24 -0
  306. data/helpers/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php +177 -0
  307. data/helpers/vendor/composer/composer/src/Composer/Util/Svn.php +381 -0
  308. data/helpers/vendor/composer/composer/src/Composer/Util/TlsHelper.php +202 -0
  309. data/helpers/vendor/composer/composer/src/Composer/Util/Url.php +55 -0
  310. data/helpers/vendor/composer/composer/src/Composer/Util/Zip.php +108 -0
  311. data/helpers/vendor/composer/composer/src/Composer/XdebugHandler.php +31 -0
  312. data/helpers/vendor/composer/composer/src/bootstrap.php +24 -0
  313. data/helpers/vendor/composer/installed.json +1051 -0
  314. data/helpers/vendor/composer/semver/CHANGELOG.md +72 -0
  315. data/helpers/vendor/composer/semver/LICENSE +19 -0
  316. data/helpers/vendor/composer/semver/README.md +70 -0
  317. data/helpers/vendor/composer/semver/composer.json +58 -0
  318. data/helpers/vendor/composer/semver/src/Comparator.php +111 -0
  319. data/helpers/vendor/composer/semver/src/Constraint/AbstractConstraint.php +63 -0
  320. data/helpers/vendor/composer/semver/src/Constraint/Constraint.php +219 -0
  321. data/helpers/vendor/composer/semver/src/Constraint/ConstraintInterface.php +32 -0
  322. data/helpers/vendor/composer/semver/src/Constraint/EmptyConstraint.php +59 -0
  323. data/helpers/vendor/composer/semver/src/Constraint/MultiConstraint.php +120 -0
  324. data/helpers/vendor/composer/semver/src/Semver.php +127 -0
  325. data/helpers/vendor/composer/semver/src/VersionParser.php +540 -0
  326. data/helpers/vendor/composer/spdx-licenses/.php_cs.dist +59 -0
  327. data/helpers/vendor/composer/spdx-licenses/CHANGELOG.md +94 -0
  328. data/helpers/vendor/composer/spdx-licenses/LICENSE +19 -0
  329. data/helpers/vendor/composer/spdx-licenses/README.md +69 -0
  330. data/helpers/vendor/composer/spdx-licenses/composer.json +56 -0
  331. data/helpers/vendor/composer/spdx-licenses/res/spdx-exceptions.json +110 -0
  332. data/helpers/vendor/composer/spdx-licenses/res/spdx-licenses.json +1982 -0
  333. data/helpers/vendor/composer/spdx-licenses/src/SpdxLicenses.php +343 -0
  334. data/helpers/vendor/composer/xdebug-handler/CHANGELOG.md +59 -0
  335. data/helpers/vendor/composer/xdebug-handler/LICENSE +21 -0
  336. data/helpers/vendor/composer/xdebug-handler/README.md +288 -0
  337. data/helpers/vendor/composer/xdebug-handler/composer.json +40 -0
  338. data/helpers/vendor/composer/xdebug-handler/src/PhpConfig.php +73 -0
  339. data/helpers/vendor/composer/xdebug-handler/src/Process.php +170 -0
  340. data/helpers/vendor/composer/xdebug-handler/src/Status.php +163 -0
  341. data/helpers/vendor/composer/xdebug-handler/src/XdebugHandler.php +565 -0
  342. data/helpers/vendor/justinrainbow/json-schema/.gitattributes +5 -0
  343. data/helpers/vendor/justinrainbow/json-schema/.php_cs.dist +30 -0
  344. data/helpers/vendor/justinrainbow/json-schema/LICENSE +21 -0
  345. data/helpers/vendor/justinrainbow/json-schema/README.md +206 -0
  346. data/helpers/vendor/justinrainbow/json-schema/bin/validate-json +251 -0
  347. data/helpers/vendor/justinrainbow/json-schema/composer.json +76 -0
  348. data/helpers/vendor/justinrainbow/json-schema/demo/README.md +14 -0
  349. data/helpers/vendor/justinrainbow/json-schema/demo/data.json +3 -0
  350. data/helpers/vendor/justinrainbow/json-schema/demo/demo.php +18 -0
  351. data/helpers/vendor/justinrainbow/json-schema/demo/schema.json +3 -0
  352. data/helpers/vendor/justinrainbow/json-schema/dist/schema/json-schema-draft-03.json +174 -0
  353. data/helpers/vendor/justinrainbow/json-schema/dist/schema/json-schema-draft-04.json +150 -0
  354. data/helpers/vendor/justinrainbow/json-schema/phpunit.xml.dist +26 -0
  355. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php +148 -0
  356. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php +121 -0
  357. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php +213 -0
  358. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php +65 -0
  359. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/EnumConstraint.php +54 -0
  360. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php +220 -0
  361. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php +214 -0
  362. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php +81 -0
  363. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php +192 -0
  364. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php +94 -0
  365. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php +60 -0
  366. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php +68 -0
  367. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php +40 -0
  368. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php +18 -0
  369. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeConstraint.php +261 -0
  370. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php +413 -0
  371. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php +161 -0
  372. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php +7 -0
  373. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidArgumentException.php +17 -0
  374. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidConfigException.php +17 -0
  375. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaException.php +17 -0
  376. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaMediaTypeException.php +17 -0
  377. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSourceUriException.php +17 -0
  378. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/JsonDecodingException.php +40 -0
  379. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ResourceNotFoundException.php +17 -0
  380. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/RuntimeException.php +17 -0
  381. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UnresolvableJsonPointerException.php +19 -0
  382. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UriResolverException.php +17 -0
  383. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ValidationException.php +14 -0
  384. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Iterator/ObjectIterator.php +149 -0
  385. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php +30 -0
  386. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php +169 -0
  387. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php +41 -0
  388. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/AbstractRetriever.php +34 -0
  389. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php +83 -0
  390. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php +93 -0
  391. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php +56 -0
  392. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php +36 -0
  393. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php +175 -0
  394. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php +349 -0
  395. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php +26 -0
  396. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/UriRetrieverInterface.php +26 -0
  397. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Validator.php +90 -0
  398. data/helpers/vendor/psr/container/.gitignore +3 -0
  399. data/helpers/vendor/psr/container/LICENSE +21 -0
  400. data/helpers/vendor/psr/container/README.md +5 -0
  401. data/helpers/vendor/psr/container/composer.json +27 -0
  402. data/helpers/vendor/psr/container/src/ContainerExceptionInterface.php +13 -0
  403. data/helpers/vendor/psr/container/src/ContainerInterface.php +37 -0
  404. data/helpers/vendor/psr/container/src/NotFoundExceptionInterface.php +13 -0
  405. data/helpers/vendor/psr/log/.gitignore +1 -0
  406. data/helpers/vendor/psr/log/LICENSE +19 -0
  407. data/helpers/vendor/psr/log/Psr/Log/AbstractLogger.php +128 -0
  408. data/helpers/vendor/psr/log/Psr/Log/InvalidArgumentException.php +7 -0
  409. data/helpers/vendor/psr/log/Psr/Log/LogLevel.php +18 -0
  410. data/helpers/vendor/psr/log/Psr/Log/LoggerAwareInterface.php +18 -0
  411. data/helpers/vendor/psr/log/Psr/Log/LoggerAwareTrait.php +26 -0
  412. data/helpers/vendor/psr/log/Psr/Log/LoggerInterface.php +123 -0
  413. data/helpers/vendor/psr/log/Psr/Log/LoggerTrait.php +140 -0
  414. data/helpers/vendor/psr/log/Psr/Log/NullLogger.php +28 -0
  415. data/helpers/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php +144 -0
  416. data/helpers/vendor/psr/log/Psr/Log/Test/TestLogger.php +146 -0
  417. data/helpers/vendor/psr/log/README.md +52 -0
  418. data/helpers/vendor/psr/log/composer.json +26 -0
  419. data/helpers/vendor/seld/jsonlint/.gitignore +3 -0
  420. data/helpers/vendor/seld/jsonlint/.travis.yml +25 -0
  421. data/helpers/vendor/seld/jsonlint/CHANGELOG.md +66 -0
  422. data/helpers/vendor/seld/jsonlint/LICENSE +19 -0
  423. data/helpers/vendor/seld/jsonlint/README.md +89 -0
  424. data/helpers/vendor/seld/jsonlint/bin/jsonlint +117 -0
  425. data/helpers/vendor/seld/jsonlint/composer.json +24 -0
  426. data/helpers/vendor/seld/jsonlint/phpunit.xml.dist +25 -0
  427. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/DuplicateKeyException.php +26 -0
  428. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php +502 -0
  429. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php +217 -0
  430. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.php +28 -0
  431. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php +16 -0
  432. data/helpers/vendor/seld/jsonlint/tests/JsonParserTest.php +230 -0
  433. data/helpers/vendor/seld/jsonlint/tests/bom.json +6 -0
  434. data/helpers/vendor/seld/jsonlint/tests/bootstrap.php +13 -0
  435. data/helpers/vendor/seld/phar-utils/.gitignore +1 -0
  436. data/helpers/vendor/seld/phar-utils/LICENSE +19 -0
  437. data/helpers/vendor/seld/phar-utils/README.md +39 -0
  438. data/helpers/vendor/seld/phar-utils/composer.json +26 -0
  439. data/helpers/vendor/seld/phar-utils/composer.lock +19 -0
  440. data/helpers/vendor/seld/phar-utils/src/Timestamps.php +192 -0
  441. data/helpers/vendor/symfony/console/.gitignore +3 -0
  442. data/helpers/vendor/symfony/console/Application.php +1194 -0
  443. data/helpers/vendor/symfony/console/CHANGELOG.md +148 -0
  444. data/helpers/vendor/symfony/console/Command/Command.php +654 -0
  445. data/helpers/vendor/symfony/console/Command/HelpCommand.php +81 -0
  446. data/helpers/vendor/symfony/console/Command/ListCommand.php +90 -0
  447. data/helpers/vendor/symfony/console/Command/LockableTrait.php +71 -0
  448. data/helpers/vendor/symfony/console/CommandLoader/CommandLoaderInterface.php +46 -0
  449. data/helpers/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php +64 -0
  450. data/helpers/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php +62 -0
  451. data/helpers/vendor/symfony/console/ConsoleEvents.php +47 -0
  452. data/helpers/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php +98 -0
  453. data/helpers/vendor/symfony/console/Descriptor/ApplicationDescription.php +144 -0
  454. data/helpers/vendor/symfony/console/Descriptor/Descriptor.php +107 -0
  455. data/helpers/vendor/symfony/console/Descriptor/DescriptorInterface.php +31 -0
  456. data/helpers/vendor/symfony/console/Descriptor/JsonDescriptor.php +170 -0
  457. data/helpers/vendor/symfony/console/Descriptor/MarkdownDescriptor.php +182 -0
  458. data/helpers/vendor/symfony/console/Descriptor/TextDescriptor.php +342 -0
  459. data/helpers/vendor/symfony/console/Descriptor/XmlDescriptor.php +245 -0
  460. data/helpers/vendor/symfony/console/Event/ConsoleCommandEvent.php +60 -0
  461. data/helpers/vendor/symfony/console/Event/ConsoleErrorEvent.php +58 -0
  462. data/helpers/vendor/symfony/console/Event/ConsoleEvent.php +67 -0
  463. data/helpers/vendor/symfony/console/Event/ConsoleTerminateEvent.php +53 -0
  464. data/helpers/vendor/symfony/console/EventListener/ErrorListener.php +91 -0
  465. data/helpers/vendor/symfony/console/Exception/CommandNotFoundException.php +43 -0
  466. data/helpers/vendor/symfony/console/Exception/ExceptionInterface.php +21 -0
  467. data/helpers/vendor/symfony/console/Exception/InvalidArgumentException.php +19 -0
  468. data/helpers/vendor/symfony/console/Exception/InvalidOptionException.php +21 -0
  469. data/helpers/vendor/symfony/console/Exception/LogicException.php +19 -0
  470. data/helpers/vendor/symfony/console/Exception/NamespaceNotFoundException.php +21 -0
  471. data/helpers/vendor/symfony/console/Exception/RuntimeException.php +19 -0
  472. data/helpers/vendor/symfony/console/Formatter/OutputFormatter.php +284 -0
  473. data/helpers/vendor/symfony/console/Formatter/OutputFormatterInterface.php +71 -0
  474. data/helpers/vendor/symfony/console/Formatter/OutputFormatterStyle.php +197 -0
  475. data/helpers/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php +62 -0
  476. data/helpers/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php +110 -0
  477. data/helpers/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php +25 -0
  478. data/helpers/vendor/symfony/console/Helper/DebugFormatterHelper.php +127 -0
  479. data/helpers/vendor/symfony/console/Helper/DescriptorHelper.php +94 -0
  480. data/helpers/vendor/symfony/console/Helper/Dumper.php +64 -0
  481. data/helpers/vendor/symfony/console/Helper/FormatterHelper.php +106 -0
  482. data/helpers/vendor/symfony/console/Helper/Helper.php +138 -0
  483. data/helpers/vendor/symfony/console/Helper/HelperInterface.php +39 -0
  484. data/helpers/vendor/symfony/console/Helper/HelperSet.php +108 -0
  485. data/helpers/vendor/symfony/console/Helper/InputAwareHelper.php +33 -0
  486. data/helpers/vendor/symfony/console/Helper/ProcessHelper.php +156 -0
  487. data/helpers/vendor/symfony/console/Helper/ProgressBar.php +545 -0
  488. data/helpers/vendor/symfony/console/Helper/ProgressIndicator.php +269 -0
  489. data/helpers/vendor/symfony/console/Helper/QuestionHelper.php +479 -0
  490. data/helpers/vendor/symfony/console/Helper/SymfonyQuestionHelper.php +96 -0
  491. data/helpers/vendor/symfony/console/Helper/Table.php +813 -0
  492. data/helpers/vendor/symfony/console/Helper/TableCell.php +68 -0
  493. data/helpers/vendor/symfony/console/Helper/TableRows.php +32 -0
  494. data/helpers/vendor/symfony/console/Helper/TableSeparator.php +25 -0
  495. data/helpers/vendor/symfony/console/Helper/TableStyle.php +458 -0
  496. data/helpers/vendor/symfony/console/Input/ArgvInput.php +365 -0
  497. data/helpers/vendor/symfony/console/Input/ArrayInput.php +206 -0
  498. data/helpers/vendor/symfony/console/Input/Input.php +203 -0
  499. data/helpers/vendor/symfony/console/Input/InputArgument.php +129 -0
  500. data/helpers/vendor/symfony/console/Input/InputAwareInterface.php +26 -0
  501. data/helpers/vendor/symfony/console/Input/InputDefinition.php +404 -0
  502. data/helpers/vendor/symfony/console/Input/InputInterface.php +163 -0
  503. data/helpers/vendor/symfony/console/Input/InputOption.php +208 -0
  504. data/helpers/vendor/symfony/console/Input/StreamableInputInterface.php +37 -0
  505. data/helpers/vendor/symfony/console/Input/StringInput.php +72 -0
  506. data/helpers/vendor/symfony/console/LICENSE +19 -0
  507. data/helpers/vendor/symfony/console/Logger/ConsoleLogger.php +124 -0
  508. data/helpers/vendor/symfony/console/Output/BufferedOutput.php +45 -0
  509. data/helpers/vendor/symfony/console/Output/ConsoleOutput.php +161 -0
  510. data/helpers/vendor/symfony/console/Output/ConsoleOutputInterface.php +32 -0
  511. data/helpers/vendor/symfony/console/Output/ConsoleSectionOutput.php +141 -0
  512. data/helpers/vendor/symfony/console/Output/NullOutput.php +123 -0
  513. data/helpers/vendor/symfony/console/Output/Output.php +177 -0
  514. data/helpers/vendor/symfony/console/Output/OutputInterface.php +114 -0
  515. data/helpers/vendor/symfony/console/Output/StreamOutput.php +124 -0
  516. data/helpers/vendor/symfony/console/Question/ChoiceQuestion.php +182 -0
  517. data/helpers/vendor/symfony/console/Question/ConfirmationQuestion.php +59 -0
  518. data/helpers/vendor/symfony/console/Question/Question.php +277 -0
  519. data/helpers/vendor/symfony/console/README.md +20 -0
  520. data/helpers/vendor/symfony/console/Resources/bin/hiddeninput.exe +0 -0
  521. data/helpers/vendor/symfony/console/Style/OutputStyle.php +155 -0
  522. data/helpers/vendor/symfony/console/Style/StyleInterface.php +154 -0
  523. data/helpers/vendor/symfony/console/Style/SymfonyStyle.php +438 -0
  524. data/helpers/vendor/symfony/console/Terminal.php +137 -0
  525. data/helpers/vendor/symfony/console/Tester/ApplicationTester.php +77 -0
  526. data/helpers/vendor/symfony/console/Tester/CommandTester.php +78 -0
  527. data/helpers/vendor/symfony/console/Tester/TesterTrait.php +177 -0
  528. data/helpers/vendor/symfony/console/Tests/ApplicationTest.php +1836 -0
  529. data/helpers/vendor/symfony/console/Tests/Command/CommandTest.php +436 -0
  530. data/helpers/vendor/symfony/console/Tests/Command/HelpCommandTest.php +71 -0
  531. data/helpers/vendor/symfony/console/Tests/Command/ListCommandTest.php +113 -0
  532. data/helpers/vendor/symfony/console/Tests/Command/LockableTraitTest.php +67 -0
  533. data/helpers/vendor/symfony/console/Tests/CommandLoader/ContainerCommandLoaderTest.php +61 -0
  534. data/helpers/vendor/symfony/console/Tests/CommandLoader/FactoryCommandLoaderTest.php +60 -0
  535. data/helpers/vendor/symfony/console/Tests/DependencyInjection/AddConsoleCommandPassTest.php +258 -0
  536. data/helpers/vendor/symfony/console/Tests/Descriptor/AbstractDescriptorTest.php +107 -0
  537. data/helpers/vendor/symfony/console/Tests/Descriptor/JsonDescriptorTest.php +35 -0
  538. data/helpers/vendor/symfony/console/Tests/Descriptor/MarkdownDescriptorTest.php +45 -0
  539. data/helpers/vendor/symfony/console/Tests/Descriptor/ObjectsProvider.php +82 -0
  540. data/helpers/vendor/symfony/console/Tests/Descriptor/TextDescriptorTest.php +53 -0
  541. data/helpers/vendor/symfony/console/Tests/Descriptor/XmlDescriptorTest.php +27 -0
  542. data/helpers/vendor/symfony/console/Tests/EventListener/ErrorListenerTest.php +156 -0
  543. data/helpers/vendor/symfony/console/Tests/Fixtures/BarBucCommand.php +11 -0
  544. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorApplication1.php +18 -0
  545. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorApplication2.php +26 -0
  546. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorApplicationMbString.php +24 -0
  547. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommand1.php +27 -0
  548. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommand2.php +32 -0
  549. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommand3.php +27 -0
  550. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommand4.php +25 -0
  551. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommandMbString.php +32 -0
  552. data/helpers/vendor/symfony/console/Tests/Fixtures/DummyOutput.php +36 -0
  553. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo1Command.php +26 -0
  554. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo2Command.php +21 -0
  555. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo3Command.php +29 -0
  556. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo4Command.php +11 -0
  557. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo5Command.php +10 -0
  558. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo6Command.php +11 -0
  559. data/helpers/vendor/symfony/console/Tests/Fixtures/FooCommand.php +33 -0
  560. data/helpers/vendor/symfony/console/Tests/Fixtures/FooLock2Command.php +28 -0
  561. data/helpers/vendor/symfony/console/Tests/Fixtures/FooLockCommand.php +27 -0
  562. data/helpers/vendor/symfony/console/Tests/Fixtures/FooOptCommand.php +36 -0
  563. data/helpers/vendor/symfony/console/Tests/Fixtures/FooSameCaseLowercaseCommand.php +11 -0
  564. data/helpers/vendor/symfony/console/Tests/Fixtures/FooSameCaseUppercaseCommand.php +11 -0
  565. data/helpers/vendor/symfony/console/Tests/Fixtures/FooSubnamespaced1Command.php +26 -0
  566. data/helpers/vendor/symfony/console/Tests/Fixtures/FooSubnamespaced2Command.php +26 -0
  567. data/helpers/vendor/symfony/console/Tests/Fixtures/FooWithoutAliasCommand.php +21 -0
  568. data/helpers/vendor/symfony/console/Tests/Fixtures/FoobarCommand.php +25 -0
  569. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_0.php +11 -0
  570. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_1.php +13 -0
  571. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_10.php +17 -0
  572. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_11.php +12 -0
  573. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_12.php +13 -0
  574. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_13.php +14 -0
  575. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_14.php +17 -0
  576. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_15.php +14 -0
  577. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_16.php +15 -0
  578. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_17.php +13 -0
  579. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_2.php +16 -0
  580. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_3.php +12 -0
  581. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_4.php +34 -0
  582. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_4_with_iterators.php +34 -0
  583. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_5.php +37 -0
  584. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_6.php +16 -0
  585. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_7.php +15 -0
  586. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_8.php +26 -0
  587. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_9.php +11 -0
  588. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/interactive_command_1.php +19 -0
  589. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/interactive_output_1.txt +7 -0
  590. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_0.txt +3 -0
  591. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_1.txt +9 -0
  592. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_10.txt +7 -0
  593. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_11.txt +4 -0
  594. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_12.txt +6 -0
  595. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_13.txt +7 -0
  596. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_14.txt +6 -0
  597. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_15.txt +7 -0
  598. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_16.txt +8 -0
  599. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_17.txt +7 -0
  600. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_2.txt +13 -0
  601. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_3.txt +7 -0
  602. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_4.txt +32 -0
  603. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_4_with_iterators.txt +32 -0
  604. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_5.txt +18 -0
  605. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_6.txt +6 -0
  606. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_7.txt +5 -0
  607. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_8.txt +9 -0
  608. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_9.txt +5 -0
  609. data/helpers/vendor/symfony/console/Tests/Fixtures/TestAmbiguousCommandRegistering.php +22 -0
  610. data/helpers/vendor/symfony/console/Tests/Fixtures/TestAmbiguousCommandRegistering2.php +21 -0
  611. data/helpers/vendor/symfony/console/Tests/Fixtures/TestCommand.php +28 -0
  612. data/helpers/vendor/symfony/console/Tests/Fixtures/application_1.json +156 -0
  613. data/helpers/vendor/symfony/console/Tests/Fixtures/application_1.md +172 -0
  614. data/helpers/vendor/symfony/console/Tests/Fixtures/application_1.txt +17 -0
  615. data/helpers/vendor/symfony/console/Tests/Fixtures/application_1.xml +104 -0
  616. data/helpers/vendor/symfony/console/Tests/Fixtures/application_2.json +509 -0
  617. data/helpers/vendor/symfony/console/Tests/Fixtures/application_2.md +431 -0
  618. data/helpers/vendor/symfony/console/Tests/Fixtures/application_2.txt +21 -0
  619. data/helpers/vendor/symfony/console/Tests/Fixtures/application_2.xml +254 -0
  620. data/helpers/vendor/symfony/console/Tests/Fixtures/application_filtered_namespace.txt +16 -0
  621. data/helpers/vendor/symfony/console/Tests/Fixtures/application_gethelp.txt +1 -0
  622. data/helpers/vendor/symfony/console/Tests/Fixtures/application_mbstring.md +269 -0
  623. data/helpers/vendor/symfony/console/Tests/Fixtures/application_mbstring.txt +19 -0
  624. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception1.txt +5 -0
  625. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception2.txt +7 -0
  626. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception3.txt +18 -0
  627. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception3decorated.txt +18 -0
  628. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception4.txt +6 -0
  629. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_doublewidth1.txt +8 -0
  630. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_doublewidth1decorated.txt +8 -0
  631. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_doublewidth2.txt +9 -0
  632. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_escapeslines.txt +9 -0
  633. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_linebreaks.txt +11 -0
  634. data/helpers/vendor/symfony/console/Tests/Fixtures/application_run1.txt +17 -0
  635. data/helpers/vendor/symfony/console/Tests/Fixtures/application_run2.txt +29 -0
  636. data/helpers/vendor/symfony/console/Tests/Fixtures/application_run3.txt +29 -0
  637. data/helpers/vendor/symfony/console/Tests/Fixtures/application_run4.txt +1 -0
  638. data/helpers/vendor/symfony/console/Tests/Fixtures/command_1.json +15 -0
  639. data/helpers/vendor/symfony/console/Tests/Fixtures/command_1.md +12 -0
  640. data/helpers/vendor/symfony/console/Tests/Fixtures/command_1.txt +10 -0
  641. data/helpers/vendor/symfony/console/Tests/Fixtures/command_1.xml +12 -0
  642. data/helpers/vendor/symfony/console/Tests/Fixtures/command_2.json +33 -0
  643. data/helpers/vendor/symfony/console/Tests/Fixtures/command_2.md +29 -0
  644. data/helpers/vendor/symfony/console/Tests/Fixtures/command_2.txt +16 -0
  645. data/helpers/vendor/symfony/console/Tests/Fixtures/command_2.xml +21 -0
  646. data/helpers/vendor/symfony/console/Tests/Fixtures/command_mbstring.md +29 -0
  647. data/helpers/vendor/symfony/console/Tests/Fixtures/command_mbstring.txt +16 -0
  648. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_1.json +7 -0
  649. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_1.md +5 -0
  650. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_1.txt +1 -0
  651. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_1.xml +5 -0
  652. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_2.json +7 -0
  653. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_2.md +7 -0
  654. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_2.txt +1 -0
  655. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_2.xml +5 -0
  656. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_3.json +7 -0
  657. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_3.md +7 -0
  658. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_3.txt +1 -0
  659. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_3.xml +7 -0
  660. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_4.json +7 -0
  661. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_4.md +8 -0
  662. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_4.txt +2 -0
  663. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_4.xml +6 -0
  664. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_default_inf_value.json +7 -0
  665. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_default_inf_value.md +7 -0
  666. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_default_inf_value.txt +1 -0
  667. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_default_inf_value.xml +7 -0
  668. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_style.json +7 -0
  669. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_style.md +7 -0
  670. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_style.txt +1 -0
  671. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_style.xml +7 -0
  672. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_1.json +4 -0
  673. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_1.md +0 -0
  674. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_1.txt +0 -0
  675. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_1.xml +5 -0
  676. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_2.json +12 -0
  677. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_2.md +7 -0
  678. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_2.txt +2 -0
  679. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_2.xml +10 -0
  680. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_3.json +14 -0
  681. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_3.md +8 -0
  682. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_3.txt +2 -0
  683. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_3.xml +9 -0
  684. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_4.json +22 -0
  685. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_4.md +16 -0
  686. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_4.txt +5 -0
  687. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_4.xml +14 -0
  688. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_1.json +9 -0
  689. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_1.md +6 -0
  690. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_1.txt +1 -0
  691. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_1.xml +4 -0
  692. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_2.json +9 -0
  693. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_2.md +8 -0
  694. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_2.txt +1 -0
  695. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_2.xml +7 -0
  696. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_3.json +9 -0
  697. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_3.md +8 -0
  698. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_3.txt +1 -0
  699. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_3.xml +5 -0
  700. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_4.json +9 -0
  701. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_4.md +8 -0
  702. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_4.txt +1 -0
  703. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_4.xml +5 -0
  704. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_5.json +9 -0
  705. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_5.md +9 -0
  706. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_5.txt +2 -0
  707. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_5.xml +6 -0
  708. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_6.json +9 -0
  709. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_6.md +8 -0
  710. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_6.txt +1 -0
  711. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_6.xml +5 -0
  712. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_default_inf_value.json +9 -0
  713. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_default_inf_value.md +8 -0
  714. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_default_inf_value.txt +1 -0
  715. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_default_inf_value.xml +7 -0
  716. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style.json +9 -0
  717. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style.md +8 -0
  718. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style.txt +1 -0
  719. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style.xml +7 -0
  720. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style_array.json +12 -0
  721. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style_array.md +8 -0
  722. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style_array.txt +1 -0
  723. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style_array.xml +8 -0
  724. data/helpers/vendor/symfony/console/Tests/Formatter/OutputFormatterStyleStackTest.php +71 -0
  725. data/helpers/vendor/symfony/console/Tests/Formatter/OutputFormatterStyleTest.php +115 -0
  726. data/helpers/vendor/symfony/console/Tests/Formatter/OutputFormatterTest.php +350 -0
  727. data/helpers/vendor/symfony/console/Tests/Helper/AbstractQuestionHelperTest.php +34 -0
  728. data/helpers/vendor/symfony/console/Tests/Helper/DumperNativeFallbackTest.php +58 -0
  729. data/helpers/vendor/symfony/console/Tests/Helper/DumperTest.php +58 -0
  730. data/helpers/vendor/symfony/console/Tests/Helper/FormatterHelperTest.php +129 -0
  731. data/helpers/vendor/symfony/console/Tests/Helper/HelperSetTest.php +127 -0
  732. data/helpers/vendor/symfony/console/Tests/Helper/HelperTest.php +55 -0
  733. data/helpers/vendor/symfony/console/Tests/Helper/ProcessHelperTest.php +133 -0
  734. data/helpers/vendor/symfony/console/Tests/Helper/ProgressBarTest.php +947 -0
  735. data/helpers/vendor/symfony/console/Tests/Helper/ProgressIndicatorTest.php +183 -0
  736. data/helpers/vendor/symfony/console/Tests/Helper/QuestionHelperTest.php +789 -0
  737. data/helpers/vendor/symfony/console/Tests/Helper/SymfonyQuestionHelperTest.php +168 -0
  738. data/helpers/vendor/symfony/console/Tests/Helper/TableStyleTest.php +28 -0
  739. data/helpers/vendor/symfony/console/Tests/Helper/TableTest.php +1199 -0
  740. data/helpers/vendor/symfony/console/Tests/Input/ArgvInputTest.php +466 -0
  741. data/helpers/vendor/symfony/console/Tests/Input/ArrayInputTest.php +177 -0
  742. data/helpers/vendor/symfony/console/Tests/Input/InputArgumentTest.php +103 -0
  743. data/helpers/vendor/symfony/console/Tests/Input/InputDefinitionTest.php +407 -0
  744. data/helpers/vendor/symfony/console/Tests/Input/InputOptionTest.php +196 -0
  745. data/helpers/vendor/symfony/console/Tests/Input/InputTest.php +149 -0
  746. data/helpers/vendor/symfony/console/Tests/Input/StringInputTest.php +87 -0
  747. data/helpers/vendor/symfony/console/Tests/Logger/ConsoleLoggerTest.php +215 -0
  748. data/helpers/vendor/symfony/console/Tests/Output/ConsoleOutputTest.php +42 -0
  749. data/helpers/vendor/symfony/console/Tests/Output/ConsoleSectionOutputTest.php +163 -0
  750. data/helpers/vendor/symfony/console/Tests/Output/NullOutputTest.php +88 -0
  751. data/helpers/vendor/symfony/console/Tests/Output/OutputTest.php +189 -0
  752. data/helpers/vendor/symfony/console/Tests/Output/StreamOutputTest.php +61 -0
  753. data/helpers/vendor/symfony/console/Tests/Question/ChoiceQuestionTest.php +64 -0
  754. data/helpers/vendor/symfony/console/Tests/Question/ConfirmationQuestionTest.php +62 -0
  755. data/helpers/vendor/symfony/console/Tests/Question/QuestionTest.php +304 -0
  756. data/helpers/vendor/symfony/console/Tests/Style/SymfonyStyleTest.php +118 -0
  757. data/helpers/vendor/symfony/console/Tests/TerminalTest.php +59 -0
  758. data/helpers/vendor/symfony/console/Tests/Tester/ApplicationTesterTest.php +113 -0
  759. data/helpers/vendor/symfony/console/Tests/Tester/CommandTesterTest.php +235 -0
  760. data/helpers/vendor/symfony/console/composer.json +59 -0
  761. data/helpers/vendor/symfony/console/phpunit.xml.dist +41 -0
  762. data/helpers/vendor/symfony/filesystem/.gitignore +3 -0
  763. data/helpers/vendor/symfony/filesystem/CHANGELOG.md +65 -0
  764. data/helpers/vendor/symfony/filesystem/Exception/ExceptionInterface.php +21 -0
  765. data/helpers/vendor/symfony/filesystem/Exception/FileNotFoundException.php +34 -0
  766. data/helpers/vendor/symfony/filesystem/Exception/IOException.php +39 -0
  767. data/helpers/vendor/symfony/filesystem/Exception/IOExceptionInterface.php +27 -0
  768. data/helpers/vendor/symfony/filesystem/Exception/InvalidArgumentException.php +19 -0
  769. data/helpers/vendor/symfony/filesystem/Filesystem.php +768 -0
  770. data/helpers/vendor/symfony/filesystem/LICENSE +19 -0
  771. data/helpers/vendor/symfony/filesystem/README.md +13 -0
  772. data/helpers/vendor/symfony/filesystem/Tests/ExceptionTest.php +47 -0
  773. data/helpers/vendor/symfony/filesystem/Tests/FilesystemTest.php +1750 -0
  774. data/helpers/vendor/symfony/filesystem/Tests/FilesystemTestCase.php +166 -0
  775. data/helpers/vendor/symfony/filesystem/Tests/Fixtures/MockStream/MockStream.php +46 -0
  776. data/helpers/vendor/symfony/filesystem/composer.json +34 -0
  777. data/helpers/vendor/symfony/filesystem/phpunit.xml.dist +30 -0
  778. data/helpers/vendor/symfony/finder/.gitignore +3 -0
  779. data/helpers/vendor/symfony/finder/CHANGELOG.md +74 -0
  780. data/helpers/vendor/symfony/finder/Comparator/Comparator.php +98 -0
  781. data/helpers/vendor/symfony/finder/Comparator/DateComparator.php +51 -0
  782. data/helpers/vendor/symfony/finder/Comparator/NumberComparator.php +79 -0
  783. data/helpers/vendor/symfony/finder/Exception/AccessDeniedException.php +19 -0
  784. data/helpers/vendor/symfony/finder/Exception/DirectoryNotFoundException.php +19 -0
  785. data/helpers/vendor/symfony/finder/Finder.php +811 -0
  786. data/helpers/vendor/symfony/finder/Gitignore.php +107 -0
  787. data/helpers/vendor/symfony/finder/Glob.php +116 -0
  788. data/helpers/vendor/symfony/finder/Iterator/CustomFilterIterator.php +61 -0
  789. data/helpers/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php +58 -0
  790. data/helpers/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php +45 -0
  791. data/helpers/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php +84 -0
  792. data/helpers/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php +53 -0
  793. data/helpers/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php +58 -0
  794. data/helpers/vendor/symfony/finder/Iterator/FilenameFilterIterator.php +47 -0
  795. data/helpers/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php +112 -0
  796. data/helpers/vendor/symfony/finder/Iterator/PathFilterIterator.php +56 -0
  797. data/helpers/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php +140 -0
  798. data/helpers/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php +57 -0
  799. data/helpers/vendor/symfony/finder/Iterator/SortableIterator.php +99 -0
  800. data/helpers/vendor/symfony/finder/LICENSE +19 -0
  801. data/helpers/vendor/symfony/finder/README.md +14 -0
  802. data/helpers/vendor/symfony/finder/SplFileInfo.php +85 -0
  803. data/helpers/vendor/symfony/finder/Tests/Comparator/ComparatorTest.php +65 -0
  804. data/helpers/vendor/symfony/finder/Tests/Comparator/DateComparatorTest.php +64 -0
  805. data/helpers/vendor/symfony/finder/Tests/Comparator/NumberComparatorTest.php +108 -0
  806. data/helpers/vendor/symfony/finder/Tests/FinderTest.php +1459 -0
  807. data/helpers/vendor/symfony/finder/Tests/Fixtures/.dot/a +0 -0
  808. data/helpers/vendor/symfony/finder/Tests/Fixtures/.dot/b/c.neon +0 -0
  809. data/helpers/vendor/symfony/finder/Tests/Fixtures/.dot/b/d.neon +0 -0
  810. data/helpers/vendor/symfony/finder/Tests/Fixtures/A/B/C/abc.dat +0 -0
  811. data/helpers/vendor/symfony/finder/Tests/Fixtures/A/B/ab.dat +0 -0
  812. data/helpers/vendor/symfony/finder/Tests/Fixtures/A/a.dat +0 -0
  813. data/helpers/vendor/symfony/finder/Tests/Fixtures/copy/A/B/C/abc.dat.copy +0 -0
  814. data/helpers/vendor/symfony/finder/Tests/Fixtures/copy/A/B/ab.dat.copy +0 -0
  815. data/helpers/vendor/symfony/finder/Tests/Fixtures/copy/A/a.dat.copy +0 -0
  816. data/helpers/vendor/symfony/finder/Tests/Fixtures/dolor.txt +2 -0
  817. data/helpers/vendor/symfony/finder/Tests/Fixtures/ipsum.txt +2 -0
  818. data/helpers/vendor/symfony/finder/Tests/Fixtures/lorem.txt +2 -0
  819. data/helpers/vendor/symfony/finder/Tests/Fixtures/one/.dot +1 -0
  820. data/helpers/vendor/symfony/finder/Tests/Fixtures/one/a +0 -0
  821. data/helpers/vendor/symfony/finder/Tests/Fixtures/one/b/c.neon +0 -0
  822. data/helpers/vendor/symfony/finder/Tests/Fixtures/one/b/d.neon +0 -0
  823. data/helpers/vendor/symfony/finder/Tests/Fixtures/r+e.gex[c]a(r)s/dir/bar.dat +0 -0
  824. 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
  825. data/helpers/vendor/symfony/finder/Tests/GitignoreTest.php +118 -0
  826. data/helpers/vendor/symfony/finder/Tests/GlobTest.php +95 -0
  827. data/helpers/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php +46 -0
  828. data/helpers/vendor/symfony/finder/Tests/Iterator/DateRangeFilterIteratorTest.php +92 -0
  829. data/helpers/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php +105 -0
  830. data/helpers/vendor/symfony/finder/Tests/Iterator/ExcludeDirectoryFilterIteratorTest.php +110 -0
  831. data/helpers/vendor/symfony/finder/Tests/Iterator/FileTypeFilterIteratorTest.php +82 -0
  832. data/helpers/vendor/symfony/finder/Tests/Iterator/FilecontentFilterIteratorTest.php +86 -0
  833. data/helpers/vendor/symfony/finder/Tests/Iterator/FilenameFilterIteratorTest.php +54 -0
  834. data/helpers/vendor/symfony/finder/Tests/Iterator/Iterator.php +55 -0
  835. data/helpers/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php +100 -0
  836. data/helpers/vendor/symfony/finder/Tests/Iterator/MockFileListIterator.php +21 -0
  837. data/helpers/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php +132 -0
  838. data/helpers/vendor/symfony/finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php +71 -0
  839. data/helpers/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php +82 -0
  840. data/helpers/vendor/symfony/finder/Tests/Iterator/RealIteratorTestCase.php +130 -0
  841. data/helpers/vendor/symfony/finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php +59 -0
  842. data/helpers/vendor/symfony/finder/Tests/Iterator/SizeRangeFilterIteratorTest.php +70 -0
  843. data/helpers/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php +262 -0
  844. data/helpers/vendor/symfony/finder/composer.json +33 -0
  845. data/helpers/vendor/symfony/finder/phpunit.xml.dist +30 -0
  846. data/helpers/vendor/symfony/polyfill-ctype/Ctype.php +227 -0
  847. data/helpers/vendor/symfony/polyfill-ctype/LICENSE +19 -0
  848. data/helpers/vendor/symfony/polyfill-ctype/README.md +12 -0
  849. data/helpers/vendor/symfony/polyfill-ctype/bootstrap.php +26 -0
  850. data/helpers/vendor/symfony/polyfill-ctype/composer.json +34 -0
  851. data/helpers/vendor/symfony/polyfill-mbstring/LICENSE +19 -0
  852. data/helpers/vendor/symfony/polyfill-mbstring/Mbstring.php +800 -0
  853. data/helpers/vendor/symfony/polyfill-mbstring/README.md +13 -0
  854. data/helpers/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1096 -0
  855. data/helpers/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -0
  856. data/helpers/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1104 -0
  857. data/helpers/vendor/symfony/polyfill-mbstring/bootstrap.php +58 -0
  858. data/helpers/vendor/symfony/polyfill-mbstring/composer.json +34 -0
  859. data/helpers/vendor/symfony/polyfill-php73/LICENSE +19 -0
  860. data/helpers/vendor/symfony/polyfill-php73/Php73.php +34 -0
  861. data/helpers/vendor/symfony/polyfill-php73/README.md +18 -0
  862. data/helpers/vendor/symfony/polyfill-php73/Resources/stubs/JsonException.php +14 -0
  863. data/helpers/vendor/symfony/polyfill-php73/bootstrap.php +31 -0
  864. data/helpers/vendor/symfony/polyfill-php73/composer.json +32 -0
  865. data/helpers/vendor/symfony/process/.gitignore +3 -0
  866. data/helpers/vendor/symfony/process/CHANGELOG.md +90 -0
  867. data/helpers/vendor/symfony/process/Exception/ExceptionInterface.php +21 -0
  868. data/helpers/vendor/symfony/process/Exception/InvalidArgumentException.php +21 -0
  869. data/helpers/vendor/symfony/process/Exception/LogicException.php +21 -0
  870. data/helpers/vendor/symfony/process/Exception/ProcessFailedException.php +54 -0
  871. data/helpers/vendor/symfony/process/Exception/ProcessSignaledException.php +41 -0
  872. data/helpers/vendor/symfony/process/Exception/ProcessTimedOutException.php +69 -0
  873. data/helpers/vendor/symfony/process/Exception/RuntimeException.php +21 -0
  874. data/helpers/vendor/symfony/process/ExecutableFinder.php +88 -0
  875. data/helpers/vendor/symfony/process/InputStream.php +90 -0
  876. data/helpers/vendor/symfony/process/LICENSE +19 -0
  877. data/helpers/vendor/symfony/process/PhpExecutableFinder.php +101 -0
  878. data/helpers/vendor/symfony/process/PhpProcess.php +75 -0
  879. data/helpers/vendor/symfony/process/Pipes/AbstractPipes.php +178 -0
  880. data/helpers/vendor/symfony/process/Pipes/PipesInterface.php +67 -0
  881. data/helpers/vendor/symfony/process/Pipes/UnixPipes.php +153 -0
  882. data/helpers/vendor/symfony/process/Pipes/WindowsPipes.php +191 -0
  883. data/helpers/vendor/symfony/process/Process.php +1653 -0
  884. data/helpers/vendor/symfony/process/ProcessUtils.php +69 -0
  885. data/helpers/vendor/symfony/process/README.md +13 -0
  886. data/helpers/vendor/symfony/process/Tests/ErrorProcessInitiator.php +36 -0
  887. data/helpers/vendor/symfony/process/Tests/ExecutableFinderTest.php +178 -0
  888. data/helpers/vendor/symfony/process/Tests/KillableProcessWithOutput.php +25 -0
  889. data/helpers/vendor/symfony/process/Tests/NonStopableProcess.php +47 -0
  890. data/helpers/vendor/symfony/process/Tests/PhpExecutableFinderTest.php +49 -0
  891. data/helpers/vendor/symfony/process/Tests/PhpProcessTest.php +63 -0
  892. data/helpers/vendor/symfony/process/Tests/PipeStdinInStdoutStdErrStreamSelect.php +72 -0
  893. data/helpers/vendor/symfony/process/Tests/ProcessFailedExceptionTest.php +137 -0
  894. data/helpers/vendor/symfony/process/Tests/ProcessTest.php +1557 -0
  895. data/helpers/vendor/symfony/process/Tests/SignalListener.php +21 -0
  896. data/helpers/vendor/symfony/process/composer.json +33 -0
  897. data/helpers/vendor/symfony/process/phpunit.xml.dist +30 -0
  898. data/helpers/vendor/symfony/service-contracts/LICENSE +19 -0
  899. data/helpers/vendor/symfony/service-contracts/README.md +9 -0
  900. data/helpers/vendor/symfony/service-contracts/ResetInterface.php +30 -0
  901. data/helpers/vendor/symfony/service-contracts/ServiceLocatorTrait.php +120 -0
  902. data/helpers/vendor/symfony/service-contracts/ServiceProviderInterface.php +36 -0
  903. data/helpers/vendor/symfony/service-contracts/ServiceSubscriberInterface.php +53 -0
  904. data/helpers/vendor/symfony/service-contracts/ServiceSubscriberTrait.php +61 -0
  905. data/helpers/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php +94 -0
  906. data/helpers/vendor/symfony/service-contracts/composer.json +34 -0
  907. metadata +908 -3
@@ -0,0 +1,207 @@
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\IO;
14
+
15
+ use Composer\Config;
16
+
17
+ /**
18
+ * The Input/Output helper interface.
19
+ *
20
+ * @author François Pluchino <francois.pluchino@opendisplay.com>
21
+ */
22
+ interface IOInterface
23
+ {
24
+ const QUIET = 1;
25
+ const NORMAL = 2;
26
+ const VERBOSE = 4;
27
+ const VERY_VERBOSE = 8;
28
+ const DEBUG = 16;
29
+
30
+ /**
31
+ * Is this input means interactive?
32
+ *
33
+ * @return bool
34
+ */
35
+ public function isInteractive();
36
+
37
+ /**
38
+ * Is this output verbose?
39
+ *
40
+ * @return bool
41
+ */
42
+ public function isVerbose();
43
+
44
+ /**
45
+ * Is the output very verbose?
46
+ *
47
+ * @return bool
48
+ */
49
+ public function isVeryVerbose();
50
+
51
+ /**
52
+ * Is the output in debug verbosity?
53
+ *
54
+ * @return bool
55
+ */
56
+ public function isDebug();
57
+
58
+ /**
59
+ * Is this output decorated?
60
+ *
61
+ * @return bool
62
+ */
63
+ public function isDecorated();
64
+
65
+ /**
66
+ * Writes a message to the output.
67
+ *
68
+ * @param string|array $messages The message as an array of lines or a single string
69
+ * @param bool $newline Whether to add a newline or not
70
+ * @param int $verbosity Verbosity level from the VERBOSITY_* constants
71
+ */
72
+ public function write($messages, $newline = true, $verbosity = self::NORMAL);
73
+
74
+ /**
75
+ * Writes a message to the error output.
76
+ *
77
+ * @param string|array $messages The message as an array of lines or a single string
78
+ * @param bool $newline Whether to add a newline or not
79
+ * @param int $verbosity Verbosity level from the VERBOSITY_* constants
80
+ */
81
+ public function writeError($messages, $newline = true, $verbosity = self::NORMAL);
82
+
83
+ /**
84
+ * Overwrites a previous message to the output.
85
+ *
86
+ * @param string|array $messages The message as an array of lines or a single string
87
+ * @param bool $newline Whether to add a newline or not
88
+ * @param int $size The size of line
89
+ * @param int $verbosity Verbosity level from the VERBOSITY_* constants
90
+ */
91
+ public function overwrite($messages, $newline = true, $size = null, $verbosity = self::NORMAL);
92
+
93
+ /**
94
+ * Overwrites a previous message to the error output.
95
+ *
96
+ * @param string|array $messages The message as an array of lines or a single string
97
+ * @param bool $newline Whether to add a newline or not
98
+ * @param int $size The size of line
99
+ * @param int $verbosity Verbosity level from the VERBOSITY_* constants
100
+ */
101
+ public function overwriteError($messages, $newline = true, $size = null, $verbosity = self::NORMAL);
102
+
103
+ /**
104
+ * Asks a question to the user.
105
+ *
106
+ * @param string $question The question to ask
107
+ * @param string $default The default answer if none is given by the user
108
+ *
109
+ * @throws \RuntimeException If there is no data to read in the input stream
110
+ * @return string The user answer
111
+ */
112
+ public function ask($question, $default = null);
113
+
114
+ /**
115
+ * Asks a confirmation to the user.
116
+ *
117
+ * The question will be asked until the user answers by nothing, yes, or no.
118
+ *
119
+ * @param string $question The question to ask
120
+ * @param bool $default The default answer if the user enters nothing
121
+ *
122
+ * @return bool true if the user has confirmed, false otherwise
123
+ */
124
+ public function askConfirmation($question, $default = true);
125
+
126
+ /**
127
+ * Asks for a value and validates the response.
128
+ *
129
+ * The validator receives the data to validate. It must return the
130
+ * validated data when the data is valid and throw an exception
131
+ * otherwise.
132
+ *
133
+ * @param string $question The question to ask
134
+ * @param callable $validator A PHP callback
135
+ * @param null|int $attempts Max number of times to ask before giving up (default of null means infinite)
136
+ * @param mixed $default The default answer if none is given by the user
137
+ *
138
+ * @throws \Exception When any of the validators return an error
139
+ * @return mixed
140
+ */
141
+ public function askAndValidate($question, $validator, $attempts = null, $default = null);
142
+
143
+ /**
144
+ * Asks a question to the user and hide the answer.
145
+ *
146
+ * @param string $question The question to ask
147
+ *
148
+ * @return string The answer
149
+ */
150
+ public function askAndHideAnswer($question);
151
+
152
+ /**
153
+ * Asks the user to select a value.
154
+ *
155
+ * @param string $question The question to ask
156
+ * @param array $choices List of choices to pick from
157
+ * @param bool|string $default The default answer if the user enters nothing
158
+ * @param bool|int $attempts Max number of times to ask before giving up (false by default, which means infinite)
159
+ * @param string $errorMessage Message which will be shown if invalid value from choice list would be picked
160
+ * @param bool $multiselect Select more than one value separated by comma
161
+ *
162
+ * @throws \InvalidArgumentException
163
+ * @return int|string|array The selected value or values (the key of the choices array)
164
+ */
165
+ public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false);
166
+
167
+ /**
168
+ * Get all authentication information entered.
169
+ *
170
+ * @return array The map of authentication data
171
+ */
172
+ public function getAuthentications();
173
+
174
+ /**
175
+ * Verify if the repository has a authentication information.
176
+ *
177
+ * @param string $repositoryName The unique name of repository
178
+ *
179
+ * @return bool
180
+ */
181
+ public function hasAuthentication($repositoryName);
182
+
183
+ /**
184
+ * Get the username and password of repository.
185
+ *
186
+ * @param string $repositoryName The unique name of repository
187
+ *
188
+ * @return array The 'username' and 'password'
189
+ */
190
+ public function getAuthentication($repositoryName);
191
+
192
+ /**
193
+ * Set the authentication information for the repository.
194
+ *
195
+ * @param string $repositoryName The unique name of repository
196
+ * @param string $username The username
197
+ * @param string $password The password
198
+ */
199
+ public function setAuthentication($repositoryName, $username, $password = null);
200
+
201
+ /**
202
+ * Loads authentications from a config instance
203
+ *
204
+ * @param Config $config
205
+ */
206
+ public function loadConfiguration(Config $config);
207
+ }
@@ -0,0 +1,129 @@
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\IO;
14
+
15
+ /**
16
+ * IOInterface that is not interactive and never writes the output
17
+ *
18
+ * @author Christophe Coevoet <stof@notk.org>
19
+ */
20
+ class NullIO extends BaseIO
21
+ {
22
+ /**
23
+ * {@inheritDoc}
24
+ */
25
+ public function isInteractive()
26
+ {
27
+ return false;
28
+ }
29
+
30
+ /**
31
+ * {@inheritDoc}
32
+ */
33
+ public function isVerbose()
34
+ {
35
+ return false;
36
+ }
37
+
38
+ /**
39
+ * {@inheritDoc}
40
+ */
41
+ public function isVeryVerbose()
42
+ {
43
+ return false;
44
+ }
45
+
46
+ /**
47
+ * {@inheritDoc}
48
+ */
49
+ public function isDebug()
50
+ {
51
+ return false;
52
+ }
53
+
54
+ /**
55
+ * {@inheritDoc}
56
+ */
57
+ public function isDecorated()
58
+ {
59
+ return false;
60
+ }
61
+
62
+ /**
63
+ * {@inheritDoc}
64
+ */
65
+ public function write($messages, $newline = true, $verbosity = self::NORMAL)
66
+ {
67
+ }
68
+
69
+ /**
70
+ * {@inheritDoc}
71
+ */
72
+ public function writeError($messages, $newline = true, $verbosity = self::NORMAL)
73
+ {
74
+ }
75
+
76
+ /**
77
+ * {@inheritDoc}
78
+ */
79
+ public function overwrite($messages, $newline = true, $size = 80, $verbosity = self::NORMAL)
80
+ {
81
+ }
82
+
83
+ /**
84
+ * {@inheritDoc}
85
+ */
86
+ public function overwriteError($messages, $newline = true, $size = 80, $verbosity = self::NORMAL)
87
+ {
88
+ }
89
+
90
+ /**
91
+ * {@inheritDoc}
92
+ */
93
+ public function ask($question, $default = null)
94
+ {
95
+ return $default;
96
+ }
97
+
98
+ /**
99
+ * {@inheritDoc}
100
+ */
101
+ public function askConfirmation($question, $default = true)
102
+ {
103
+ return $default;
104
+ }
105
+
106
+ /**
107
+ * {@inheritDoc}
108
+ */
109
+ public function askAndValidate($question, $validator, $attempts = false, $default = null)
110
+ {
111
+ return $default;
112
+ }
113
+
114
+ /**
115
+ * {@inheritDoc}
116
+ */
117
+ public function askAndHideAnswer($question)
118
+ {
119
+ return null;
120
+ }
121
+
122
+ /**
123
+ * {@inheritDoc}
124
+ */
125
+ public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false)
126
+ {
127
+ return $default;
128
+ }
129
+ }
@@ -0,0 +1,1803 @@
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;
14
+
15
+ use Composer\Autoload\AutoloadGenerator;
16
+ use Composer\DependencyResolver\DefaultPolicy;
17
+ use Composer\DependencyResolver\Operation\UpdateOperation;
18
+ use Composer\DependencyResolver\Operation\InstallOperation;
19
+ use Composer\DependencyResolver\Operation\UninstallOperation;
20
+ use Composer\DependencyResolver\Operation\MarkAliasUninstalledOperation;
21
+ use Composer\DependencyResolver\Operation\OperationInterface;
22
+ use Composer\DependencyResolver\PolicyInterface;
23
+ use Composer\DependencyResolver\Pool;
24
+ use Composer\DependencyResolver\Request;
25
+ use Composer\DependencyResolver\Rule;
26
+ use Composer\DependencyResolver\Solver;
27
+ use Composer\DependencyResolver\SolverProblemsException;
28
+ use Composer\Downloader\DownloadManager;
29
+ use Composer\EventDispatcher\EventDispatcher;
30
+ use Composer\Installer\InstallationManager;
31
+ use Composer\Installer\InstallerEvents;
32
+ use Composer\Installer\NoopInstaller;
33
+ use Composer\Installer\SuggestedPackagesReporter;
34
+ use Composer\IO\IOInterface;
35
+ use Composer\Package\AliasPackage;
36
+ use Composer\Package\BasePackage;
37
+ use Composer\Package\CompletePackage;
38
+ use Composer\Package\Link;
39
+ use Composer\Package\Loader\ArrayLoader;
40
+ use Composer\Package\Dumper\ArrayDumper;
41
+ use Composer\Semver\Constraint\Constraint;
42
+ use Composer\Package\Locker;
43
+ use Composer\Package\PackageInterface;
44
+ use Composer\Package\RootPackageInterface;
45
+ use Composer\Repository\CompositeRepository;
46
+ use Composer\Repository\InstalledArrayRepository;
47
+ use Composer\Repository\PlatformRepository;
48
+ use Composer\Repository\RepositoryInterface;
49
+ use Composer\Repository\RepositoryManager;
50
+ use Composer\Repository\WritableRepositoryInterface;
51
+ use Composer\Script\ScriptEvents;
52
+
53
+ /**
54
+ * @author Jordi Boggiano <j.boggiano@seld.be>
55
+ * @author Beau Simensen <beau@dflydev.com>
56
+ * @author Konstantin Kudryashov <ever.zet@gmail.com>
57
+ * @author Nils Adermann <naderman@naderman.de>
58
+ */
59
+ class Installer
60
+ {
61
+ /**
62
+ * @var IOInterface
63
+ */
64
+ protected $io;
65
+
66
+ /**
67
+ * @var Config
68
+ */
69
+ protected $config;
70
+
71
+ /**
72
+ * @var RootPackageInterface
73
+ */
74
+ protected $package;
75
+
76
+ /**
77
+ * @var DownloadManager
78
+ */
79
+ protected $downloadManager;
80
+
81
+ /**
82
+ * @var RepositoryManager
83
+ */
84
+ protected $repositoryManager;
85
+
86
+ /**
87
+ * @var Locker
88
+ */
89
+ protected $locker;
90
+
91
+ /**
92
+ * @var InstallationManager
93
+ */
94
+ protected $installationManager;
95
+
96
+ /**
97
+ * @var EventDispatcher
98
+ */
99
+ protected $eventDispatcher;
100
+
101
+ /**
102
+ * @var AutoloadGenerator
103
+ */
104
+ protected $autoloadGenerator;
105
+
106
+ protected $preferSource = false;
107
+ protected $preferDist = false;
108
+ protected $optimizeAutoloader = false;
109
+ protected $classMapAuthoritative = false;
110
+ protected $apcuAutoloader = false;
111
+ protected $devMode = false;
112
+ protected $dryRun = false;
113
+ protected $verbose = false;
114
+ protected $update = false;
115
+ protected $dumpAutoloader = true;
116
+ protected $runScripts = true;
117
+ protected $ignorePlatformReqs = false;
118
+ protected $preferStable = false;
119
+ protected $preferLowest = false;
120
+ protected $skipSuggest = false;
121
+ protected $writeLock = true;
122
+ protected $executeOperations = true;
123
+
124
+ /**
125
+ * Array of package names/globs flagged for update
126
+ *
127
+ * @var array|null
128
+ */
129
+ protected $updateWhitelist = null;
130
+ protected $whitelistDependencies = false; // TODO 2.0 rename to whitelistTransitiveDependencies
131
+ protected $whitelistAllDependencies = false;
132
+
133
+ /**
134
+ * @var SuggestedPackagesReporter
135
+ */
136
+ protected $suggestedPackagesReporter;
137
+
138
+ /**
139
+ * @var RepositoryInterface
140
+ */
141
+ protected $additionalInstalledRepository;
142
+
143
+ /**
144
+ * Constructor
145
+ *
146
+ * @param IOInterface $io
147
+ * @param Config $config
148
+ * @param RootPackageInterface $package
149
+ * @param DownloadManager $downloadManager
150
+ * @param RepositoryManager $repositoryManager
151
+ * @param Locker $locker
152
+ * @param InstallationManager $installationManager
153
+ * @param EventDispatcher $eventDispatcher
154
+ * @param AutoloadGenerator $autoloadGenerator
155
+ */
156
+ public function __construct(IOInterface $io, Config $config, RootPackageInterface $package, DownloadManager $downloadManager, RepositoryManager $repositoryManager, Locker $locker, InstallationManager $installationManager, EventDispatcher $eventDispatcher, AutoloadGenerator $autoloadGenerator)
157
+ {
158
+ $this->io = $io;
159
+ $this->config = $config;
160
+ $this->package = $package;
161
+ $this->downloadManager = $downloadManager;
162
+ $this->repositoryManager = $repositoryManager;
163
+ $this->locker = $locker;
164
+ $this->installationManager = $installationManager;
165
+ $this->eventDispatcher = $eventDispatcher;
166
+ $this->autoloadGenerator = $autoloadGenerator;
167
+ }
168
+
169
+ /**
170
+ * Run installation (or update)
171
+ *
172
+ * @throws \Exception
173
+ * @return int 0 on success or a positive error code on failure
174
+ */
175
+ public function run()
176
+ {
177
+ // Disable GC to save CPU cycles, as the dependency solver can create hundreds of thousands
178
+ // of PHP objects, the GC can spend quite some time walking the tree of references looking
179
+ // for stuff to collect while there is nothing to collect. This slows things down dramatically
180
+ // and turning it off results in much better performance. Do not try this at home however.
181
+ gc_collect_cycles();
182
+ gc_disable();
183
+
184
+ // Force update if there is no lock file present
185
+ if (!$this->update && !$this->locker->isLocked()) {
186
+ $this->update = true;
187
+ }
188
+
189
+ if ($this->dryRun) {
190
+ $this->verbose = true;
191
+ $this->runScripts = false;
192
+ $this->executeOperations = false;
193
+ $this->writeLock = false;
194
+ $this->dumpAutoloader = false;
195
+ $this->installationManager->addInstaller(new NoopInstaller);
196
+ $this->mockLocalRepositories($this->repositoryManager);
197
+ }
198
+
199
+ if ($this->runScripts) {
200
+ $devMode = (int) $this->devMode;
201
+ putenv("COMPOSER_DEV_MODE=$devMode");
202
+
203
+ // dispatch pre event
204
+ $eventName = $this->update ? ScriptEvents::PRE_UPDATE_CMD : ScriptEvents::PRE_INSTALL_CMD;
205
+ $this->eventDispatcher->dispatchScript($eventName, $this->devMode);
206
+ }
207
+
208
+ $this->downloadManager->setPreferSource($this->preferSource);
209
+ $this->downloadManager->setPreferDist($this->preferDist);
210
+
211
+ // create installed repo, this contains all local packages + platform packages (php & extensions)
212
+ $localRepo = $this->repositoryManager->getLocalRepository();
213
+ if ($this->update) {
214
+ $platformOverrides = $this->config->get('platform') ?: array();
215
+ } else {
216
+ $platformOverrides = $this->locker->getPlatformOverrides();
217
+ }
218
+ $platformRepo = new PlatformRepository(array(), $platformOverrides);
219
+ $installedRepo = $this->createInstalledRepo($localRepo, $platformRepo);
220
+
221
+ $aliases = $this->getRootAliases();
222
+ $this->aliasPlatformPackages($platformRepo, $aliases);
223
+
224
+ if (!$this->suggestedPackagesReporter) {
225
+ $this->suggestedPackagesReporter = new SuggestedPackagesReporter($this->io);
226
+ }
227
+
228
+ try {
229
+ list($res, $devPackages) = $this->doInstall($localRepo, $installedRepo, $platformRepo, $aliases);
230
+ if ($res !== 0) {
231
+ return $res;
232
+ }
233
+ } catch (\Exception $e) {
234
+ if ($this->executeOperations) {
235
+ $this->installationManager->notifyInstalls($this->io);
236
+ }
237
+
238
+ throw $e;
239
+ }
240
+ if ($this->executeOperations) {
241
+ $this->installationManager->notifyInstalls($this->io);
242
+ }
243
+
244
+ // output suggestions if we're in dev mode
245
+ if ($this->devMode && !$this->skipSuggest) {
246
+ $this->suggestedPackagesReporter->output($installedRepo);
247
+ }
248
+
249
+ # Find abandoned packages and warn user
250
+ foreach ($localRepo->getPackages() as $package) {
251
+ if (!$package instanceof CompletePackage || !$package->isAbandoned()) {
252
+ continue;
253
+ }
254
+
255
+ $replacement = is_string($package->getReplacementPackage())
256
+ ? 'Use ' . $package->getReplacementPackage() . ' instead'
257
+ : 'No replacement was suggested';
258
+
259
+ $this->io->writeError(
260
+ sprintf(
261
+ "<warning>Package %s is abandoned, you should avoid using it. %s.</warning>",
262
+ $package->getPrettyName(),
263
+ $replacement
264
+ )
265
+ );
266
+ }
267
+
268
+ // write lock
269
+ if ($this->update && $this->writeLock) {
270
+ $localRepo->reload();
271
+
272
+ $platformReqs = $this->extractPlatformRequirements($this->package->getRequires());
273
+ $platformDevReqs = $this->extractPlatformRequirements($this->package->getDevRequires());
274
+
275
+ $updatedLock = $this->locker->setLockData(
276
+ array_diff($localRepo->getCanonicalPackages(), $devPackages),
277
+ $devPackages,
278
+ $platformReqs,
279
+ $platformDevReqs,
280
+ $aliases,
281
+ $this->package->getMinimumStability(),
282
+ $this->package->getStabilityFlags(),
283
+ $this->preferStable || $this->package->getPreferStable(),
284
+ $this->preferLowest,
285
+ $this->config->get('platform') ?: array()
286
+ );
287
+ if ($updatedLock) {
288
+ $this->io->writeError('<info>Writing lock file</info>');
289
+ }
290
+ }
291
+
292
+ if ($this->dumpAutoloader) {
293
+ // write autoloader
294
+ if ($this->optimizeAutoloader) {
295
+ $this->io->writeError('<info>Generating optimized autoload files</info>');
296
+ } else {
297
+ $this->io->writeError('<info>Generating autoload files</info>');
298
+ }
299
+
300
+ $this->autoloadGenerator->setDevMode($this->devMode);
301
+ $this->autoloadGenerator->setClassMapAuthoritative($this->classMapAuthoritative);
302
+ $this->autoloadGenerator->setApcu($this->apcuAutoloader);
303
+ $this->autoloadGenerator->setRunScripts($this->runScripts);
304
+ $this->autoloadGenerator->dump($this->config, $localRepo, $this->package, $this->installationManager, 'composer', $this->optimizeAutoloader);
305
+ }
306
+
307
+ if ($this->executeOperations) {
308
+ // force binaries re-generation in case they are missing
309
+ foreach ($localRepo->getPackages() as $package) {
310
+ $this->installationManager->ensureBinariesPresence($package);
311
+ }
312
+
313
+ $vendorDir = $this->config->get('vendor-dir');
314
+ if (is_dir($vendorDir)) {
315
+ // suppress errors as this fails sometimes on OSX for no apparent reason
316
+ // see https://github.com/composer/composer/issues/4070#issuecomment-129792748
317
+ @touch($vendorDir);
318
+ }
319
+ }
320
+
321
+ if ($this->runScripts) {
322
+ // dispatch post event
323
+ $eventName = $this->update ? ScriptEvents::POST_UPDATE_CMD : ScriptEvents::POST_INSTALL_CMD;
324
+ $this->eventDispatcher->dispatchScript($eventName, $this->devMode);
325
+ }
326
+
327
+ // re-enable GC except on HHVM which triggers a warning here
328
+ if (!defined('HHVM_VERSION')) {
329
+ gc_enable();
330
+ }
331
+
332
+ return 0;
333
+ }
334
+
335
+ /**
336
+ * @param RepositoryInterface $localRepo
337
+ * @param RepositoryInterface $installedRepo
338
+ * @param PlatformRepository $platformRepo
339
+ * @param array $aliases
340
+ * @return array [int, PackageInterfaces[]|null] with the exit code and an array of dev packages on update, or null on install
341
+ */
342
+ protected function doInstall($localRepo, $installedRepo, $platformRepo, $aliases)
343
+ {
344
+ // init vars
345
+ $lockedRepository = null;
346
+ $repositories = null;
347
+
348
+ // initialize locked repo if we are installing from lock or in a partial update
349
+ // and a lock file is present as we need to force install non-whitelisted lock file
350
+ // packages in that case
351
+ if (!$this->update || (!empty($this->updateWhitelist) && $this->locker->isLocked())) {
352
+ try {
353
+ $lockedRepository = $this->locker->getLockedRepository($this->devMode);
354
+ } catch (\RuntimeException $e) {
355
+ // if there are dev requires, then we really can not install
356
+ if ($this->package->getDevRequires()) {
357
+ throw $e;
358
+ }
359
+ // no require-dev in composer.json and the lock file was created with no dev info, so skip them
360
+ $lockedRepository = $this->locker->getLockedRepository();
361
+ }
362
+ }
363
+
364
+ $this->whitelistUpdateDependencies(
365
+ $lockedRepository ?: $localRepo,
366
+ $this->package->getRequires(),
367
+ $this->package->getDevRequires()
368
+ );
369
+
370
+ $this->io->writeError('<info>Loading composer repositories with package information</info>');
371
+
372
+ // creating repository pool
373
+ $policy = $this->createPolicy();
374
+ $pool = $this->createPool($this->update ? null : $lockedRepository);
375
+ $pool->addRepository($installedRepo, $aliases);
376
+ if ($this->update) {
377
+ $repositories = $this->repositoryManager->getRepositories();
378
+ foreach ($repositories as $repository) {
379
+ $pool->addRepository($repository, $aliases);
380
+ }
381
+ }
382
+ // Add the locked repository after the others in case we are doing a
383
+ // partial update so missing packages can be found there still.
384
+ // For installs from lock it's the only one added so it is first
385
+ if ($lockedRepository) {
386
+ $pool->addRepository($lockedRepository, $aliases);
387
+ }
388
+
389
+ // creating requirements request
390
+ $request = $this->createRequest($this->package, $platformRepo);
391
+
392
+ if ($this->update) {
393
+ // remove unstable packages from the localRepo if they don't match the current stability settings
394
+ $removedUnstablePackages = array();
395
+ foreach ($localRepo->getPackages() as $package) {
396
+ if (
397
+ !$pool->isPackageAcceptable($package->getNames(), $package->getStability())
398
+ && $this->installationManager->isPackageInstalled($localRepo, $package)
399
+ ) {
400
+ $removedUnstablePackages[$package->getName()] = true;
401
+ $request->remove($package->getName(), new Constraint('=', $package->getVersion()));
402
+ }
403
+ }
404
+
405
+ $this->io->writeError('<info>Updating dependencies'.($this->devMode ? ' (including require-dev)' : '').'</info>');
406
+
407
+ $request->updateAll();
408
+
409
+ $links = array_merge($this->package->getRequires(), $this->package->getDevRequires());
410
+
411
+ foreach ($links as $link) {
412
+ $request->install($link->getTarget(), $link->getConstraint());
413
+ }
414
+
415
+ // if the updateWhitelist is enabled, packages not in it are also fixed
416
+ // to the version specified in the lock, or their currently installed version
417
+ if ($this->updateWhitelist) {
418
+ $currentPackages = $this->getCurrentPackages($installedRepo);
419
+
420
+ // collect packages to fixate from root requirements as well as installed packages
421
+ $candidates = array();
422
+ foreach ($links as $link) {
423
+ $candidates[$link->getTarget()] = true;
424
+ $rootRequires[$link->getTarget()] = $link;
425
+ }
426
+ foreach ($currentPackages as $package) {
427
+ $candidates[$package->getName()] = true;
428
+ }
429
+
430
+ // fix them to the version in lock (or currently installed) if they are not updateable
431
+ foreach ($candidates as $candidate => $dummy) {
432
+ foreach ($currentPackages as $curPackage) {
433
+ if ($curPackage->getName() === $candidate) {
434
+ if (!$this->isUpdateable($curPackage) && !isset($removedUnstablePackages[$curPackage->getName()])) {
435
+ $constraint = new Constraint('=', $curPackage->getVersion());
436
+ $description = $this->locker->isLocked() ? '(locked at' : '(installed at';
437
+ $requiredAt = isset($rootRequires[$candidate]) ? ', required as ' . $rootRequires[$candidate]->getPrettyConstraint() : '';
438
+ $constraint->setPrettyString($description . ' ' . $curPackage->getPrettyVersion() . $requiredAt . ')');
439
+ $request->install($curPackage->getName(), $constraint);
440
+ }
441
+ break;
442
+ }
443
+ }
444
+ }
445
+ }
446
+ } else {
447
+ $this->io->writeError('<info>Installing dependencies'.($this->devMode ? ' (including require-dev)' : '').' from lock file</info>');
448
+
449
+ if (!$this->locker->isFresh()) {
450
+ $this->io->writeError('<warning>Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.</warning>', true, IOInterface::QUIET);
451
+ }
452
+
453
+ foreach ($lockedRepository->getPackages() as $package) {
454
+ $version = $package->getVersion();
455
+ if (isset($aliases[$package->getName()][$version])) {
456
+ $version = $aliases[$package->getName()][$version]['alias_normalized'];
457
+ }
458
+ $constraint = new Constraint('=', $version);
459
+ $constraint->setPrettyString($package->getPrettyVersion());
460
+ $request->install($package->getName(), $constraint);
461
+ }
462
+
463
+ foreach ($this->locker->getPlatformRequirements($this->devMode) as $link) {
464
+ $request->install($link->getTarget(), $link->getConstraint());
465
+ }
466
+ }
467
+
468
+ // force dev packages to have the latest links if we update or install from a (potentially new) lock
469
+ $this->processDevPackages($localRepo, $pool, $policy, $repositories, $installedRepo, $lockedRepository, 'force-links');
470
+
471
+ // solve dependencies
472
+ $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::PRE_DEPENDENCIES_SOLVING, $this->devMode, $policy, $pool, $installedRepo, $request);
473
+ $solver = new Solver($policy, $pool, $installedRepo, $this->io);
474
+ try {
475
+ $operations = $solver->solve($request, $this->ignorePlatformReqs);
476
+ $ruleSetSize = $solver->getRuleSetSize();
477
+ $solver = null;
478
+ } catch (SolverProblemsException $e) {
479
+ $this->io->writeError('<error>Your requirements could not be resolved to an installable set of packages.</error>', true, IOInterface::QUIET);
480
+ $this->io->writeError($e->getMessage());
481
+ if ($this->update && !$this->devMode) {
482
+ $this->io->writeError('<warning>Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.</warning>', true, IOInterface::QUIET);
483
+ }
484
+
485
+ return array(max(1, $e->getCode()), array());
486
+ }
487
+
488
+ // force dev packages to be updated if we update or install from a (potentially new) lock
489
+ $operations = $this->processDevPackages($localRepo, $pool, $policy, $repositories, $installedRepo, $lockedRepository, 'force-updates', $operations);
490
+
491
+ $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::POST_DEPENDENCIES_SOLVING, $this->devMode, $policy, $pool, $installedRepo, $request, $operations);
492
+
493
+ $this->io->writeError("Analyzed ".count($pool)." packages to resolve dependencies", true, IOInterface::VERBOSE);
494
+ $this->io->writeError("Analyzed ".$ruleSetSize." rules to resolve dependencies", true, IOInterface::VERBOSE);
495
+
496
+ // execute operations
497
+ if (!$operations) {
498
+ $this->io->writeError('Nothing to install or update');
499
+ }
500
+
501
+ $operations = $this->movePluginsToFront($operations);
502
+ $operations = $this->moveUninstallsToFront($operations);
503
+
504
+ // extract dev packages and mark them to be skipped if it's a --no-dev install or update
505
+ // we also force them to be uninstalled if they are present in the local repo
506
+ if ($this->update) {
507
+ $devPackages = $this->extractDevPackages($operations, $localRepo, $platformRepo, $aliases);
508
+ if (!$this->devMode) {
509
+ $operations = $this->filterDevPackageOperations($devPackages, $operations, $localRepo);
510
+ }
511
+ } else {
512
+ $devPackages = null;
513
+ }
514
+
515
+ if ($operations) {
516
+ $installs = $updates = $uninstalls = array();
517
+ foreach ($operations as $operation) {
518
+ if ($operation instanceof InstallOperation) {
519
+ $installs[] = $operation->getPackage()->getPrettyName().':'.$operation->getPackage()->getFullPrettyVersion();
520
+ } elseif ($operation instanceof UpdateOperation) {
521
+ $updates[] = $operation->getTargetPackage()->getPrettyName().':'.$operation->getTargetPackage()->getFullPrettyVersion();
522
+ } elseif ($operation instanceof UninstallOperation) {
523
+ $uninstalls[] = $operation->getPackage()->getPrettyName();
524
+ }
525
+ }
526
+
527
+ $this->io->writeError(sprintf(
528
+ "<info>Package operations: %d install%s, %d update%s, %d removal%s</info>",
529
+ count($installs),
530
+ 1 === count($installs) ? '' : 's',
531
+ count($updates),
532
+ 1 === count($updates) ? '' : 's',
533
+ count($uninstalls),
534
+ 1 === count($uninstalls) ? '' : 's'
535
+ ));
536
+ if ($installs) {
537
+ $this->io->writeError("Installs: ".implode(', ', $installs), true, IOInterface::VERBOSE);
538
+ }
539
+ if ($updates) {
540
+ $this->io->writeError("Updates: ".implode(', ', $updates), true, IOInterface::VERBOSE);
541
+ }
542
+ if ($uninstalls) {
543
+ $this->io->writeError("Removals: ".implode(', ', $uninstalls), true, IOInterface::VERBOSE);
544
+ }
545
+ }
546
+
547
+ foreach ($operations as $operation) {
548
+ // collect suggestions
549
+ $jobType = $operation->getJobType();
550
+ if ('install' === $jobType) {
551
+ $this->suggestedPackagesReporter->addSuggestionsFromPackage($operation->getPackage());
552
+ }
553
+
554
+ // updating, force dev packages' references if they're in root package refs
555
+ if ($this->update) {
556
+ $package = null;
557
+ if ('update' === $jobType) {
558
+ $package = $operation->getTargetPackage();
559
+ } elseif ('install' === $jobType) {
560
+ $package = $operation->getPackage();
561
+ }
562
+ if ($package && $package->isDev()) {
563
+ $references = $this->package->getReferences();
564
+ if (isset($references[$package->getName()])) {
565
+ $this->updateInstallReferences($package, $references[$package->getName()]);
566
+ }
567
+ }
568
+ if ('update' === $jobType) {
569
+ $targetPackage = $operation->getTargetPackage();
570
+ if ($targetPackage->isDev()) {
571
+ $initialPackage = $operation->getInitialPackage();
572
+ if ($targetPackage->getVersion() === $initialPackage->getVersion()
573
+ && (!$targetPackage->getSourceReference() || $targetPackage->getSourceReference() === $initialPackage->getSourceReference())
574
+ && (!$targetPackage->getDistReference() || $targetPackage->getDistReference() === $initialPackage->getDistReference())
575
+ ) {
576
+ $this->io->writeError(' - Skipping update of ' . $targetPackage->getPrettyName() . ' to the same reference-locked version', true, IOInterface::DEBUG);
577
+ $this->io->writeError('', true, IOInterface::DEBUG);
578
+
579
+ continue;
580
+ }
581
+ }
582
+ }
583
+ }
584
+
585
+ $event = 'Composer\Installer\PackageEvents::PRE_PACKAGE_'.strtoupper($jobType);
586
+ if (defined($event) && $this->runScripts) {
587
+ $this->eventDispatcher->dispatchPackageEvent(constant($event), $this->devMode, $policy, $pool, $installedRepo, $request, $operations, $operation);
588
+ }
589
+
590
+ // output non-alias ops when not executing operations (i.e. dry run), output alias ops in debug verbosity
591
+ if (!$this->executeOperations && false === strpos($operation->getJobType(), 'Alias')) {
592
+ $this->io->writeError(' - ' . $operation);
593
+ } elseif ($this->io->isDebug() && false !== strpos($operation->getJobType(), 'Alias')) {
594
+ $this->io->writeError(' - ' . $operation);
595
+ }
596
+
597
+ $this->installationManager->execute($localRepo, $operation);
598
+
599
+ // output reasons why the operation was ran, only for install/update operations
600
+ if ($this->verbose && $this->io->isVeryVerbose() && in_array($jobType, array('install', 'update'))) {
601
+ $reason = $operation->getReason();
602
+ if ($reason instanceof Rule) {
603
+ switch ($reason->getReason()) {
604
+ case Rule::RULE_JOB_INSTALL:
605
+ $this->io->writeError(' REASON: Required by the root package: '.$reason->getPrettyString($pool));
606
+ $this->io->writeError('');
607
+ break;
608
+ case Rule::RULE_PACKAGE_REQUIRES:
609
+ $this->io->writeError(' REASON: '.$reason->getPrettyString($pool));
610
+ $this->io->writeError('');
611
+ break;
612
+ }
613
+ }
614
+ }
615
+
616
+ if ($this->executeOperations || $this->writeLock) {
617
+ $localRepo->write();
618
+ }
619
+
620
+ $event = 'Composer\Installer\PackageEvents::POST_PACKAGE_'.strtoupper($jobType);
621
+ if (defined($event) && $this->runScripts) {
622
+ $this->eventDispatcher->dispatchPackageEvent(constant($event), $this->devMode, $policy, $pool, $installedRepo, $request, $operations, $operation);
623
+ }
624
+ }
625
+
626
+ if ($this->executeOperations) {
627
+ // force source/dist urls to be updated for all packages
628
+ $this->processPackageUrls($pool, $policy, $localRepo, $repositories);
629
+ $localRepo->write();
630
+ }
631
+
632
+ return array(0, $devPackages);
633
+ }
634
+
635
+ /**
636
+ * Extracts the dev packages out of the localRepo
637
+ *
638
+ * This works by faking the operations so we can see what the dev packages
639
+ * would be at the end of the operation execution. This lets us then remove
640
+ * the dev packages from the list of operations accordingly if we are in a
641
+ * --no-dev install or update.
642
+ *
643
+ * @return array
644
+ */
645
+ private function extractDevPackages(array $operations, RepositoryInterface $localRepo, PlatformRepository $platformRepo, array $aliases)
646
+ {
647
+ if (!$this->package->getDevRequires()) {
648
+ return array();
649
+ }
650
+
651
+ // fake-apply all operations to this clone of the local repo so we see the complete set of package we would end up with
652
+ $tempLocalRepo = clone $localRepo;
653
+ foreach ($operations as $operation) {
654
+ switch ($operation->getJobType()) {
655
+ case 'install':
656
+ case 'markAliasInstalled':
657
+ if (!$tempLocalRepo->hasPackage($operation->getPackage())) {
658
+ $tempLocalRepo->addPackage(clone $operation->getPackage());
659
+ }
660
+ break;
661
+
662
+ case 'uninstall':
663
+ case 'markAliasUninstalled':
664
+ $tempLocalRepo->removePackage($operation->getPackage());
665
+ break;
666
+
667
+ case 'update':
668
+ $tempLocalRepo->removePackage($operation->getInitialPackage());
669
+ if (!$tempLocalRepo->hasPackage($operation->getTargetPackage())) {
670
+ $tempLocalRepo->addPackage(clone $operation->getTargetPackage());
671
+ }
672
+ break;
673
+
674
+ default:
675
+ throw new \LogicException('Unknown type: '.$operation->getJobType());
676
+ }
677
+ }
678
+
679
+ // we have to reload the local repo to handle aliases properly
680
+ // but as it is not persisted on disk we use a loader/dumper
681
+ // to reload it in memory
682
+ $localRepo = new InstalledArrayRepository(array());
683
+ $loader = new ArrayLoader(null, true);
684
+ $dumper = new ArrayDumper();
685
+ foreach ($tempLocalRepo->getCanonicalPackages() as $pkg) {
686
+ $localRepo->addPackage($loader->load($dumper->dump($pkg)));
687
+ }
688
+ unset($tempLocalRepo, $loader, $dumper);
689
+
690
+ $policy = $this->createPolicy();
691
+ $pool = $this->createPool();
692
+ $installedRepo = $this->createInstalledRepo($localRepo, $platformRepo);
693
+ $pool->addRepository($installedRepo, $aliases);
694
+
695
+ // creating requirements request without dev requirements
696
+ $request = $this->createRequest($this->package, $platformRepo);
697
+ $request->updateAll();
698
+ foreach ($this->package->getRequires() as $link) {
699
+ $request->install($link->getTarget(), $link->getConstraint());
700
+ }
701
+
702
+ // solve deps to see which get removed
703
+ $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::PRE_DEPENDENCIES_SOLVING, false, $policy, $pool, $installedRepo, $request);
704
+ $solver = new Solver($policy, $pool, $installedRepo, $this->io);
705
+ $ops = $solver->solve($request, $this->ignorePlatformReqs);
706
+ $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::POST_DEPENDENCIES_SOLVING, false, $policy, $pool, $installedRepo, $request, $ops);
707
+
708
+ $devPackages = array();
709
+ foreach ($ops as $op) {
710
+ if ($op->getJobType() === 'uninstall') {
711
+ $devPackages[] = $op->getPackage();
712
+ }
713
+ }
714
+
715
+ return $devPackages;
716
+ }
717
+
718
+ /**
719
+ * @return OperationInterface[] filtered operations, dev packages are uninstalled and all operations on them ignored
720
+ */
721
+ private function filterDevPackageOperations(array $devPackages, array $operations, RepositoryInterface $localRepo)
722
+ {
723
+ $finalOps = array();
724
+ $packagesToSkip = array();
725
+ foreach ($devPackages as $pkg) {
726
+ $packagesToSkip[$pkg->getName()] = true;
727
+ if ($installedDevPkg = $localRepo->findPackage($pkg->getName(), '*')) {
728
+ if ($installedDevPkg instanceof AliasPackage) {
729
+ $finalOps[] = new MarkAliasUninstalledOperation($installedDevPkg, 'non-dev install removing it');
730
+ $installedDevPkg = $installedDevPkg->getAliasOf();
731
+ }
732
+ $finalOps[] = new UninstallOperation($installedDevPkg, 'non-dev install removing it');
733
+ }
734
+ }
735
+
736
+ // skip operations applied on dev packages
737
+ foreach ($operations as $op) {
738
+ $package = $op->getJobType() === 'update' ? $op->getTargetPackage() : $op->getPackage();
739
+ if (isset($packagesToSkip[$package->getName()])) {
740
+ continue;
741
+ }
742
+
743
+ $finalOps[] = $op;
744
+ }
745
+
746
+ return $finalOps;
747
+ }
748
+
749
+ /**
750
+ * Workaround: if your packages depend on plugins, we must be sure
751
+ * that those are installed / updated first; else it would lead to packages
752
+ * being installed multiple times in different folders, when running Composer
753
+ * twice.
754
+ *
755
+ * While this does not fix the root-causes of https://github.com/composer/composer/issues/1147,
756
+ * it at least fixes the symptoms and makes usage of composer possible (again)
757
+ * in such scenarios.
758
+ *
759
+ * @param OperationInterface[] $operations
760
+ * @return OperationInterface[] reordered operation list
761
+ */
762
+ private function movePluginsToFront(array $operations)
763
+ {
764
+ $pluginsNoDeps = array();
765
+ $pluginsWithDeps = array();
766
+ $pluginRequires = array();
767
+
768
+ foreach (array_reverse($operations, true) as $idx => $op) {
769
+ if ($op instanceof InstallOperation) {
770
+ $package = $op->getPackage();
771
+ } elseif ($op instanceof UpdateOperation) {
772
+ $package = $op->getTargetPackage();
773
+ } else {
774
+ continue;
775
+ }
776
+
777
+ // is this package a plugin?
778
+ $isPlugin = $package->getType() === 'composer-plugin' || $package->getType() === 'composer-installer';
779
+
780
+ // is this a plugin or a dependency of a plugin?
781
+ if ($isPlugin || count(array_intersect($package->getNames(), $pluginRequires))) {
782
+ // get the package's requires, but filter out any platform requirements or 'composer-plugin-api'
783
+ $requires = array_filter(array_keys($package->getRequires()), function ($req) {
784
+ return $req !== 'composer-plugin-api' && !preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $req);
785
+ });
786
+
787
+ // is this a plugin with no meaningful dependencies?
788
+ if ($isPlugin && !count($requires)) {
789
+ // plugins with no dependencies go to the very front
790
+ array_unshift($pluginsNoDeps, $op);
791
+ } else {
792
+ // capture the requirements for this package so those packages will be moved up as well
793
+ $pluginRequires = array_merge($pluginRequires, $requires);
794
+ // move the operation to the front
795
+ array_unshift($pluginsWithDeps, $op);
796
+ }
797
+
798
+ unset($operations[$idx]);
799
+ }
800
+ }
801
+
802
+ return array_merge($pluginsNoDeps, $pluginsWithDeps, $operations);
803
+ }
804
+
805
+ /**
806
+ * Removals of packages should be executed before installations in
807
+ * case two packages resolve to the same path (due to custom installers)
808
+ *
809
+ * @param OperationInterface[] $operations
810
+ * @return OperationInterface[] reordered operation list
811
+ */
812
+ private function moveUninstallsToFront(array $operations)
813
+ {
814
+ $uninstOps = array();
815
+ foreach ($operations as $idx => $op) {
816
+ if ($op instanceof UninstallOperation) {
817
+ $uninstOps[] = $op;
818
+ unset($operations[$idx]);
819
+ }
820
+ }
821
+
822
+ return array_merge($uninstOps, $operations);
823
+ }
824
+
825
+ /**
826
+ * @return RepositoryInterface
827
+ */
828
+ private function createInstalledRepo(RepositoryInterface $localRepo, PlatformRepository $platformRepo)
829
+ {
830
+ // clone root package to have one in the installed repo that does not require anything
831
+ // we don't want it to be uninstallable, but its requirements should not conflict
832
+ // with the lock file for example
833
+ $installedRootPackage = clone $this->package;
834
+ $installedRootPackage->setRequires(array());
835
+ $installedRootPackage->setDevRequires(array());
836
+
837
+ $repos = array(
838
+ $localRepo,
839
+ new InstalledArrayRepository(array($installedRootPackage)),
840
+ $platformRepo,
841
+ );
842
+ $installedRepo = new CompositeRepository($repos);
843
+ if ($this->additionalInstalledRepository) {
844
+ $installedRepo->addRepository($this->additionalInstalledRepository);
845
+ }
846
+
847
+ return $installedRepo;
848
+ }
849
+
850
+ /**
851
+ * @param RepositoryInterface|null $lockedRepository
852
+ * @return Pool
853
+ */
854
+ private function createPool(RepositoryInterface $lockedRepository = null)
855
+ {
856
+ if ($this->update) {
857
+ $minimumStability = $this->package->getMinimumStability();
858
+ $stabilityFlags = $this->package->getStabilityFlags();
859
+
860
+ $requires = array_merge($this->package->getRequires(), $this->package->getDevRequires());
861
+ } else {
862
+ $minimumStability = $this->locker->getMinimumStability();
863
+ $stabilityFlags = $this->locker->getStabilityFlags();
864
+
865
+ $requires = array();
866
+ foreach ($lockedRepository->getPackages() as $package) {
867
+ $constraint = new Constraint('=', $package->getVersion());
868
+ $constraint->setPrettyString($package->getPrettyVersion());
869
+ $requires[$package->getName()] = $constraint;
870
+ }
871
+ }
872
+
873
+ $rootConstraints = array();
874
+ foreach ($requires as $req => $constraint) {
875
+ // skip platform requirements from the root package to avoid filtering out existing platform packages
876
+ if ($this->ignorePlatformReqs && preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $req)) {
877
+ continue;
878
+ }
879
+ if ($constraint instanceof Link) {
880
+ $rootConstraints[$req] = $constraint->getConstraint();
881
+ } else {
882
+ $rootConstraints[$req] = $constraint;
883
+ }
884
+ }
885
+
886
+ return new Pool($minimumStability, $stabilityFlags, $rootConstraints);
887
+ }
888
+
889
+ /**
890
+ * @return DefaultPolicy
891
+ */
892
+ private function createPolicy()
893
+ {
894
+ $preferStable = null;
895
+ $preferLowest = null;
896
+ if (!$this->update) {
897
+ $preferStable = $this->locker->getPreferStable();
898
+ $preferLowest = $this->locker->getPreferLowest();
899
+ }
900
+ // old lock file without prefer stable/lowest will return null
901
+ // so in this case we use the composer.json info
902
+ if (null === $preferStable) {
903
+ $preferStable = $this->preferStable || $this->package->getPreferStable();
904
+ }
905
+ if (null === $preferLowest) {
906
+ $preferLowest = $this->preferLowest;
907
+ }
908
+
909
+ return new DefaultPolicy($preferStable, $preferLowest);
910
+ }
911
+
912
+ /**
913
+ * @param RootPackageInterface $rootPackage
914
+ * @param PlatformRepository $platformRepo
915
+ * @return Request
916
+ */
917
+ private function createRequest(RootPackageInterface $rootPackage, PlatformRepository $platformRepo)
918
+ {
919
+ $request = new Request();
920
+
921
+ $constraint = new Constraint('=', $rootPackage->getVersion());
922
+ $constraint->setPrettyString($rootPackage->getPrettyVersion());
923
+ $request->install($rootPackage->getName(), $constraint);
924
+
925
+ $fixedPackages = $platformRepo->getPackages();
926
+ if ($this->additionalInstalledRepository) {
927
+ $additionalFixedPackages = $this->additionalInstalledRepository->getPackages();
928
+ $fixedPackages = array_merge($fixedPackages, $additionalFixedPackages);
929
+ }
930
+
931
+ // fix the version of all platform packages + additionally installed packages
932
+ // to prevent the solver trying to remove or update those
933
+ $provided = $rootPackage->getProvides();
934
+ foreach ($fixedPackages as $package) {
935
+ $constraint = new Constraint('=', $package->getVersion());
936
+ $constraint->setPrettyString($package->getPrettyVersion());
937
+
938
+ // skip platform packages that are provided by the root package
939
+ if ($package->getRepository() !== $platformRepo
940
+ || !isset($provided[$package->getName()])
941
+ || !$provided[$package->getName()]->getConstraint()->matches($constraint)
942
+ ) {
943
+ $request->fix($package->getName(), $constraint);
944
+ }
945
+ }
946
+
947
+ return $request;
948
+ }
949
+
950
+ /**
951
+ * @param WritableRepositoryInterface $localRepo
952
+ * @param Pool $pool
953
+ * @param PolicyInterface $policy
954
+ * @param array $repositories
955
+ * @param RepositoryInterface $installedRepo
956
+ * @param RepositoryInterface $lockedRepository
957
+ * @param string $task
958
+ * @param array|null $operations
959
+ * @return array
960
+ */
961
+ private function processDevPackages($localRepo, $pool, $policy, $repositories, $installedRepo, $lockedRepository, $task, array $operations = null)
962
+ {
963
+ if ($task === 'force-updates' && null === $operations) {
964
+ throw new \InvalidArgumentException('Missing operations argument');
965
+ }
966
+ if ($task === 'force-links') {
967
+ $operations = array();
968
+ }
969
+
970
+ if ($this->update && $this->updateWhitelist) {
971
+ $currentPackages = $this->getCurrentPackages($installedRepo);
972
+ }
973
+
974
+ foreach ($localRepo->getCanonicalPackages() as $package) {
975
+ // skip non-dev packages
976
+ if (!$package->isDev()) {
977
+ continue;
978
+ }
979
+
980
+ // skip packages that will be updated/uninstalled
981
+ foreach ($operations as $operation) {
982
+ if (('update' === $operation->getJobType() && $operation->getInitialPackage()->equals($package))
983
+ || ('uninstall' === $operation->getJobType() && $operation->getPackage()->equals($package))
984
+ ) {
985
+ continue 2;
986
+ }
987
+ }
988
+
989
+ if ($this->update) {
990
+ // skip package if the whitelist is enabled and it is not in it
991
+ if ($this->updateWhitelist && !$this->isUpdateable($package)) {
992
+ // check if non-updateable packages are out of date compared to the lock file to ensure we don't corrupt it
993
+ foreach ($currentPackages as $curPackage) {
994
+ if ($curPackage->isDev() && $curPackage->getName() === $package->getName() && $curPackage->getVersion() === $package->getVersion()) {
995
+ if ($task === 'force-links') {
996
+ $package->setRequires($curPackage->getRequires());
997
+ $package->setConflicts($curPackage->getConflicts());
998
+ $package->setProvides($curPackage->getProvides());
999
+ $package->setReplaces($curPackage->getReplaces());
1000
+ } elseif ($task === 'force-updates') {
1001
+ if (($curPackage->getSourceReference() && $curPackage->getSourceReference() !== $package->getSourceReference())
1002
+ || ($curPackage->getDistReference() && $curPackage->getDistReference() !== $package->getDistReference())
1003
+ ) {
1004
+ $operations[] = new UpdateOperation($package, $curPackage);
1005
+ }
1006
+ }
1007
+
1008
+ break;
1009
+ }
1010
+ }
1011
+
1012
+ continue;
1013
+ }
1014
+
1015
+ // find similar packages (name/version) in all repositories
1016
+ $matches = $pool->whatProvides($package->getName(), new Constraint('=', $package->getVersion()));
1017
+ foreach ($matches as $index => $match) {
1018
+ // skip local packages
1019
+ if (!in_array($match->getRepository(), $repositories, true)) {
1020
+ unset($matches[$index]);
1021
+ continue;
1022
+ }
1023
+
1024
+ // skip providers/replacers
1025
+ if ($match->getName() !== $package->getName()) {
1026
+ unset($matches[$index]);
1027
+ continue;
1028
+ }
1029
+
1030
+ $matches[$index] = $match->getId();
1031
+ }
1032
+
1033
+ // select preferred package according to policy rules
1034
+ if ($matches && $matches = $policy->selectPreferredPackages($pool, array(), $matches)) {
1035
+ $newPackage = $pool->literalToPackage($matches[0]);
1036
+
1037
+ if ($task === 'force-links' && $newPackage) {
1038
+ $package->setRequires($newPackage->getRequires());
1039
+ $package->setConflicts($newPackage->getConflicts());
1040
+ $package->setProvides($newPackage->getProvides());
1041
+ $package->setReplaces($newPackage->getReplaces());
1042
+ }
1043
+
1044
+ if (
1045
+ $task === 'force-updates'
1046
+ && $newPackage
1047
+ && (
1048
+ ($newPackage->getSourceReference() && $newPackage->getSourceReference() !== $package->getSourceReference())
1049
+ || ($newPackage->getDistReference() && $newPackage->getDistReference() !== $package->getDistReference())
1050
+ )
1051
+ ) {
1052
+ $operations[] = new UpdateOperation($package, $newPackage);
1053
+
1054
+ continue;
1055
+ }
1056
+ }
1057
+
1058
+ if ($task === 'force-updates') {
1059
+ // force installed package to update to referenced version in root package if it does not match the installed version
1060
+ $references = $this->package->getReferences();
1061
+
1062
+ if (isset($references[$package->getName()]) && $references[$package->getName()] !== $package->getSourceReference()) {
1063
+ // changing the source ref to update to will be handled in the operations loop
1064
+ $operations[] = new UpdateOperation($package, clone $package);
1065
+ }
1066
+ }
1067
+ } else {
1068
+ // force update to locked version if it does not match the installed version
1069
+ foreach ($lockedRepository->findPackages($package->getName()) as $lockedPackage) {
1070
+ if ($lockedPackage->isDev() && $lockedPackage->getVersion() === $package->getVersion()) {
1071
+ if ($task === 'force-links') {
1072
+ $package->setRequires($lockedPackage->getRequires());
1073
+ $package->setConflicts($lockedPackage->getConflicts());
1074
+ $package->setProvides($lockedPackage->getProvides());
1075
+ $package->setReplaces($lockedPackage->getReplaces());
1076
+ } elseif ($task === 'force-updates') {
1077
+ if (($lockedPackage->getSourceReference() && $lockedPackage->getSourceReference() !== $package->getSourceReference())
1078
+ || ($lockedPackage->getDistReference() && $lockedPackage->getDistReference() !== $package->getDistReference())
1079
+ ) {
1080
+ $operations[] = new UpdateOperation($package, $lockedPackage);
1081
+ }
1082
+ }
1083
+
1084
+ break;
1085
+ }
1086
+ }
1087
+ }
1088
+ }
1089
+
1090
+ return $operations;
1091
+ }
1092
+
1093
+ /**
1094
+ * Loads the most "current" list of packages that are installed meaning from lock ideally or from installed repo as fallback
1095
+ * @param RepositoryInterface $installedRepo
1096
+ * @return array
1097
+ */
1098
+ private function getCurrentPackages($installedRepo)
1099
+ {
1100
+ if ($this->locker->isLocked()) {
1101
+ try {
1102
+ return $this->locker->getLockedRepository(true)->getPackages();
1103
+ } catch (\RuntimeException $e) {
1104
+ // fetch only non-dev packages from lock if doing a dev update fails due to a previously incomplete lock file
1105
+ return $this->locker->getLockedRepository()->getPackages();
1106
+ }
1107
+ }
1108
+
1109
+ return $installedRepo->getPackages();
1110
+ }
1111
+
1112
+ /**
1113
+ * @return array
1114
+ */
1115
+ private function getRootAliases()
1116
+ {
1117
+ if ($this->update) {
1118
+ $aliases = $this->package->getAliases();
1119
+ } else {
1120
+ $aliases = $this->locker->getAliases();
1121
+ }
1122
+
1123
+ $normalizedAliases = array();
1124
+
1125
+ foreach ($aliases as $alias) {
1126
+ $normalizedAliases[$alias['package']][$alias['version']] = array(
1127
+ 'alias' => $alias['alias'],
1128
+ 'alias_normalized' => $alias['alias_normalized'],
1129
+ );
1130
+ }
1131
+
1132
+ return $normalizedAliases;
1133
+ }
1134
+
1135
+ /**
1136
+ * @param Pool $pool
1137
+ * @param PolicyInterface $policy
1138
+ * @param WritableRepositoryInterface $localRepo
1139
+ * @param array $repositories
1140
+ */
1141
+ private function processPackageUrls($pool, $policy, $localRepo, $repositories)
1142
+ {
1143
+ if (!$this->update) {
1144
+ return;
1145
+ }
1146
+
1147
+ $rootRefs = $this->package->getReferences();
1148
+
1149
+ foreach ($localRepo->getCanonicalPackages() as $package) {
1150
+ // find similar packages (name/version) in all repositories
1151
+ $matches = $pool->whatProvides($package->getName(), new Constraint('=', $package->getVersion()));
1152
+ foreach ($matches as $index => $match) {
1153
+ // skip local packages
1154
+ if (!in_array($match->getRepository(), $repositories, true)) {
1155
+ unset($matches[$index]);
1156
+ continue;
1157
+ }
1158
+
1159
+ // skip providers/replacers
1160
+ if ($match->getName() !== $package->getName()) {
1161
+ unset($matches[$index]);
1162
+ continue;
1163
+ }
1164
+
1165
+ $matches[$index] = $match->getId();
1166
+ }
1167
+
1168
+ // select preferred package according to policy rules
1169
+ if ($matches && $matches = $policy->selectPreferredPackages($pool, array(), $matches)) {
1170
+ $newPackage = $pool->literalToPackage($matches[0]);
1171
+
1172
+ // update the dist and source URLs
1173
+ $sourceUrl = $package->getSourceUrl();
1174
+ $newSourceUrl = $newPackage->getSourceUrl();
1175
+ $newReference = $newPackage->getSourceReference();
1176
+
1177
+ if ($package->isDev() && isset($rootRefs[$package->getName()]) && $package->getSourceReference() === $rootRefs[$package->getName()]) {
1178
+ $newReference = $rootRefs[$package->getName()];
1179
+ }
1180
+
1181
+ $this->updatePackageUrl($package, $newSourceUrl, $newPackage->getSourceType(), $newReference, $newPackage->getDistUrl(), $newPackage->getDistType(), $newPackage->getDistSha1Checksum());
1182
+
1183
+ if ($package instanceof CompletePackage && $newPackage instanceof CompletePackage) {
1184
+ $package->setAbandoned($newPackage->getReplacementPackage() ?: $newPackage->isAbandoned());
1185
+ }
1186
+
1187
+ $package->setDistMirrors($newPackage->getDistMirrors());
1188
+ $package->setSourceMirrors($newPackage->getSourceMirrors());
1189
+ $package->setTransportOptions($newPackage->getTransportOptions());
1190
+ }
1191
+ }
1192
+ }
1193
+
1194
+ private function updatePackageUrl(PackageInterface $package, $sourceUrl, $sourceType, $sourceReference, $distUrl, $distType, $distShaSum)
1195
+ {
1196
+ $oldSourceRef = $package->getSourceReference();
1197
+
1198
+ if ($package->getSourceUrl() !== $sourceUrl) {
1199
+ $package->setSourceType($sourceType);
1200
+ $package->setSourceUrl($sourceUrl);
1201
+ $package->setSourceReference($sourceReference);
1202
+ }
1203
+
1204
+ // only update dist url for github/bitbucket/gitlab dists as they use a combination of dist url + dist reference to install
1205
+ // but for other urls this is ambiguous and could result in bad outcomes
1206
+ if (preg_match('{^https?://(?:(?:www\.)?bitbucket\.org|(api\.)?github\.com|(?:www\.)?gitlab\.com)/}i', $distUrl)) {
1207
+ $package->setDistUrl($distUrl);
1208
+ $package->setDistType($distType);
1209
+ $package->setDistSha1Checksum($distShaSum);
1210
+ $this->updateInstallReferences($package, $sourceReference);
1211
+ }
1212
+
1213
+ if ($this->updateWhitelist && !$this->isUpdateable($package)) {
1214
+ $this->updateInstallReferences($package, $oldSourceRef);
1215
+ }
1216
+ }
1217
+
1218
+ private function updateInstallReferences(PackageInterface $package, $reference)
1219
+ {
1220
+ if (!$reference) {
1221
+ return;
1222
+ }
1223
+
1224
+ $package->setSourceReference($reference);
1225
+
1226
+ if (preg_match('{^https?://(?:(?:www\.)?bitbucket\.org|(api\.)?github\.com|(?:www\.)?gitlab\.com)/}i', $package->getDistUrl())) {
1227
+ $package->setDistReference($reference);
1228
+ $package->setDistUrl(preg_replace('{(?<=/|sha=)[a-f0-9]{40}(?=/|$)}i', $reference, $package->getDistUrl()));
1229
+ } elseif ($package->getDistReference()) { // update the dist reference if there was one, but if none was provided ignore it
1230
+ $package->setDistReference($reference);
1231
+ }
1232
+ }
1233
+
1234
+ /**
1235
+ * @param PlatformRepository $platformRepo
1236
+ * @param array $aliases
1237
+ */
1238
+ private function aliasPlatformPackages(PlatformRepository $platformRepo, $aliases)
1239
+ {
1240
+ foreach ($aliases as $package => $versions) {
1241
+ foreach ($versions as $version => $alias) {
1242
+ $packages = $platformRepo->findPackages($package, $version);
1243
+ foreach ($packages as $package) {
1244
+ $aliasPackage = new AliasPackage($package, $alias['alias_normalized'], $alias['alias']);
1245
+ $aliasPackage->setRootPackageAlias(true);
1246
+ $platformRepo->addPackage($aliasPackage);
1247
+ }
1248
+ }
1249
+ }
1250
+ }
1251
+
1252
+ /**
1253
+ * @param PackageInterface $package
1254
+ * @return bool
1255
+ */
1256
+ private function isUpdateable(PackageInterface $package)
1257
+ {
1258
+ if (!$this->updateWhitelist) {
1259
+ throw new \LogicException('isUpdateable should only be called when a whitelist is present');
1260
+ }
1261
+
1262
+ foreach ($this->updateWhitelist as $whiteListedPattern => $void) {
1263
+ $patternRegexp = BasePackage::packageNameToRegexp($whiteListedPattern);
1264
+ if (preg_match($patternRegexp, $package->getName())) {
1265
+ return true;
1266
+ }
1267
+ }
1268
+
1269
+ return false;
1270
+ }
1271
+
1272
+ /**
1273
+ * @param array $links
1274
+ * @return array
1275
+ */
1276
+ private function extractPlatformRequirements($links)
1277
+ {
1278
+ $platformReqs = array();
1279
+ foreach ($links as $link) {
1280
+ if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $link->getTarget())) {
1281
+ $platformReqs[$link->getTarget()] = $link->getPrettyConstraint();
1282
+ }
1283
+ }
1284
+
1285
+ return $platformReqs;
1286
+ }
1287
+
1288
+ /**
1289
+ * Adds all dependencies of the update whitelist to the whitelist, too.
1290
+ *
1291
+ * Packages which are listed as requirements in the root package will be
1292
+ * skipped including their dependencies, unless they are listed in the
1293
+ * update whitelist themselves or $whitelistAllDependencies is true.
1294
+ *
1295
+ * @param RepositoryInterface $localOrLockRepo Use the locked repo if available, otherwise installed repo will do
1296
+ * As we want the most accurate package list to work with, and installed
1297
+ * repo might be empty but locked repo will always be current.
1298
+ * @param array $rootRequires An array of links to packages in require of the root package
1299
+ * @param array $rootDevRequires An array of links to packages in require-dev of the root package
1300
+ */
1301
+ private function whitelistUpdateDependencies($localOrLockRepo, array $rootRequires, array $rootDevRequires)
1302
+ {
1303
+ if (!$this->updateWhitelist) {
1304
+ return;
1305
+ }
1306
+
1307
+ $rootRequires = array_merge($rootRequires, $rootDevRequires);
1308
+
1309
+ $skipPackages = array();
1310
+ if (!$this->whitelistAllDependencies) {
1311
+ foreach ($rootRequires as $require) {
1312
+ $skipPackages[$require->getTarget()] = true;
1313
+ }
1314
+ }
1315
+
1316
+ $pool = new Pool('dev');
1317
+ $pool->addRepository($localOrLockRepo);
1318
+
1319
+ $seen = array();
1320
+
1321
+ $rootRequiredPackageNames = array_keys($rootRequires);
1322
+
1323
+ foreach ($this->updateWhitelist as $packageName => $void) {
1324
+ $packageQueue = new \SplQueue;
1325
+ $nameMatchesRequiredPackage = false;
1326
+
1327
+ $depPackages = $pool->whatProvides($packageName);
1328
+ $matchesByPattern = array();
1329
+ // check if the name is a glob pattern that did not match directly
1330
+ if (empty($depPackages)) {
1331
+ // add any installed package matching the whitelisted name/pattern
1332
+ $whitelistPatternSearchRegexp = BasePackage::packageNameToRegexp($packageName, '^%s$');
1333
+ foreach ($localOrLockRepo->search($whitelistPatternSearchRegexp) as $installedPackage) {
1334
+ $matchesByPattern[] = $pool->whatProvides($installedPackage['name']);
1335
+ }
1336
+
1337
+ // add root requirements which match the whitelisted name/pattern
1338
+ $whitelistPatternRegexp = BasePackage::packageNameToRegexp($packageName);
1339
+ foreach ($rootRequiredPackageNames as $rootRequiredPackageName) {
1340
+ if (preg_match($whitelistPatternRegexp, $rootRequiredPackageName)) {
1341
+ $nameMatchesRequiredPackage = true;
1342
+ break;
1343
+ }
1344
+ }
1345
+ }
1346
+
1347
+ if (!empty($matchesByPattern)) {
1348
+ $depPackages = array_merge($depPackages, call_user_func_array('array_merge', $matchesByPattern));
1349
+ }
1350
+
1351
+ if (count($depPackages) == 0 && !$nameMatchesRequiredPackage && !in_array($packageName, array('nothing', 'lock', 'mirrors'))) {
1352
+ $this->io->writeError('<warning>Package "' . $packageName . '" listed for update is not installed. Ignoring.</warning>');
1353
+ }
1354
+
1355
+ foreach ($depPackages as $depPackage) {
1356
+ $packageQueue->enqueue($depPackage);
1357
+ }
1358
+
1359
+ while (!$packageQueue->isEmpty()) {
1360
+ $package = $packageQueue->dequeue();
1361
+ if (isset($seen[$package->getId()])) {
1362
+ continue;
1363
+ }
1364
+
1365
+ $seen[$package->getId()] = true;
1366
+ $this->updateWhitelist[$package->getName()] = true;
1367
+
1368
+ if (!$this->whitelistDependencies && !$this->whitelistAllDependencies) {
1369
+ continue;
1370
+ }
1371
+
1372
+ $requires = $package->getRequires();
1373
+
1374
+ foreach ($requires as $require) {
1375
+ $requirePackages = $pool->whatProvides($require->getTarget());
1376
+
1377
+ foreach ($requirePackages as $requirePackage) {
1378
+ if (isset($this->updateWhitelist[$requirePackage->getName()])) {
1379
+ continue;
1380
+ }
1381
+
1382
+ if (isset($skipPackages[$requirePackage->getName()]) && !preg_match(BasePackage::packageNameToRegexp($packageName), $requirePackage->getName())) {
1383
+ $this->io->writeError('<warning>Dependency "' . $requirePackage->getName() . '" is also a root requirement, but is not explicitly whitelisted. Ignoring.</warning>');
1384
+ continue;
1385
+ }
1386
+
1387
+ $packageQueue->enqueue($requirePackage);
1388
+ }
1389
+ }
1390
+ }
1391
+ }
1392
+ }
1393
+
1394
+ /**
1395
+ * Replace local repositories with InstalledArrayRepository instances
1396
+ *
1397
+ * This is to prevent any accidental modification of the existing repos on disk
1398
+ *
1399
+ * @param RepositoryManager $rm
1400
+ */
1401
+ private function mockLocalRepositories(RepositoryManager $rm)
1402
+ {
1403
+ $packages = array();
1404
+ foreach ($rm->getLocalRepository()->getPackages() as $package) {
1405
+ $packages[(string) $package] = clone $package;
1406
+ }
1407
+ foreach ($packages as $key => $package) {
1408
+ if ($package instanceof AliasPackage) {
1409
+ $alias = (string) $package->getAliasOf();
1410
+ $packages[$key] = new AliasPackage($packages[$alias], $package->getVersion(), $package->getPrettyVersion());
1411
+ }
1412
+ }
1413
+ $rm->setLocalRepository(
1414
+ new InstalledArrayRepository($packages)
1415
+ );
1416
+ }
1417
+
1418
+ /**
1419
+ * Create Installer
1420
+ *
1421
+ * @param IOInterface $io
1422
+ * @param Composer $composer
1423
+ * @return Installer
1424
+ */
1425
+ public static function create(IOInterface $io, Composer $composer)
1426
+ {
1427
+ return new static(
1428
+ $io,
1429
+ $composer->getConfig(),
1430
+ $composer->getPackage(),
1431
+ $composer->getDownloadManager(),
1432
+ $composer->getRepositoryManager(),
1433
+ $composer->getLocker(),
1434
+ $composer->getInstallationManager(),
1435
+ $composer->getEventDispatcher(),
1436
+ $composer->getAutoloadGenerator()
1437
+ );
1438
+ }
1439
+
1440
+ /**
1441
+ * @param RepositoryInterface $additionalInstalledRepository
1442
+ * @return $this
1443
+ */
1444
+ public function setAdditionalInstalledRepository(RepositoryInterface $additionalInstalledRepository)
1445
+ {
1446
+ $this->additionalInstalledRepository = $additionalInstalledRepository;
1447
+
1448
+ return $this;
1449
+ }
1450
+
1451
+ /**
1452
+ * Whether to run in drymode or not
1453
+ *
1454
+ * @param bool $dryRun
1455
+ * @return Installer
1456
+ */
1457
+ public function setDryRun($dryRun = true)
1458
+ {
1459
+ $this->dryRun = (bool) $dryRun;
1460
+
1461
+ return $this;
1462
+ }
1463
+
1464
+ /**
1465
+ * Checks, if this is a dry run (simulation mode).
1466
+ *
1467
+ * @return bool
1468
+ */
1469
+ public function isDryRun()
1470
+ {
1471
+ return $this->dryRun;
1472
+ }
1473
+
1474
+ /**
1475
+ * prefer source installation
1476
+ *
1477
+ * @param bool $preferSource
1478
+ * @return Installer
1479
+ */
1480
+ public function setPreferSource($preferSource = true)
1481
+ {
1482
+ $this->preferSource = (bool) $preferSource;
1483
+
1484
+ return $this;
1485
+ }
1486
+
1487
+ /**
1488
+ * prefer dist installation
1489
+ *
1490
+ * @param bool $preferDist
1491
+ * @return Installer
1492
+ */
1493
+ public function setPreferDist($preferDist = true)
1494
+ {
1495
+ $this->preferDist = (bool) $preferDist;
1496
+
1497
+ return $this;
1498
+ }
1499
+
1500
+ /**
1501
+ * Whether or not generated autoloader are optimized
1502
+ *
1503
+ * @param bool $optimizeAutoloader
1504
+ * @return Installer
1505
+ */
1506
+ public function setOptimizeAutoloader($optimizeAutoloader = false)
1507
+ {
1508
+ $this->optimizeAutoloader = (bool) $optimizeAutoloader;
1509
+ if (!$this->optimizeAutoloader) {
1510
+ // Force classMapAuthoritative off when not optimizing the
1511
+ // autoloader
1512
+ $this->setClassMapAuthoritative(false);
1513
+ }
1514
+
1515
+ return $this;
1516
+ }
1517
+
1518
+ /**
1519
+ * Whether or not generated autoloader considers the class map
1520
+ * authoritative.
1521
+ *
1522
+ * @param bool $classMapAuthoritative
1523
+ * @return Installer
1524
+ */
1525
+ public function setClassMapAuthoritative($classMapAuthoritative = false)
1526
+ {
1527
+ $this->classMapAuthoritative = (bool) $classMapAuthoritative;
1528
+ if ($this->classMapAuthoritative) {
1529
+ // Force optimizeAutoloader when classmap is authoritative
1530
+ $this->setOptimizeAutoloader(true);
1531
+ }
1532
+
1533
+ return $this;
1534
+ }
1535
+
1536
+ /**
1537
+ * Whether or not generated autoloader considers APCu caching.
1538
+ *
1539
+ * @param bool $apcuAutoloader
1540
+ * @return Installer
1541
+ */
1542
+ public function setApcuAutoloader($apcuAutoloader = false)
1543
+ {
1544
+ $this->apcuAutoloader = (bool) $apcuAutoloader;
1545
+
1546
+ return $this;
1547
+ }
1548
+
1549
+ /**
1550
+ * update packages
1551
+ *
1552
+ * @param bool $update
1553
+ * @return Installer
1554
+ */
1555
+ public function setUpdate($update = true)
1556
+ {
1557
+ $this->update = (bool) $update;
1558
+
1559
+ return $this;
1560
+ }
1561
+
1562
+ /**
1563
+ * enables dev packages
1564
+ *
1565
+ * @param bool $devMode
1566
+ * @return Installer
1567
+ */
1568
+ public function setDevMode($devMode = true)
1569
+ {
1570
+ $this->devMode = (bool) $devMode;
1571
+
1572
+ return $this;
1573
+ }
1574
+
1575
+ /**
1576
+ * set whether to run autoloader or not
1577
+ *
1578
+ * This is disabled implicitly when enabling dryRun
1579
+ *
1580
+ * @param bool $dumpAutoloader
1581
+ * @return Installer
1582
+ */
1583
+ public function setDumpAutoloader($dumpAutoloader = true)
1584
+ {
1585
+ $this->dumpAutoloader = (bool) $dumpAutoloader;
1586
+
1587
+ return $this;
1588
+ }
1589
+
1590
+ /**
1591
+ * set whether to run scripts or not
1592
+ *
1593
+ * This is disabled implicitly when enabling dryRun
1594
+ *
1595
+ * @param bool $runScripts
1596
+ * @return Installer
1597
+ */
1598
+ public function setRunScripts($runScripts = true)
1599
+ {
1600
+ $this->runScripts = (bool) $runScripts;
1601
+
1602
+ return $this;
1603
+ }
1604
+
1605
+ /**
1606
+ * set the config instance
1607
+ *
1608
+ * @param Config $config
1609
+ * @return Installer
1610
+ */
1611
+ public function setConfig(Config $config)
1612
+ {
1613
+ $this->config = $config;
1614
+
1615
+ return $this;
1616
+ }
1617
+
1618
+ /**
1619
+ * run in verbose mode
1620
+ *
1621
+ * @param bool $verbose
1622
+ * @return Installer
1623
+ */
1624
+ public function setVerbose($verbose = true)
1625
+ {
1626
+ $this->verbose = (bool) $verbose;
1627
+
1628
+ return $this;
1629
+ }
1630
+
1631
+ /**
1632
+ * Checks, if running in verbose mode.
1633
+ *
1634
+ * @return bool
1635
+ */
1636
+ public function isVerbose()
1637
+ {
1638
+ return $this->verbose;
1639
+ }
1640
+
1641
+ /**
1642
+ * set ignore Platform Package requirements
1643
+ *
1644
+ * @param bool $ignorePlatformReqs
1645
+ * @return Installer
1646
+ */
1647
+ public function setIgnorePlatformRequirements($ignorePlatformReqs = false)
1648
+ {
1649
+ $this->ignorePlatformReqs = (bool) $ignorePlatformReqs;
1650
+
1651
+ return $this;
1652
+ }
1653
+
1654
+ /**
1655
+ * restrict the update operation to a few packages, all other packages
1656
+ * that are already installed will be kept at their current version
1657
+ *
1658
+ * @param array $packages
1659
+ * @return Installer
1660
+ */
1661
+ public function setUpdateWhitelist(array $packages)
1662
+ {
1663
+ $this->updateWhitelist = array_flip(array_map('strtolower', $packages));
1664
+
1665
+ return $this;
1666
+ }
1667
+
1668
+ /**
1669
+ * @deprecated use setWhitelistTransitiveDependencies instead
1670
+ */
1671
+ public function setWhitelistDependencies($updateDependencies = true)
1672
+ {
1673
+ return $this->setWhitelistTransitiveDependencies($updateDependencies);
1674
+ }
1675
+
1676
+ /**
1677
+ * Should dependencies of whitelisted packages (but not direct dependencies) be updated?
1678
+ *
1679
+ * This will NOT whitelist any dependencies that are also directly defined
1680
+ * in the root package.
1681
+ *
1682
+ * @param bool $updateTransitiveDependencies
1683
+ * @return Installer
1684
+ */
1685
+ public function setWhitelistTransitiveDependencies($updateTransitiveDependencies = true)
1686
+ {
1687
+ $this->whitelistDependencies = (bool) $updateTransitiveDependencies;
1688
+
1689
+ return $this;
1690
+ }
1691
+
1692
+ /**
1693
+ * Should all dependencies of whitelisted packages be updated recursively?
1694
+ *
1695
+ * This will whitelist any dependencies of the whitelisted packages, including
1696
+ * those defined in the root package.
1697
+ *
1698
+ * @param bool $updateAllDependencies
1699
+ * @return Installer
1700
+ */
1701
+ public function setWhitelistAllDependencies($updateAllDependencies = true)
1702
+ {
1703
+ $this->whitelistAllDependencies = (bool) $updateAllDependencies;
1704
+
1705
+ return $this;
1706
+ }
1707
+
1708
+ /**
1709
+ * Should packages be preferred in a stable version when updating?
1710
+ *
1711
+ * @param bool $preferStable
1712
+ * @return Installer
1713
+ */
1714
+ public function setPreferStable($preferStable = true)
1715
+ {
1716
+ $this->preferStable = (bool) $preferStable;
1717
+
1718
+ return $this;
1719
+ }
1720
+
1721
+ /**
1722
+ * Should packages be preferred in a lowest version when updating?
1723
+ *
1724
+ * @param bool $preferLowest
1725
+ * @return Installer
1726
+ */
1727
+ public function setPreferLowest($preferLowest = true)
1728
+ {
1729
+ $this->preferLowest = (bool) $preferLowest;
1730
+
1731
+ return $this;
1732
+ }
1733
+
1734
+ /**
1735
+ * Should the lock file be updated when updating?
1736
+ *
1737
+ * This is disabled implicitly when enabling dryRun
1738
+ *
1739
+ * @param bool $writeLock
1740
+ * @return Installer
1741
+ */
1742
+ public function setWriteLock($writeLock = true)
1743
+ {
1744
+ $this->writeLock = (bool) $writeLock;
1745
+
1746
+ return $this;
1747
+ }
1748
+
1749
+ /**
1750
+ * Should the operations (package install, update and removal) be executed on disk?
1751
+ *
1752
+ * This is disabled implicitly when enabling dryRun
1753
+ *
1754
+ * @param bool $executeOperations
1755
+ * @return Installer
1756
+ */
1757
+ public function setExecuteOperations($executeOperations = true)
1758
+ {
1759
+ $this->executeOperations = (bool) $executeOperations;
1760
+
1761
+ return $this;
1762
+ }
1763
+
1764
+ /**
1765
+ * Should suggestions be skipped?
1766
+ *
1767
+ * @param bool $skipSuggest
1768
+ * @return Installer
1769
+ */
1770
+ public function setSkipSuggest($skipSuggest = true)
1771
+ {
1772
+ $this->skipSuggest = (bool) $skipSuggest;
1773
+
1774
+ return $this;
1775
+ }
1776
+
1777
+ /**
1778
+ * Disables plugins.
1779
+ *
1780
+ * Call this if you want to ensure that third-party code never gets
1781
+ * executed. The default is to automatically install, and execute
1782
+ * custom third-party installers.
1783
+ *
1784
+ * @return Installer
1785
+ */
1786
+ public function disablePlugins()
1787
+ {
1788
+ $this->installationManager->disablePlugins();
1789
+
1790
+ return $this;
1791
+ }
1792
+
1793
+ /**
1794
+ * @param SuggestedPackagesReporter $suggestedPackagesReporter
1795
+ * @return Installer
1796
+ */
1797
+ public function setSuggestedPackagesReporter(SuggestedPackagesReporter $suggestedPackagesReporter)
1798
+ {
1799
+ $this->suggestedPackagesReporter = $suggestedPackagesReporter;
1800
+
1801
+ return $this;
1802
+ }
1803
+ }