dependabot-composer 0.107.13 → 0.107.14

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