dependabot-composer 0.111.55 → 0.111.56

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (907) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/vendor/autoload.php +7 -0
  3. data/helpers/vendor/bin/composer +1 -0
  4. data/helpers/vendor/bin/jsonlint +1 -0
  5. data/helpers/vendor/bin/validate-json +1 -0
  6. data/helpers/vendor/composer/ClassLoader.php +445 -0
  7. data/helpers/vendor/composer/LICENSE +21 -0
  8. data/helpers/vendor/composer/autoload_classmap.php +10 -0
  9. data/helpers/vendor/composer/autoload_files.php +12 -0
  10. data/helpers/vendor/composer/autoload_namespaces.php +9 -0
  11. data/helpers/vendor/composer/autoload_psr4.php +28 -0
  12. data/helpers/vendor/composer/autoload_real.php +70 -0
  13. data/helpers/vendor/composer/autoload_static.php +144 -0
  14. data/helpers/vendor/composer/ca-bundle/LICENSE +19 -0
  15. data/helpers/vendor/composer/ca-bundle/README.md +85 -0
  16. data/helpers/vendor/composer/ca-bundle/composer.json +54 -0
  17. data/helpers/vendor/composer/ca-bundle/res/cacert.pem +3507 -0
  18. data/helpers/vendor/composer/ca-bundle/src/CaBundle.php +310 -0
  19. data/helpers/vendor/composer/composer/.editorconfig +11 -0
  20. data/helpers/vendor/composer/composer/.gitattributes +17 -0
  21. data/helpers/vendor/composer/composer/.gitignore +11 -0
  22. data/helpers/vendor/composer/composer/CHANGELOG.md +828 -0
  23. data/helpers/vendor/composer/composer/LICENSE +19 -0
  24. data/helpers/vendor/composer/composer/PORTING_INFO +39 -0
  25. data/helpers/vendor/composer/composer/README.md +62 -0
  26. data/helpers/vendor/composer/composer/bin/compile +31 -0
  27. data/helpers/vendor/composer/composer/bin/composer +62 -0
  28. data/helpers/vendor/composer/composer/composer.json +86 -0
  29. data/helpers/vendor/composer/composer/composer.lock +1800 -0
  30. data/helpers/vendor/composer/composer/doc/00-intro.md +156 -0
  31. data/helpers/vendor/composer/composer/doc/01-basic-usage.md +266 -0
  32. data/helpers/vendor/composer/composer/doc/02-libraries.md +153 -0
  33. data/helpers/vendor/composer/composer/doc/03-cli.md +941 -0
  34. data/helpers/vendor/composer/composer/doc/04-schema.md +924 -0
  35. data/helpers/vendor/composer/composer/doc/05-repositories.md +717 -0
  36. data/helpers/vendor/composer/composer/doc/06-config.md +299 -0
  37. data/helpers/vendor/composer/composer/doc/07-community.md +35 -0
  38. data/helpers/vendor/composer/composer/doc/articles/aliases.md +111 -0
  39. data/helpers/vendor/composer/composer/doc/articles/autoloader-optimization.md +111 -0
  40. data/helpers/vendor/composer/composer/doc/articles/custom-installers.md +204 -0
  41. data/helpers/vendor/composer/composer/doc/articles/handling-private-packages-with-satis.md +356 -0
  42. data/helpers/vendor/composer/composer/doc/articles/http-basic-authentication.md +59 -0
  43. data/helpers/vendor/composer/composer/doc/articles/plugins.md +290 -0
  44. data/helpers/vendor/composer/composer/doc/articles/scripts.md +357 -0
  45. data/helpers/vendor/composer/composer/doc/articles/troubleshooting.md +309 -0
  46. data/helpers/vendor/composer/composer/doc/articles/vendor-binaries.md +110 -0
  47. data/helpers/vendor/composer/composer/doc/articles/versions.md +230 -0
  48. data/helpers/vendor/composer/composer/doc/dev/DefaultPolicy.md +55 -0
  49. data/helpers/vendor/composer/composer/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md +50 -0
  50. data/helpers/vendor/composer/composer/doc/faqs/how-to-install-composer-programmatically.md +42 -0
  51. data/helpers/vendor/composer/composer/doc/faqs/how-to-install-untrusted-packages-safely.md +19 -0
  52. data/helpers/vendor/composer/composer/doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md +32 -0
  53. data/helpers/vendor/composer/composer/doc/faqs/which-version-numbering-system-does-composer-itself-use.md +4 -0
  54. data/helpers/vendor/composer/composer/doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md +21 -0
  55. data/helpers/vendor/composer/composer/doc/faqs/why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md +21 -0
  56. data/helpers/vendor/composer/composer/doc/faqs/why-can't-composer-load-repositories-recursively.md +35 -0
  57. data/helpers/vendor/composer/composer/doc/fixtures/fixtures.md +22 -0
  58. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-plain/packages.json +158 -0
  59. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/bar/baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json +50 -0
  60. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/foo/bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json +77 -0
  61. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/gar/nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json +50 -0
  62. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json +16 -0
  63. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/p/qux/quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json +22 -0
  64. data/helpers/vendor/composer/composer/doc/fixtures/repo-composer-with-providers/packages.json +9 -0
  65. data/helpers/vendor/composer/composer/res/composer-repository-schema.json +110 -0
  66. data/helpers/vendor/composer/composer/res/composer-schema.json +847 -0
  67. data/helpers/vendor/composer/composer/src/Composer/Autoload/AutoloadGenerator.php +1013 -0
  68. data/helpers/vendor/composer/composer/src/Composer/Autoload/ClassLoader.php +445 -0
  69. data/helpers/vendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php +222 -0
  70. data/helpers/vendor/composer/composer/src/Composer/Cache.php +257 -0
  71. data/helpers/vendor/composer/composer/src/Composer/Command/AboutCommand.php +46 -0
  72. data/helpers/vendor/composer/composer/src/Composer/Command/ArchiveCommand.php +166 -0
  73. data/helpers/vendor/composer/composer/src/Composer/Command/BaseCommand.php +181 -0
  74. data/helpers/vendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php +255 -0
  75. data/helpers/vendor/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php +162 -0
  76. data/helpers/vendor/composer/composer/src/Composer/Command/ClearCacheCommand.php +74 -0
  77. data/helpers/vendor/composer/composer/src/Composer/Command/ConfigCommand.php +722 -0
  78. data/helpers/vendor/composer/composer/src/Composer/Command/CreateProjectCommand.php +387 -0
  79. data/helpers/vendor/composer/composer/src/Composer/Command/DependsCommand.php +57 -0
  80. data/helpers/vendor/composer/composer/src/Composer/Command/DiagnoseCommand.php +729 -0
  81. data/helpers/vendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php +88 -0
  82. data/helpers/vendor/composer/composer/src/Composer/Command/ExecCommand.php +97 -0
  83. data/helpers/vendor/composer/composer/src/Composer/Command/GlobalCommand.php +111 -0
  84. data/helpers/vendor/composer/composer/src/Composer/Command/HomeCommand.php +168 -0
  85. data/helpers/vendor/composer/composer/src/Composer/Command/InitCommand.php +820 -0
  86. data/helpers/vendor/composer/composer/src/Composer/Command/InstallCommand.php +124 -0
  87. data/helpers/vendor/composer/composer/src/Composer/Command/LicensesCommand.php +159 -0
  88. data/helpers/vendor/composer/composer/src/Composer/Command/OutdatedCommand.php +95 -0
  89. data/helpers/vendor/composer/composer/src/Composer/Command/ProhibitsCommand.php +57 -0
  90. data/helpers/vendor/composer/composer/src/Composer/Command/RemoveCommand.php +163 -0
  91. data/helpers/vendor/composer/composer/src/Composer/Command/RequireCommand.php +267 -0
  92. data/helpers/vendor/composer/composer/src/Composer/Command/RunScriptCommand.php +142 -0
  93. data/helpers/vendor/composer/composer/src/Composer/Command/ScriptAliasCommand.php +66 -0
  94. data/helpers/vendor/composer/composer/src/Composer/Command/SearchCommand.php +83 -0
  95. data/helpers/vendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php +405 -0
  96. data/helpers/vendor/composer/composer/src/Composer/Command/ShowCommand.php +1015 -0
  97. data/helpers/vendor/composer/composer/src/Composer/Command/StatusCommand.php +214 -0
  98. data/helpers/vendor/composer/composer/src/Composer/Command/SuggestsCommand.php +152 -0
  99. data/helpers/vendor/composer/composer/src/Composer/Command/UpdateCommand.php +228 -0
  100. data/helpers/vendor/composer/composer/src/Composer/Command/ValidateCommand.php +172 -0
  101. data/helpers/vendor/composer/composer/src/Composer/Compiler.php +284 -0
  102. data/helpers/vendor/composer/composer/src/Composer/Composer.php +283 -0
  103. data/helpers/vendor/composer/composer/src/Composer/Config.php +479 -0
  104. data/helpers/vendor/composer/composer/src/Composer/Config/ConfigSourceInterface.php +91 -0
  105. data/helpers/vendor/composer/composer/src/Composer/Config/JsonConfigSource.php +271 -0
  106. data/helpers/vendor/composer/composer/src/Composer/Console/Application.php +494 -0
  107. data/helpers/vendor/composer/composer/src/Composer/Console/HtmlOutputFormatter.php +90 -0
  108. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Decisions.php +211 -0
  109. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php +285 -0
  110. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/GenericRule.php +91 -0
  111. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php +66 -0
  112. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php +67 -0
  113. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php +67 -0
  114. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php +42 -0
  115. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php +50 -0
  116. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.php +66 -0
  117. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php +80 -0
  118. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/PolicyInterface.php +27 -0
  119. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Pool.php +378 -0
  120. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Problem.php +257 -0
  121. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Request.php +78 -0
  122. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Rule.php +268 -0
  123. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Rule2Literals.php +113 -0
  124. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php +176 -0
  125. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php +376 -0
  126. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php +94 -0
  127. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.php +52 -0
  128. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.php +144 -0
  129. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php +113 -0
  130. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Solver.php +874 -0
  131. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/SolverBugException.php +27 -0
  132. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php +88 -0
  133. data/helpers/vendor/composer/composer/src/Composer/DependencyResolver/Transaction.php +244 -0
  134. data/helpers/vendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php +135 -0
  135. data/helpers/vendor/composer/composer/src/Composer/Downloader/ChangeReportInterface.php +32 -0
  136. data/helpers/vendor/composer/composer/src/Composer/Downloader/DownloadManager.php +325 -0
  137. data/helpers/vendor/composer/composer/src/Composer/Downloader/DownloaderInterface.php +64 -0
  138. data/helpers/vendor/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php +32 -0
  139. data/helpers/vendor/composer/composer/src/Composer/Downloader/FileDownloader.php +322 -0
  140. data/helpers/vendor/composer/composer/src/Composer/Downloader/FilesystemException.php +26 -0
  141. data/helpers/vendor/composer/composer/src/Composer/Downloader/FossilDownloader.php +116 -0
  142. data/helpers/vendor/composer/composer/src/Composer/Downloader/GitDownloader.php +517 -0
  143. data/helpers/vendor/composer/composer/src/Composer/Downloader/GzipDownloader.php +84 -0
  144. data/helpers/vendor/composer/composer/src/Composer/Downloader/HgDownloader.php +100 -0
  145. data/helpers/vendor/composer/composer/src/Composer/Downloader/PathDownloader.php +224 -0
  146. data/helpers/vendor/composer/composer/src/Composer/Downloader/PearPackageExtractor.php +266 -0
  147. data/helpers/vendor/composer/composer/src/Composer/Downloader/PerforceDownloader.php +112 -0
  148. data/helpers/vendor/composer/composer/src/Composer/Downloader/PharDownloader.php +36 -0
  149. data/helpers/vendor/composer/composer/src/Composer/Downloader/RarDownloader.php +91 -0
  150. data/helpers/vendor/composer/composer/src/Composer/Downloader/SvnDownloader.php +225 -0
  151. data/helpers/vendor/composer/composer/src/Composer/Downloader/TarDownloader.php +31 -0
  152. data/helpers/vendor/composer/composer/src/Composer/Downloader/TransportException.php +53 -0
  153. data/helpers/vendor/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php +32 -0
  154. data/helpers/vendor/composer/composer/src/Composer/Downloader/VcsDownloader.php +293 -0
  155. data/helpers/vendor/composer/composer/src/Composer/Downloader/XzDownloader.php +60 -0
  156. data/helpers/vendor/composer/composer/src/Composer/Downloader/ZipDownloader.php +230 -0
  157. data/helpers/vendor/composer/composer/src/Composer/EventDispatcher/Event.php +103 -0
  158. data/helpers/vendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.php +544 -0
  159. data/helpers/vendor/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php +48 -0
  160. data/helpers/vendor/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php +20 -0
  161. data/helpers/vendor/composer/composer/src/Composer/Exception/NoSslException.php +20 -0
  162. data/helpers/vendor/composer/composer/src/Composer/Factory.php +653 -0
  163. data/helpers/vendor/composer/composer/src/Composer/IO/BaseIO.php +263 -0
  164. data/helpers/vendor/composer/composer/src/Composer/IO/BufferIO.php +86 -0
  165. data/helpers/vendor/composer/composer/src/Composer/IO/ConsoleIO.php +322 -0
  166. data/helpers/vendor/composer/composer/src/Composer/IO/IOInterface.php +207 -0
  167. data/helpers/vendor/composer/composer/src/Composer/IO/NullIO.php +129 -0
  168. data/helpers/vendor/composer/composer/src/Composer/Installer.php +1803 -0
  169. data/helpers/vendor/composer/composer/src/Composer/Installer/BinaryInstaller.php +214 -0
  170. data/helpers/vendor/composer/composer/src/Composer/Installer/BinaryPresenceInterface.php +30 -0
  171. data/helpers/vendor/composer/composer/src/Composer/Installer/InstallationManager.php +326 -0
  172. data/helpers/vendor/composer/composer/src/Composer/Installer/InstallerEvent.php +161 -0
  173. data/helpers/vendor/composer/composer/src/Composer/Installer/InstallerEvents.php +43 -0
  174. data/helpers/vendor/composer/composer/src/Composer/Installer/InstallerInterface.php +79 -0
  175. data/helpers/vendor/composer/composer/src/Composer/Installer/LibraryInstaller.php +232 -0
  176. data/helpers/vendor/composer/composer/src/Composer/Installer/MetapackageInstaller.php +100 -0
  177. data/helpers/vendor/composer/composer/src/Composer/Installer/NoopInstaller.php +88 -0
  178. data/helpers/vendor/composer/composer/src/Composer/Installer/PackageEvent.php +65 -0
  179. data/helpers/vendor/composer/composer/src/Composer/Installer/PackageEvents.php +75 -0
  180. data/helpers/vendor/composer/composer/src/Composer/Installer/PearBinaryInstaller.php +144 -0
  181. data/helpers/vendor/composer/composer/src/Composer/Installer/PearInstaller.php +84 -0
  182. data/helpers/vendor/composer/composer/src/Composer/Installer/PluginInstaller.php +84 -0
  183. data/helpers/vendor/composer/composer/src/Composer/Installer/ProjectInstaller.php +99 -0
  184. data/helpers/vendor/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.php +151 -0
  185. data/helpers/vendor/composer/composer/src/Composer/Json/JsonFile.php +306 -0
  186. data/helpers/vendor/composer/composer/src/Composer/Json/JsonFormatter.php +134 -0
  187. data/helpers/vendor/composer/composer/src/Composer/Json/JsonManipulator.php +522 -0
  188. data/helpers/vendor/composer/composer/src/Composer/Json/JsonValidationException.php +34 -0
  189. data/helpers/vendor/composer/composer/src/Composer/Package/AliasPackage.php +414 -0
  190. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.php +44 -0
  191. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php +105 -0
  192. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ArchiveManager.php +183 -0
  193. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php +43 -0
  194. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.php +148 -0
  195. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.php +31 -0
  196. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php +79 -0
  197. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.php +107 -0
  198. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/PharArchiver.php +97 -0
  199. data/helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php +74 -0
  200. data/helpers/vendor/composer/composer/src/Composer/Package/BasePackage.php +251 -0
  201. data/helpers/vendor/composer/composer/src/Composer/Package/Comparer/Comparer.php +129 -0
  202. data/helpers/vendor/composer/composer/src/Composer/Package/CompletePackage.php +199 -0
  203. data/helpers/vendor/composer/composer/src/Composer/Package/CompletePackageInterface.php +95 -0
  204. data/helpers/vendor/composer/composer/src/Composer/Package/Dumper/ArrayDumper.php +151 -0
  205. data/helpers/vendor/composer/composer/src/Composer/Package/Link.php +128 -0
  206. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/EmptyConstraint.php +24 -0
  207. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/LinkConstraintInterface.php +24 -0
  208. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/MultiConstraint.php +24 -0
  209. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/SpecificConstraint.php +24 -0
  210. data/helpers/vendor/composer/composer/src/Composer/Package/LinkConstraint/VersionConstraint.php +24 -0
  211. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php +290 -0
  212. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/InvalidPackageException.php +46 -0
  213. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/JsonLoader.php +45 -0
  214. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/LoaderInterface.php +30 -0
  215. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php +264 -0
  216. data/helpers/vendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php +499 -0
  217. data/helpers/vendor/composer/composer/src/Composer/Package/Locker.php +438 -0
  218. data/helpers/vendor/composer/composer/src/Composer/Package/Package.php +612 -0
  219. data/helpers/vendor/composer/composer/src/Composer/Package/PackageInterface.php +389 -0
  220. data/helpers/vendor/composer/composer/src/Composer/Package/RootAliasPackage.php +173 -0
  221. data/helpers/vendor/composer/composer/src/Composer/Package/RootPackage.php +136 -0
  222. data/helpers/vendor/composer/composer/src/Composer/Package/RootPackageInterface.php +142 -0
  223. data/helpers/vendor/composer/composer/src/Composer/Package/Version/VersionGuesser.php +302 -0
  224. data/helpers/vendor/composer/composer/src/Composer/Package/Version/VersionParser.php +81 -0
  225. data/helpers/vendor/composer/composer/src/Composer/Package/Version/VersionSelector.php +176 -0
  226. data/helpers/vendor/composer/composer/src/Composer/Plugin/Capability/Capability.php +23 -0
  227. data/helpers/vendor/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php +33 -0
  228. data/helpers/vendor/composer/composer/src/Composer/Plugin/Capable.php +43 -0
  229. data/helpers/vendor/composer/composer/src/Composer/Plugin/CommandEvent.php +88 -0
  230. data/helpers/vendor/composer/composer/src/Composer/Plugin/PluginEvents.php +61 -0
  231. data/helpers/vendor/composer/composer/src/Composer/Plugin/PluginInterface.php +39 -0
  232. data/helpers/vendor/composer/composer/src/Composer/Plugin/PluginManager.php +406 -0
  233. data/helpers/vendor/composer/composer/src/Composer/Plugin/PreCommandRunEvent.php +68 -0
  234. data/helpers/vendor/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php +78 -0
  235. data/helpers/vendor/composer/composer/src/Composer/Question/StrictConfirmationQuestion.php +94 -0
  236. data/helpers/vendor/composer/composer/src/Composer/Repository/ArrayRepository.php +208 -0
  237. data/helpers/vendor/composer/composer/src/Composer/Repository/ArtifactRepository.php +107 -0
  238. data/helpers/vendor/composer/composer/src/Composer/Repository/BaseRepository.php +157 -0
  239. data/helpers/vendor/composer/composer/src/Composer/Repository/ComposerRepository.php +833 -0
  240. data/helpers/vendor/composer/composer/src/Composer/Repository/CompositeRepository.php +164 -0
  241. data/helpers/vendor/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.php +23 -0
  242. data/helpers/vendor/composer/composer/src/Composer/Repository/FilesystemRepository.php +97 -0
  243. data/helpers/vendor/composer/composer/src/Composer/Repository/InstalledArrayRepository.php +24 -0
  244. data/helpers/vendor/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.php +22 -0
  245. data/helpers/vendor/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php +24 -0
  246. data/helpers/vendor/composer/composer/src/Composer/Repository/InvalidRepositoryException.php +22 -0
  247. data/helpers/vendor/composer/composer/src/Composer/Repository/PackageRepository.php +61 -0
  248. data/helpers/vendor/composer/composer/src/Composer/Repository/PathRepository.php +190 -0
  249. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/BaseChannelReader.php +82 -0
  250. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ChannelInfo.php +67 -0
  251. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ChannelReader.php +101 -0
  252. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest10Reader.php +164 -0
  253. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ChannelRest11Reader.php +139 -0
  254. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/DependencyConstraint.php +60 -0
  255. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/DependencyInfo.php +50 -0
  256. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/PackageDependencyParser.php +317 -0
  257. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/PackageInfo.php +94 -0
  258. data/helpers/vendor/composer/composer/src/Composer/Repository/Pear/ReleaseInfo.php +50 -0
  259. data/helpers/vendor/composer/composer/src/Composer/Repository/PearRepository.php +198 -0
  260. data/helpers/vendor/composer/composer/src/Composer/Repository/PlatformRepository.php +342 -0
  261. data/helpers/vendor/composer/composer/src/Composer/Repository/RepositoryFactory.php +169 -0
  262. data/helpers/vendor/composer/composer/src/Composer/Repository/RepositoryInterface.php +74 -0
  263. data/helpers/vendor/composer/composer/src/Composer/Repository/RepositoryManager.php +177 -0
  264. data/helpers/vendor/composer/composer/src/Composer/Repository/RepositorySecurityException.php +22 -0
  265. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php +452 -0
  266. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/FossilDriver.php +243 -0
  267. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.php +91 -0
  268. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/GitDriver.php +226 -0
  269. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.php +476 -0
  270. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.php +518 -0
  271. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.php +91 -0
  272. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/HgDriver.php +236 -0
  273. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php +186 -0
  274. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php +397 -0
  275. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriver.php +175 -0
  276. data/helpers/vendor/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.php +117 -0
  277. data/helpers/vendor/composer/composer/src/Composer/Repository/VcsRepository.php +410 -0
  278. data/helpers/vendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php +23 -0
  279. data/helpers/vendor/composer/composer/src/Composer/Repository/WritableArrayRepository.php +66 -0
  280. data/helpers/vendor/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php +54 -0
  281. data/helpers/vendor/composer/composer/src/Composer/Script/CommandEvent.php +22 -0
  282. data/helpers/vendor/composer/composer/src/Composer/Script/Event.php +133 -0
  283. data/helpers/vendor/composer/composer/src/Composer/Script/PackageEvent.php +24 -0
  284. data/helpers/vendor/composer/composer/src/Composer/Script/ScriptEvents.php +193 -0
  285. data/helpers/vendor/composer/composer/src/Composer/SelfUpdate/Keys.php +36 -0
  286. data/helpers/vendor/composer/composer/src/Composer/SelfUpdate/Versions.php +75 -0
  287. data/helpers/vendor/composer/composer/src/Composer/Util/AuthHelper.php +63 -0
  288. data/helpers/vendor/composer/composer/src/Composer/Util/Bitbucket.php +245 -0
  289. data/helpers/vendor/composer/composer/src/Composer/Util/ComposerMirror.php +57 -0
  290. data/helpers/vendor/composer/composer/src/Composer/Util/ConfigValidator.php +191 -0
  291. data/helpers/vendor/composer/composer/src/Composer/Util/ErrorHandler.php +82 -0
  292. data/helpers/vendor/composer/composer/src/Composer/Util/Filesystem.php +715 -0
  293. data/helpers/vendor/composer/composer/src/Composer/Util/Git.php +374 -0
  294. data/helpers/vendor/composer/composer/src/Composer/Util/GitHub.php +180 -0
  295. data/helpers/vendor/composer/composer/src/Composer/Util/GitLab.php +172 -0
  296. data/helpers/vendor/composer/composer/src/Composer/Util/Hg.php +94 -0
  297. data/helpers/vendor/composer/composer/src/Composer/Util/IniHelper.php +64 -0
  298. data/helpers/vendor/composer/composer/src/Composer/Util/NoProxyPattern.php +147 -0
  299. data/helpers/vendor/composer/composer/src/Composer/Util/PackageSorter.php +92 -0
  300. data/helpers/vendor/composer/composer/src/Composer/Util/Perforce.php +579 -0
  301. data/helpers/vendor/composer/composer/src/Composer/Util/Platform.php +92 -0
  302. data/helpers/vendor/composer/composer/src/Composer/Util/ProcessExecutor.php +193 -0
  303. data/helpers/vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php +1126 -0
  304. data/helpers/vendor/composer/composer/src/Composer/Util/Silencer.php +78 -0
  305. data/helpers/vendor/composer/composer/src/Composer/Util/SpdxLicense.php +24 -0
  306. data/helpers/vendor/composer/composer/src/Composer/Util/StreamContextFactory.php +177 -0
  307. data/helpers/vendor/composer/composer/src/Composer/Util/Svn.php +381 -0
  308. data/helpers/vendor/composer/composer/src/Composer/Util/TlsHelper.php +202 -0
  309. data/helpers/vendor/composer/composer/src/Composer/Util/Url.php +55 -0
  310. data/helpers/vendor/composer/composer/src/Composer/Util/Zip.php +108 -0
  311. data/helpers/vendor/composer/composer/src/Composer/XdebugHandler.php +31 -0
  312. data/helpers/vendor/composer/composer/src/bootstrap.php +24 -0
  313. data/helpers/vendor/composer/installed.json +1051 -0
  314. data/helpers/vendor/composer/semver/CHANGELOG.md +72 -0
  315. data/helpers/vendor/composer/semver/LICENSE +19 -0
  316. data/helpers/vendor/composer/semver/README.md +70 -0
  317. data/helpers/vendor/composer/semver/composer.json +58 -0
  318. data/helpers/vendor/composer/semver/src/Comparator.php +111 -0
  319. data/helpers/vendor/composer/semver/src/Constraint/AbstractConstraint.php +63 -0
  320. data/helpers/vendor/composer/semver/src/Constraint/Constraint.php +219 -0
  321. data/helpers/vendor/composer/semver/src/Constraint/ConstraintInterface.php +32 -0
  322. data/helpers/vendor/composer/semver/src/Constraint/EmptyConstraint.php +59 -0
  323. data/helpers/vendor/composer/semver/src/Constraint/MultiConstraint.php +120 -0
  324. data/helpers/vendor/composer/semver/src/Semver.php +127 -0
  325. data/helpers/vendor/composer/semver/src/VersionParser.php +540 -0
  326. data/helpers/vendor/composer/spdx-licenses/.php_cs.dist +59 -0
  327. data/helpers/vendor/composer/spdx-licenses/CHANGELOG.md +94 -0
  328. data/helpers/vendor/composer/spdx-licenses/LICENSE +19 -0
  329. data/helpers/vendor/composer/spdx-licenses/README.md +69 -0
  330. data/helpers/vendor/composer/spdx-licenses/composer.json +56 -0
  331. data/helpers/vendor/composer/spdx-licenses/res/spdx-exceptions.json +110 -0
  332. data/helpers/vendor/composer/spdx-licenses/res/spdx-licenses.json +1982 -0
  333. data/helpers/vendor/composer/spdx-licenses/src/SpdxLicenses.php +343 -0
  334. data/helpers/vendor/composer/xdebug-handler/CHANGELOG.md +59 -0
  335. data/helpers/vendor/composer/xdebug-handler/LICENSE +21 -0
  336. data/helpers/vendor/composer/xdebug-handler/README.md +288 -0
  337. data/helpers/vendor/composer/xdebug-handler/composer.json +40 -0
  338. data/helpers/vendor/composer/xdebug-handler/src/PhpConfig.php +73 -0
  339. data/helpers/vendor/composer/xdebug-handler/src/Process.php +170 -0
  340. data/helpers/vendor/composer/xdebug-handler/src/Status.php +163 -0
  341. data/helpers/vendor/composer/xdebug-handler/src/XdebugHandler.php +565 -0
  342. data/helpers/vendor/justinrainbow/json-schema/.gitattributes +5 -0
  343. data/helpers/vendor/justinrainbow/json-schema/.php_cs.dist +30 -0
  344. data/helpers/vendor/justinrainbow/json-schema/LICENSE +21 -0
  345. data/helpers/vendor/justinrainbow/json-schema/README.md +206 -0
  346. data/helpers/vendor/justinrainbow/json-schema/bin/validate-json +251 -0
  347. data/helpers/vendor/justinrainbow/json-schema/composer.json +76 -0
  348. data/helpers/vendor/justinrainbow/json-schema/demo/README.md +14 -0
  349. data/helpers/vendor/justinrainbow/json-schema/demo/data.json +3 -0
  350. data/helpers/vendor/justinrainbow/json-schema/demo/demo.php +18 -0
  351. data/helpers/vendor/justinrainbow/json-schema/demo/schema.json +3 -0
  352. data/helpers/vendor/justinrainbow/json-schema/dist/schema/json-schema-draft-03.json +174 -0
  353. data/helpers/vendor/justinrainbow/json-schema/dist/schema/json-schema-draft-04.json +150 -0
  354. data/helpers/vendor/justinrainbow/json-schema/phpunit.xml.dist +26 -0
  355. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php +148 -0
  356. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php +121 -0
  357. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php +213 -0
  358. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php +65 -0
  359. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/EnumConstraint.php +54 -0
  360. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php +220 -0
  361. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php +214 -0
  362. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php +81 -0
  363. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php +192 -0
  364. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php +94 -0
  365. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php +60 -0
  366. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php +68 -0
  367. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php +40 -0
  368. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php +18 -0
  369. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeConstraint.php +261 -0
  370. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php +413 -0
  371. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php +161 -0
  372. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php +7 -0
  373. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidArgumentException.php +17 -0
  374. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidConfigException.php +17 -0
  375. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaException.php +17 -0
  376. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaMediaTypeException.php +17 -0
  377. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSourceUriException.php +17 -0
  378. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/JsonDecodingException.php +40 -0
  379. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ResourceNotFoundException.php +17 -0
  380. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/RuntimeException.php +17 -0
  381. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UnresolvableJsonPointerException.php +19 -0
  382. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UriResolverException.php +17 -0
  383. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ValidationException.php +14 -0
  384. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Iterator/ObjectIterator.php +149 -0
  385. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php +30 -0
  386. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php +169 -0
  387. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php +41 -0
  388. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/AbstractRetriever.php +34 -0
  389. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php +83 -0
  390. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php +93 -0
  391. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php +56 -0
  392. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php +36 -0
  393. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php +175 -0
  394. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php +349 -0
  395. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php +26 -0
  396. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/UriRetrieverInterface.php +26 -0
  397. data/helpers/vendor/justinrainbow/json-schema/src/JsonSchema/Validator.php +90 -0
  398. data/helpers/vendor/psr/container/.gitignore +3 -0
  399. data/helpers/vendor/psr/container/LICENSE +21 -0
  400. data/helpers/vendor/psr/container/README.md +5 -0
  401. data/helpers/vendor/psr/container/composer.json +27 -0
  402. data/helpers/vendor/psr/container/src/ContainerExceptionInterface.php +13 -0
  403. data/helpers/vendor/psr/container/src/ContainerInterface.php +37 -0
  404. data/helpers/vendor/psr/container/src/NotFoundExceptionInterface.php +13 -0
  405. data/helpers/vendor/psr/log/.gitignore +1 -0
  406. data/helpers/vendor/psr/log/LICENSE +19 -0
  407. data/helpers/vendor/psr/log/Psr/Log/AbstractLogger.php +128 -0
  408. data/helpers/vendor/psr/log/Psr/Log/InvalidArgumentException.php +7 -0
  409. data/helpers/vendor/psr/log/Psr/Log/LogLevel.php +18 -0
  410. data/helpers/vendor/psr/log/Psr/Log/LoggerAwareInterface.php +18 -0
  411. data/helpers/vendor/psr/log/Psr/Log/LoggerAwareTrait.php +26 -0
  412. data/helpers/vendor/psr/log/Psr/Log/LoggerInterface.php +123 -0
  413. data/helpers/vendor/psr/log/Psr/Log/LoggerTrait.php +140 -0
  414. data/helpers/vendor/psr/log/Psr/Log/NullLogger.php +28 -0
  415. data/helpers/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php +144 -0
  416. data/helpers/vendor/psr/log/Psr/Log/Test/TestLogger.php +146 -0
  417. data/helpers/vendor/psr/log/README.md +52 -0
  418. data/helpers/vendor/psr/log/composer.json +26 -0
  419. data/helpers/vendor/seld/jsonlint/.gitignore +3 -0
  420. data/helpers/vendor/seld/jsonlint/.travis.yml +25 -0
  421. data/helpers/vendor/seld/jsonlint/CHANGELOG.md +66 -0
  422. data/helpers/vendor/seld/jsonlint/LICENSE +19 -0
  423. data/helpers/vendor/seld/jsonlint/README.md +89 -0
  424. data/helpers/vendor/seld/jsonlint/bin/jsonlint +117 -0
  425. data/helpers/vendor/seld/jsonlint/composer.json +24 -0
  426. data/helpers/vendor/seld/jsonlint/phpunit.xml.dist +25 -0
  427. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/DuplicateKeyException.php +26 -0
  428. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php +502 -0
  429. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php +217 -0
  430. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.php +28 -0
  431. data/helpers/vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php +16 -0
  432. data/helpers/vendor/seld/jsonlint/tests/JsonParserTest.php +230 -0
  433. data/helpers/vendor/seld/jsonlint/tests/bom.json +6 -0
  434. data/helpers/vendor/seld/jsonlint/tests/bootstrap.php +13 -0
  435. data/helpers/vendor/seld/phar-utils/.gitignore +1 -0
  436. data/helpers/vendor/seld/phar-utils/LICENSE +19 -0
  437. data/helpers/vendor/seld/phar-utils/README.md +39 -0
  438. data/helpers/vendor/seld/phar-utils/composer.json +26 -0
  439. data/helpers/vendor/seld/phar-utils/composer.lock +19 -0
  440. data/helpers/vendor/seld/phar-utils/src/Timestamps.php +192 -0
  441. data/helpers/vendor/symfony/console/.gitignore +3 -0
  442. data/helpers/vendor/symfony/console/Application.php +1194 -0
  443. data/helpers/vendor/symfony/console/CHANGELOG.md +148 -0
  444. data/helpers/vendor/symfony/console/Command/Command.php +654 -0
  445. data/helpers/vendor/symfony/console/Command/HelpCommand.php +81 -0
  446. data/helpers/vendor/symfony/console/Command/ListCommand.php +90 -0
  447. data/helpers/vendor/symfony/console/Command/LockableTrait.php +71 -0
  448. data/helpers/vendor/symfony/console/CommandLoader/CommandLoaderInterface.php +46 -0
  449. data/helpers/vendor/symfony/console/CommandLoader/ContainerCommandLoader.php +64 -0
  450. data/helpers/vendor/symfony/console/CommandLoader/FactoryCommandLoader.php +62 -0
  451. data/helpers/vendor/symfony/console/ConsoleEvents.php +47 -0
  452. data/helpers/vendor/symfony/console/DependencyInjection/AddConsoleCommandPass.php +98 -0
  453. data/helpers/vendor/symfony/console/Descriptor/ApplicationDescription.php +144 -0
  454. data/helpers/vendor/symfony/console/Descriptor/Descriptor.php +107 -0
  455. data/helpers/vendor/symfony/console/Descriptor/DescriptorInterface.php +31 -0
  456. data/helpers/vendor/symfony/console/Descriptor/JsonDescriptor.php +170 -0
  457. data/helpers/vendor/symfony/console/Descriptor/MarkdownDescriptor.php +182 -0
  458. data/helpers/vendor/symfony/console/Descriptor/TextDescriptor.php +342 -0
  459. data/helpers/vendor/symfony/console/Descriptor/XmlDescriptor.php +245 -0
  460. data/helpers/vendor/symfony/console/Event/ConsoleCommandEvent.php +60 -0
  461. data/helpers/vendor/symfony/console/Event/ConsoleErrorEvent.php +58 -0
  462. data/helpers/vendor/symfony/console/Event/ConsoleEvent.php +67 -0
  463. data/helpers/vendor/symfony/console/Event/ConsoleTerminateEvent.php +53 -0
  464. data/helpers/vendor/symfony/console/EventListener/ErrorListener.php +91 -0
  465. data/helpers/vendor/symfony/console/Exception/CommandNotFoundException.php +43 -0
  466. data/helpers/vendor/symfony/console/Exception/ExceptionInterface.php +21 -0
  467. data/helpers/vendor/symfony/console/Exception/InvalidArgumentException.php +19 -0
  468. data/helpers/vendor/symfony/console/Exception/InvalidOptionException.php +21 -0
  469. data/helpers/vendor/symfony/console/Exception/LogicException.php +19 -0
  470. data/helpers/vendor/symfony/console/Exception/NamespaceNotFoundException.php +21 -0
  471. data/helpers/vendor/symfony/console/Exception/RuntimeException.php +19 -0
  472. data/helpers/vendor/symfony/console/Formatter/OutputFormatter.php +284 -0
  473. data/helpers/vendor/symfony/console/Formatter/OutputFormatterInterface.php +71 -0
  474. data/helpers/vendor/symfony/console/Formatter/OutputFormatterStyle.php +197 -0
  475. data/helpers/vendor/symfony/console/Formatter/OutputFormatterStyleInterface.php +62 -0
  476. data/helpers/vendor/symfony/console/Formatter/OutputFormatterStyleStack.php +110 -0
  477. data/helpers/vendor/symfony/console/Formatter/WrappableOutputFormatterInterface.php +25 -0
  478. data/helpers/vendor/symfony/console/Helper/DebugFormatterHelper.php +127 -0
  479. data/helpers/vendor/symfony/console/Helper/DescriptorHelper.php +94 -0
  480. data/helpers/vendor/symfony/console/Helper/Dumper.php +64 -0
  481. data/helpers/vendor/symfony/console/Helper/FormatterHelper.php +106 -0
  482. data/helpers/vendor/symfony/console/Helper/Helper.php +138 -0
  483. data/helpers/vendor/symfony/console/Helper/HelperInterface.php +39 -0
  484. data/helpers/vendor/symfony/console/Helper/HelperSet.php +108 -0
  485. data/helpers/vendor/symfony/console/Helper/InputAwareHelper.php +33 -0
  486. data/helpers/vendor/symfony/console/Helper/ProcessHelper.php +156 -0
  487. data/helpers/vendor/symfony/console/Helper/ProgressBar.php +545 -0
  488. data/helpers/vendor/symfony/console/Helper/ProgressIndicator.php +269 -0
  489. data/helpers/vendor/symfony/console/Helper/QuestionHelper.php +479 -0
  490. data/helpers/vendor/symfony/console/Helper/SymfonyQuestionHelper.php +96 -0
  491. data/helpers/vendor/symfony/console/Helper/Table.php +813 -0
  492. data/helpers/vendor/symfony/console/Helper/TableCell.php +68 -0
  493. data/helpers/vendor/symfony/console/Helper/TableRows.php +32 -0
  494. data/helpers/vendor/symfony/console/Helper/TableSeparator.php +25 -0
  495. data/helpers/vendor/symfony/console/Helper/TableStyle.php +458 -0
  496. data/helpers/vendor/symfony/console/Input/ArgvInput.php +365 -0
  497. data/helpers/vendor/symfony/console/Input/ArrayInput.php +206 -0
  498. data/helpers/vendor/symfony/console/Input/Input.php +203 -0
  499. data/helpers/vendor/symfony/console/Input/InputArgument.php +129 -0
  500. data/helpers/vendor/symfony/console/Input/InputAwareInterface.php +26 -0
  501. data/helpers/vendor/symfony/console/Input/InputDefinition.php +404 -0
  502. data/helpers/vendor/symfony/console/Input/InputInterface.php +163 -0
  503. data/helpers/vendor/symfony/console/Input/InputOption.php +208 -0
  504. data/helpers/vendor/symfony/console/Input/StreamableInputInterface.php +37 -0
  505. data/helpers/vendor/symfony/console/Input/StringInput.php +72 -0
  506. data/helpers/vendor/symfony/console/LICENSE +19 -0
  507. data/helpers/vendor/symfony/console/Logger/ConsoleLogger.php +124 -0
  508. data/helpers/vendor/symfony/console/Output/BufferedOutput.php +45 -0
  509. data/helpers/vendor/symfony/console/Output/ConsoleOutput.php +161 -0
  510. data/helpers/vendor/symfony/console/Output/ConsoleOutputInterface.php +32 -0
  511. data/helpers/vendor/symfony/console/Output/ConsoleSectionOutput.php +141 -0
  512. data/helpers/vendor/symfony/console/Output/NullOutput.php +123 -0
  513. data/helpers/vendor/symfony/console/Output/Output.php +177 -0
  514. data/helpers/vendor/symfony/console/Output/OutputInterface.php +114 -0
  515. data/helpers/vendor/symfony/console/Output/StreamOutput.php +124 -0
  516. data/helpers/vendor/symfony/console/Question/ChoiceQuestion.php +182 -0
  517. data/helpers/vendor/symfony/console/Question/ConfirmationQuestion.php +59 -0
  518. data/helpers/vendor/symfony/console/Question/Question.php +277 -0
  519. data/helpers/vendor/symfony/console/README.md +20 -0
  520. data/helpers/vendor/symfony/console/Resources/bin/hiddeninput.exe +0 -0
  521. data/helpers/vendor/symfony/console/Style/OutputStyle.php +155 -0
  522. data/helpers/vendor/symfony/console/Style/StyleInterface.php +154 -0
  523. data/helpers/vendor/symfony/console/Style/SymfonyStyle.php +438 -0
  524. data/helpers/vendor/symfony/console/Terminal.php +137 -0
  525. data/helpers/vendor/symfony/console/Tester/ApplicationTester.php +77 -0
  526. data/helpers/vendor/symfony/console/Tester/CommandTester.php +78 -0
  527. data/helpers/vendor/symfony/console/Tester/TesterTrait.php +177 -0
  528. data/helpers/vendor/symfony/console/Tests/ApplicationTest.php +1836 -0
  529. data/helpers/vendor/symfony/console/Tests/Command/CommandTest.php +436 -0
  530. data/helpers/vendor/symfony/console/Tests/Command/HelpCommandTest.php +71 -0
  531. data/helpers/vendor/symfony/console/Tests/Command/ListCommandTest.php +113 -0
  532. data/helpers/vendor/symfony/console/Tests/Command/LockableTraitTest.php +67 -0
  533. data/helpers/vendor/symfony/console/Tests/CommandLoader/ContainerCommandLoaderTest.php +61 -0
  534. data/helpers/vendor/symfony/console/Tests/CommandLoader/FactoryCommandLoaderTest.php +60 -0
  535. data/helpers/vendor/symfony/console/Tests/DependencyInjection/AddConsoleCommandPassTest.php +258 -0
  536. data/helpers/vendor/symfony/console/Tests/Descriptor/AbstractDescriptorTest.php +107 -0
  537. data/helpers/vendor/symfony/console/Tests/Descriptor/JsonDescriptorTest.php +35 -0
  538. data/helpers/vendor/symfony/console/Tests/Descriptor/MarkdownDescriptorTest.php +45 -0
  539. data/helpers/vendor/symfony/console/Tests/Descriptor/ObjectsProvider.php +82 -0
  540. data/helpers/vendor/symfony/console/Tests/Descriptor/TextDescriptorTest.php +53 -0
  541. data/helpers/vendor/symfony/console/Tests/Descriptor/XmlDescriptorTest.php +27 -0
  542. data/helpers/vendor/symfony/console/Tests/EventListener/ErrorListenerTest.php +156 -0
  543. data/helpers/vendor/symfony/console/Tests/Fixtures/BarBucCommand.php +11 -0
  544. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorApplication1.php +18 -0
  545. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorApplication2.php +26 -0
  546. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorApplicationMbString.php +24 -0
  547. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommand1.php +27 -0
  548. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommand2.php +32 -0
  549. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommand3.php +27 -0
  550. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommand4.php +25 -0
  551. data/helpers/vendor/symfony/console/Tests/Fixtures/DescriptorCommandMbString.php +32 -0
  552. data/helpers/vendor/symfony/console/Tests/Fixtures/DummyOutput.php +36 -0
  553. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo1Command.php +26 -0
  554. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo2Command.php +21 -0
  555. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo3Command.php +29 -0
  556. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo4Command.php +11 -0
  557. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo5Command.php +10 -0
  558. data/helpers/vendor/symfony/console/Tests/Fixtures/Foo6Command.php +11 -0
  559. data/helpers/vendor/symfony/console/Tests/Fixtures/FooCommand.php +33 -0
  560. data/helpers/vendor/symfony/console/Tests/Fixtures/FooLock2Command.php +28 -0
  561. data/helpers/vendor/symfony/console/Tests/Fixtures/FooLockCommand.php +27 -0
  562. data/helpers/vendor/symfony/console/Tests/Fixtures/FooOptCommand.php +36 -0
  563. data/helpers/vendor/symfony/console/Tests/Fixtures/FooSameCaseLowercaseCommand.php +11 -0
  564. data/helpers/vendor/symfony/console/Tests/Fixtures/FooSameCaseUppercaseCommand.php +11 -0
  565. data/helpers/vendor/symfony/console/Tests/Fixtures/FooSubnamespaced1Command.php +26 -0
  566. data/helpers/vendor/symfony/console/Tests/Fixtures/FooSubnamespaced2Command.php +26 -0
  567. data/helpers/vendor/symfony/console/Tests/Fixtures/FooWithoutAliasCommand.php +21 -0
  568. data/helpers/vendor/symfony/console/Tests/Fixtures/FoobarCommand.php +25 -0
  569. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_0.php +11 -0
  570. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_1.php +13 -0
  571. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_10.php +17 -0
  572. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_11.php +12 -0
  573. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_12.php +13 -0
  574. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_13.php +14 -0
  575. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_14.php +17 -0
  576. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_15.php +14 -0
  577. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_16.php +15 -0
  578. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_17.php +13 -0
  579. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_2.php +16 -0
  580. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_3.php +12 -0
  581. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_4.php +34 -0
  582. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_4_with_iterators.php +34 -0
  583. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_5.php +37 -0
  584. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_6.php +16 -0
  585. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_7.php +15 -0
  586. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_8.php +26 -0
  587. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/command_9.php +11 -0
  588. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/command/interactive_command_1.php +19 -0
  589. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/interactive_output_1.txt +7 -0
  590. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_0.txt +3 -0
  591. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_1.txt +9 -0
  592. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_10.txt +7 -0
  593. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_11.txt +4 -0
  594. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_12.txt +6 -0
  595. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_13.txt +7 -0
  596. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_14.txt +6 -0
  597. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_15.txt +7 -0
  598. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_16.txt +8 -0
  599. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_17.txt +7 -0
  600. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_2.txt +13 -0
  601. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_3.txt +7 -0
  602. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_4.txt +32 -0
  603. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_4_with_iterators.txt +32 -0
  604. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_5.txt +18 -0
  605. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_6.txt +6 -0
  606. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_7.txt +5 -0
  607. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_8.txt +9 -0
  608. data/helpers/vendor/symfony/console/Tests/Fixtures/Style/SymfonyStyle/output/output_9.txt +5 -0
  609. data/helpers/vendor/symfony/console/Tests/Fixtures/TestAmbiguousCommandRegistering.php +22 -0
  610. data/helpers/vendor/symfony/console/Tests/Fixtures/TestAmbiguousCommandRegistering2.php +21 -0
  611. data/helpers/vendor/symfony/console/Tests/Fixtures/TestCommand.php +28 -0
  612. data/helpers/vendor/symfony/console/Tests/Fixtures/application_1.json +156 -0
  613. data/helpers/vendor/symfony/console/Tests/Fixtures/application_1.md +172 -0
  614. data/helpers/vendor/symfony/console/Tests/Fixtures/application_1.txt +17 -0
  615. data/helpers/vendor/symfony/console/Tests/Fixtures/application_1.xml +104 -0
  616. data/helpers/vendor/symfony/console/Tests/Fixtures/application_2.json +509 -0
  617. data/helpers/vendor/symfony/console/Tests/Fixtures/application_2.md +431 -0
  618. data/helpers/vendor/symfony/console/Tests/Fixtures/application_2.txt +21 -0
  619. data/helpers/vendor/symfony/console/Tests/Fixtures/application_2.xml +254 -0
  620. data/helpers/vendor/symfony/console/Tests/Fixtures/application_filtered_namespace.txt +16 -0
  621. data/helpers/vendor/symfony/console/Tests/Fixtures/application_gethelp.txt +1 -0
  622. data/helpers/vendor/symfony/console/Tests/Fixtures/application_mbstring.md +269 -0
  623. data/helpers/vendor/symfony/console/Tests/Fixtures/application_mbstring.txt +19 -0
  624. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception1.txt +5 -0
  625. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception2.txt +7 -0
  626. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception3.txt +18 -0
  627. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception3decorated.txt +18 -0
  628. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception4.txt +6 -0
  629. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_doublewidth1.txt +8 -0
  630. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_doublewidth1decorated.txt +8 -0
  631. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_doublewidth2.txt +9 -0
  632. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_escapeslines.txt +9 -0
  633. data/helpers/vendor/symfony/console/Tests/Fixtures/application_renderexception_linebreaks.txt +11 -0
  634. data/helpers/vendor/symfony/console/Tests/Fixtures/application_run1.txt +17 -0
  635. data/helpers/vendor/symfony/console/Tests/Fixtures/application_run2.txt +29 -0
  636. data/helpers/vendor/symfony/console/Tests/Fixtures/application_run3.txt +29 -0
  637. data/helpers/vendor/symfony/console/Tests/Fixtures/application_run4.txt +1 -0
  638. data/helpers/vendor/symfony/console/Tests/Fixtures/command_1.json +15 -0
  639. data/helpers/vendor/symfony/console/Tests/Fixtures/command_1.md +12 -0
  640. data/helpers/vendor/symfony/console/Tests/Fixtures/command_1.txt +10 -0
  641. data/helpers/vendor/symfony/console/Tests/Fixtures/command_1.xml +12 -0
  642. data/helpers/vendor/symfony/console/Tests/Fixtures/command_2.json +33 -0
  643. data/helpers/vendor/symfony/console/Tests/Fixtures/command_2.md +29 -0
  644. data/helpers/vendor/symfony/console/Tests/Fixtures/command_2.txt +16 -0
  645. data/helpers/vendor/symfony/console/Tests/Fixtures/command_2.xml +21 -0
  646. data/helpers/vendor/symfony/console/Tests/Fixtures/command_mbstring.md +29 -0
  647. data/helpers/vendor/symfony/console/Tests/Fixtures/command_mbstring.txt +16 -0
  648. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_1.json +7 -0
  649. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_1.md +5 -0
  650. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_1.txt +1 -0
  651. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_1.xml +5 -0
  652. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_2.json +7 -0
  653. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_2.md +7 -0
  654. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_2.txt +1 -0
  655. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_2.xml +5 -0
  656. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_3.json +7 -0
  657. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_3.md +7 -0
  658. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_3.txt +1 -0
  659. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_3.xml +7 -0
  660. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_4.json +7 -0
  661. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_4.md +8 -0
  662. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_4.txt +2 -0
  663. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_4.xml +6 -0
  664. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_default_inf_value.json +7 -0
  665. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_default_inf_value.md +7 -0
  666. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_default_inf_value.txt +1 -0
  667. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_default_inf_value.xml +7 -0
  668. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_style.json +7 -0
  669. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_style.md +7 -0
  670. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_style.txt +1 -0
  671. data/helpers/vendor/symfony/console/Tests/Fixtures/input_argument_with_style.xml +7 -0
  672. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_1.json +4 -0
  673. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_1.md +0 -0
  674. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_1.txt +0 -0
  675. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_1.xml +5 -0
  676. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_2.json +12 -0
  677. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_2.md +7 -0
  678. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_2.txt +2 -0
  679. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_2.xml +10 -0
  680. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_3.json +14 -0
  681. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_3.md +8 -0
  682. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_3.txt +2 -0
  683. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_3.xml +9 -0
  684. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_4.json +22 -0
  685. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_4.md +16 -0
  686. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_4.txt +5 -0
  687. data/helpers/vendor/symfony/console/Tests/Fixtures/input_definition_4.xml +14 -0
  688. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_1.json +9 -0
  689. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_1.md +6 -0
  690. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_1.txt +1 -0
  691. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_1.xml +4 -0
  692. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_2.json +9 -0
  693. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_2.md +8 -0
  694. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_2.txt +1 -0
  695. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_2.xml +7 -0
  696. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_3.json +9 -0
  697. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_3.md +8 -0
  698. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_3.txt +1 -0
  699. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_3.xml +5 -0
  700. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_4.json +9 -0
  701. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_4.md +8 -0
  702. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_4.txt +1 -0
  703. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_4.xml +5 -0
  704. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_5.json +9 -0
  705. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_5.md +9 -0
  706. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_5.txt +2 -0
  707. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_5.xml +6 -0
  708. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_6.json +9 -0
  709. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_6.md +8 -0
  710. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_6.txt +1 -0
  711. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_6.xml +5 -0
  712. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_default_inf_value.json +9 -0
  713. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_default_inf_value.md +8 -0
  714. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_default_inf_value.txt +1 -0
  715. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_default_inf_value.xml +7 -0
  716. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style.json +9 -0
  717. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style.md +8 -0
  718. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style.txt +1 -0
  719. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style.xml +7 -0
  720. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style_array.json +12 -0
  721. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style_array.md +8 -0
  722. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style_array.txt +1 -0
  723. data/helpers/vendor/symfony/console/Tests/Fixtures/input_option_with_style_array.xml +8 -0
  724. data/helpers/vendor/symfony/console/Tests/Formatter/OutputFormatterStyleStackTest.php +71 -0
  725. data/helpers/vendor/symfony/console/Tests/Formatter/OutputFormatterStyleTest.php +115 -0
  726. data/helpers/vendor/symfony/console/Tests/Formatter/OutputFormatterTest.php +350 -0
  727. data/helpers/vendor/symfony/console/Tests/Helper/AbstractQuestionHelperTest.php +34 -0
  728. data/helpers/vendor/symfony/console/Tests/Helper/DumperNativeFallbackTest.php +58 -0
  729. data/helpers/vendor/symfony/console/Tests/Helper/DumperTest.php +58 -0
  730. data/helpers/vendor/symfony/console/Tests/Helper/FormatterHelperTest.php +129 -0
  731. data/helpers/vendor/symfony/console/Tests/Helper/HelperSetTest.php +127 -0
  732. data/helpers/vendor/symfony/console/Tests/Helper/HelperTest.php +55 -0
  733. data/helpers/vendor/symfony/console/Tests/Helper/ProcessHelperTest.php +133 -0
  734. data/helpers/vendor/symfony/console/Tests/Helper/ProgressBarTest.php +947 -0
  735. data/helpers/vendor/symfony/console/Tests/Helper/ProgressIndicatorTest.php +183 -0
  736. data/helpers/vendor/symfony/console/Tests/Helper/QuestionHelperTest.php +789 -0
  737. data/helpers/vendor/symfony/console/Tests/Helper/SymfonyQuestionHelperTest.php +168 -0
  738. data/helpers/vendor/symfony/console/Tests/Helper/TableStyleTest.php +28 -0
  739. data/helpers/vendor/symfony/console/Tests/Helper/TableTest.php +1199 -0
  740. data/helpers/vendor/symfony/console/Tests/Input/ArgvInputTest.php +466 -0
  741. data/helpers/vendor/symfony/console/Tests/Input/ArrayInputTest.php +177 -0
  742. data/helpers/vendor/symfony/console/Tests/Input/InputArgumentTest.php +103 -0
  743. data/helpers/vendor/symfony/console/Tests/Input/InputDefinitionTest.php +407 -0
  744. data/helpers/vendor/symfony/console/Tests/Input/InputOptionTest.php +196 -0
  745. data/helpers/vendor/symfony/console/Tests/Input/InputTest.php +149 -0
  746. data/helpers/vendor/symfony/console/Tests/Input/StringInputTest.php +87 -0
  747. data/helpers/vendor/symfony/console/Tests/Logger/ConsoleLoggerTest.php +215 -0
  748. data/helpers/vendor/symfony/console/Tests/Output/ConsoleOutputTest.php +42 -0
  749. data/helpers/vendor/symfony/console/Tests/Output/ConsoleSectionOutputTest.php +163 -0
  750. data/helpers/vendor/symfony/console/Tests/Output/NullOutputTest.php +88 -0
  751. data/helpers/vendor/symfony/console/Tests/Output/OutputTest.php +189 -0
  752. data/helpers/vendor/symfony/console/Tests/Output/StreamOutputTest.php +61 -0
  753. data/helpers/vendor/symfony/console/Tests/Question/ChoiceQuestionTest.php +64 -0
  754. data/helpers/vendor/symfony/console/Tests/Question/ConfirmationQuestionTest.php +62 -0
  755. data/helpers/vendor/symfony/console/Tests/Question/QuestionTest.php +304 -0
  756. data/helpers/vendor/symfony/console/Tests/Style/SymfonyStyleTest.php +118 -0
  757. data/helpers/vendor/symfony/console/Tests/TerminalTest.php +59 -0
  758. data/helpers/vendor/symfony/console/Tests/Tester/ApplicationTesterTest.php +113 -0
  759. data/helpers/vendor/symfony/console/Tests/Tester/CommandTesterTest.php +235 -0
  760. data/helpers/vendor/symfony/console/composer.json +59 -0
  761. data/helpers/vendor/symfony/console/phpunit.xml.dist +41 -0
  762. data/helpers/vendor/symfony/filesystem/.gitignore +3 -0
  763. data/helpers/vendor/symfony/filesystem/CHANGELOG.md +65 -0
  764. data/helpers/vendor/symfony/filesystem/Exception/ExceptionInterface.php +21 -0
  765. data/helpers/vendor/symfony/filesystem/Exception/FileNotFoundException.php +34 -0
  766. data/helpers/vendor/symfony/filesystem/Exception/IOException.php +39 -0
  767. data/helpers/vendor/symfony/filesystem/Exception/IOExceptionInterface.php +27 -0
  768. data/helpers/vendor/symfony/filesystem/Exception/InvalidArgumentException.php +19 -0
  769. data/helpers/vendor/symfony/filesystem/Filesystem.php +768 -0
  770. data/helpers/vendor/symfony/filesystem/LICENSE +19 -0
  771. data/helpers/vendor/symfony/filesystem/README.md +13 -0
  772. data/helpers/vendor/symfony/filesystem/Tests/ExceptionTest.php +47 -0
  773. data/helpers/vendor/symfony/filesystem/Tests/FilesystemTest.php +1750 -0
  774. data/helpers/vendor/symfony/filesystem/Tests/FilesystemTestCase.php +166 -0
  775. data/helpers/vendor/symfony/filesystem/Tests/Fixtures/MockStream/MockStream.php +46 -0
  776. data/helpers/vendor/symfony/filesystem/composer.json +34 -0
  777. data/helpers/vendor/symfony/filesystem/phpunit.xml.dist +30 -0
  778. data/helpers/vendor/symfony/finder/.gitignore +3 -0
  779. data/helpers/vendor/symfony/finder/CHANGELOG.md +74 -0
  780. data/helpers/vendor/symfony/finder/Comparator/Comparator.php +98 -0
  781. data/helpers/vendor/symfony/finder/Comparator/DateComparator.php +51 -0
  782. data/helpers/vendor/symfony/finder/Comparator/NumberComparator.php +79 -0
  783. data/helpers/vendor/symfony/finder/Exception/AccessDeniedException.php +19 -0
  784. data/helpers/vendor/symfony/finder/Exception/DirectoryNotFoundException.php +19 -0
  785. data/helpers/vendor/symfony/finder/Finder.php +811 -0
  786. data/helpers/vendor/symfony/finder/Gitignore.php +107 -0
  787. data/helpers/vendor/symfony/finder/Glob.php +116 -0
  788. data/helpers/vendor/symfony/finder/Iterator/CustomFilterIterator.php +61 -0
  789. data/helpers/vendor/symfony/finder/Iterator/DateRangeFilterIterator.php +58 -0
  790. data/helpers/vendor/symfony/finder/Iterator/DepthRangeFilterIterator.php +45 -0
  791. data/helpers/vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php +84 -0
  792. data/helpers/vendor/symfony/finder/Iterator/FileTypeFilterIterator.php +53 -0
  793. data/helpers/vendor/symfony/finder/Iterator/FilecontentFilterIterator.php +58 -0
  794. data/helpers/vendor/symfony/finder/Iterator/FilenameFilterIterator.php +47 -0
  795. data/helpers/vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.php +112 -0
  796. data/helpers/vendor/symfony/finder/Iterator/PathFilterIterator.php +56 -0
  797. data/helpers/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php +140 -0
  798. data/helpers/vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php +57 -0
  799. data/helpers/vendor/symfony/finder/Iterator/SortableIterator.php +99 -0
  800. data/helpers/vendor/symfony/finder/LICENSE +19 -0
  801. data/helpers/vendor/symfony/finder/README.md +14 -0
  802. data/helpers/vendor/symfony/finder/SplFileInfo.php +85 -0
  803. data/helpers/vendor/symfony/finder/Tests/Comparator/ComparatorTest.php +65 -0
  804. data/helpers/vendor/symfony/finder/Tests/Comparator/DateComparatorTest.php +64 -0
  805. data/helpers/vendor/symfony/finder/Tests/Comparator/NumberComparatorTest.php +108 -0
  806. data/helpers/vendor/symfony/finder/Tests/FinderTest.php +1459 -0
  807. data/helpers/vendor/symfony/finder/Tests/Fixtures/.dot/a +0 -0
  808. data/helpers/vendor/symfony/finder/Tests/Fixtures/.dot/b/c.neon +0 -0
  809. data/helpers/vendor/symfony/finder/Tests/Fixtures/.dot/b/d.neon +0 -0
  810. data/helpers/vendor/symfony/finder/Tests/Fixtures/A/B/C/abc.dat +0 -0
  811. data/helpers/vendor/symfony/finder/Tests/Fixtures/A/B/ab.dat +0 -0
  812. data/helpers/vendor/symfony/finder/Tests/Fixtures/A/a.dat +0 -0
  813. data/helpers/vendor/symfony/finder/Tests/Fixtures/copy/A/B/C/abc.dat.copy +0 -0
  814. data/helpers/vendor/symfony/finder/Tests/Fixtures/copy/A/B/ab.dat.copy +0 -0
  815. data/helpers/vendor/symfony/finder/Tests/Fixtures/copy/A/a.dat.copy +0 -0
  816. data/helpers/vendor/symfony/finder/Tests/Fixtures/dolor.txt +2 -0
  817. data/helpers/vendor/symfony/finder/Tests/Fixtures/ipsum.txt +2 -0
  818. data/helpers/vendor/symfony/finder/Tests/Fixtures/lorem.txt +2 -0
  819. data/helpers/vendor/symfony/finder/Tests/Fixtures/one/.dot +1 -0
  820. data/helpers/vendor/symfony/finder/Tests/Fixtures/one/a +0 -0
  821. data/helpers/vendor/symfony/finder/Tests/Fixtures/one/b/c.neon +0 -0
  822. data/helpers/vendor/symfony/finder/Tests/Fixtures/one/b/d.neon +0 -0
  823. data/helpers/vendor/symfony/finder/Tests/Fixtures/r+e.gex[c]a(r)s/dir/bar.dat +0 -0
  824. data/helpers/vendor/symfony/finder/Tests/Fixtures/with space/foo.txt b/data/helpers/vendor/symfony/finder/Tests/Fixtures/with → space/foo.txt +0 -0
  825. data/helpers/vendor/symfony/finder/Tests/GitignoreTest.php +118 -0
  826. data/helpers/vendor/symfony/finder/Tests/GlobTest.php +95 -0
  827. data/helpers/vendor/symfony/finder/Tests/Iterator/CustomFilterIteratorTest.php +46 -0
  828. data/helpers/vendor/symfony/finder/Tests/Iterator/DateRangeFilterIteratorTest.php +92 -0
  829. data/helpers/vendor/symfony/finder/Tests/Iterator/DepthRangeFilterIteratorTest.php +105 -0
  830. data/helpers/vendor/symfony/finder/Tests/Iterator/ExcludeDirectoryFilterIteratorTest.php +110 -0
  831. data/helpers/vendor/symfony/finder/Tests/Iterator/FileTypeFilterIteratorTest.php +82 -0
  832. data/helpers/vendor/symfony/finder/Tests/Iterator/FilecontentFilterIteratorTest.php +86 -0
  833. data/helpers/vendor/symfony/finder/Tests/Iterator/FilenameFilterIteratorTest.php +54 -0
  834. data/helpers/vendor/symfony/finder/Tests/Iterator/Iterator.php +55 -0
  835. data/helpers/vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php +100 -0
  836. data/helpers/vendor/symfony/finder/Tests/Iterator/MockFileListIterator.php +21 -0
  837. data/helpers/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php +132 -0
  838. data/helpers/vendor/symfony/finder/Tests/Iterator/MultiplePcreFilterIteratorTest.php +71 -0
  839. data/helpers/vendor/symfony/finder/Tests/Iterator/PathFilterIteratorTest.php +82 -0
  840. data/helpers/vendor/symfony/finder/Tests/Iterator/RealIteratorTestCase.php +130 -0
  841. data/helpers/vendor/symfony/finder/Tests/Iterator/RecursiveDirectoryIteratorTest.php +59 -0
  842. data/helpers/vendor/symfony/finder/Tests/Iterator/SizeRangeFilterIteratorTest.php +70 -0
  843. data/helpers/vendor/symfony/finder/Tests/Iterator/SortableIteratorTest.php +262 -0
  844. data/helpers/vendor/symfony/finder/composer.json +33 -0
  845. data/helpers/vendor/symfony/finder/phpunit.xml.dist +30 -0
  846. data/helpers/vendor/symfony/polyfill-ctype/Ctype.php +227 -0
  847. data/helpers/vendor/symfony/polyfill-ctype/LICENSE +19 -0
  848. data/helpers/vendor/symfony/polyfill-ctype/README.md +12 -0
  849. data/helpers/vendor/symfony/polyfill-ctype/bootstrap.php +26 -0
  850. data/helpers/vendor/symfony/polyfill-ctype/composer.json +34 -0
  851. data/helpers/vendor/symfony/polyfill-mbstring/LICENSE +19 -0
  852. data/helpers/vendor/symfony/polyfill-mbstring/Mbstring.php +800 -0
  853. data/helpers/vendor/symfony/polyfill-mbstring/README.md +13 -0
  854. data/helpers/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1096 -0
  855. data/helpers/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -0
  856. data/helpers/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1104 -0
  857. data/helpers/vendor/symfony/polyfill-mbstring/bootstrap.php +58 -0
  858. data/helpers/vendor/symfony/polyfill-mbstring/composer.json +34 -0
  859. data/helpers/vendor/symfony/polyfill-php73/LICENSE +19 -0
  860. data/helpers/vendor/symfony/polyfill-php73/Php73.php +34 -0
  861. data/helpers/vendor/symfony/polyfill-php73/README.md +18 -0
  862. data/helpers/vendor/symfony/polyfill-php73/Resources/stubs/JsonException.php +14 -0
  863. data/helpers/vendor/symfony/polyfill-php73/bootstrap.php +31 -0
  864. data/helpers/vendor/symfony/polyfill-php73/composer.json +32 -0
  865. data/helpers/vendor/symfony/process/.gitignore +3 -0
  866. data/helpers/vendor/symfony/process/CHANGELOG.md +90 -0
  867. data/helpers/vendor/symfony/process/Exception/ExceptionInterface.php +21 -0
  868. data/helpers/vendor/symfony/process/Exception/InvalidArgumentException.php +21 -0
  869. data/helpers/vendor/symfony/process/Exception/LogicException.php +21 -0
  870. data/helpers/vendor/symfony/process/Exception/ProcessFailedException.php +54 -0
  871. data/helpers/vendor/symfony/process/Exception/ProcessSignaledException.php +41 -0
  872. data/helpers/vendor/symfony/process/Exception/ProcessTimedOutException.php +69 -0
  873. data/helpers/vendor/symfony/process/Exception/RuntimeException.php +21 -0
  874. data/helpers/vendor/symfony/process/ExecutableFinder.php +88 -0
  875. data/helpers/vendor/symfony/process/InputStream.php +90 -0
  876. data/helpers/vendor/symfony/process/LICENSE +19 -0
  877. data/helpers/vendor/symfony/process/PhpExecutableFinder.php +101 -0
  878. data/helpers/vendor/symfony/process/PhpProcess.php +75 -0
  879. data/helpers/vendor/symfony/process/Pipes/AbstractPipes.php +178 -0
  880. data/helpers/vendor/symfony/process/Pipes/PipesInterface.php +67 -0
  881. data/helpers/vendor/symfony/process/Pipes/UnixPipes.php +153 -0
  882. data/helpers/vendor/symfony/process/Pipes/WindowsPipes.php +191 -0
  883. data/helpers/vendor/symfony/process/Process.php +1653 -0
  884. data/helpers/vendor/symfony/process/ProcessUtils.php +69 -0
  885. data/helpers/vendor/symfony/process/README.md +13 -0
  886. data/helpers/vendor/symfony/process/Tests/ErrorProcessInitiator.php +36 -0
  887. data/helpers/vendor/symfony/process/Tests/ExecutableFinderTest.php +178 -0
  888. data/helpers/vendor/symfony/process/Tests/KillableProcessWithOutput.php +25 -0
  889. data/helpers/vendor/symfony/process/Tests/NonStopableProcess.php +47 -0
  890. data/helpers/vendor/symfony/process/Tests/PhpExecutableFinderTest.php +49 -0
  891. data/helpers/vendor/symfony/process/Tests/PhpProcessTest.php +63 -0
  892. data/helpers/vendor/symfony/process/Tests/PipeStdinInStdoutStdErrStreamSelect.php +72 -0
  893. data/helpers/vendor/symfony/process/Tests/ProcessFailedExceptionTest.php +137 -0
  894. data/helpers/vendor/symfony/process/Tests/ProcessTest.php +1557 -0
  895. data/helpers/vendor/symfony/process/Tests/SignalListener.php +21 -0
  896. data/helpers/vendor/symfony/process/composer.json +33 -0
  897. data/helpers/vendor/symfony/process/phpunit.xml.dist +30 -0
  898. data/helpers/vendor/symfony/service-contracts/LICENSE +19 -0
  899. data/helpers/vendor/symfony/service-contracts/README.md +9 -0
  900. data/helpers/vendor/symfony/service-contracts/ResetInterface.php +30 -0
  901. data/helpers/vendor/symfony/service-contracts/ServiceLocatorTrait.php +120 -0
  902. data/helpers/vendor/symfony/service-contracts/ServiceProviderInterface.php +36 -0
  903. data/helpers/vendor/symfony/service-contracts/ServiceSubscriberInterface.php +53 -0
  904. data/helpers/vendor/symfony/service-contracts/ServiceSubscriberTrait.php +61 -0
  905. data/helpers/vendor/symfony/service-contracts/Test/ServiceLocatorTest.php +94 -0
  906. data/helpers/vendor/symfony/service-contracts/composer.json +34 -0
  907. metadata +908 -3
@@ -0,0 +1,1653 @@
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Symfony package.
5
+ *
6
+ * (c) Fabien Potencier <fabien@symfony.com>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Symfony\Component\Process;
13
+
14
+ use Symfony\Component\Process\Exception\InvalidArgumentException;
15
+ use Symfony\Component\Process\Exception\LogicException;
16
+ use Symfony\Component\Process\Exception\ProcessFailedException;
17
+ use Symfony\Component\Process\Exception\ProcessSignaledException;
18
+ use Symfony\Component\Process\Exception\ProcessTimedOutException;
19
+ use Symfony\Component\Process\Exception\RuntimeException;
20
+ use Symfony\Component\Process\Pipes\PipesInterface;
21
+ use Symfony\Component\Process\Pipes\UnixPipes;
22
+ use Symfony\Component\Process\Pipes\WindowsPipes;
23
+
24
+ /**
25
+ * Process is a thin wrapper around proc_* functions to easily
26
+ * start independent PHP processes.
27
+ *
28
+ * @author Fabien Potencier <fabien@symfony.com>
29
+ * @author Romain Neutron <imprec@gmail.com>
30
+ */
31
+ class Process implements \IteratorAggregate
32
+ {
33
+ const ERR = 'err';
34
+ const OUT = 'out';
35
+
36
+ const STATUS_READY = 'ready';
37
+ const STATUS_STARTED = 'started';
38
+ const STATUS_TERMINATED = 'terminated';
39
+
40
+ const STDIN = 0;
41
+ const STDOUT = 1;
42
+ const STDERR = 2;
43
+
44
+ // Timeout Precision in seconds.
45
+ const TIMEOUT_PRECISION = 0.2;
46
+
47
+ const ITER_NON_BLOCKING = 1; // By default, iterating over outputs is a blocking call, use this flag to make it non-blocking
48
+ const ITER_KEEP_OUTPUT = 2; // By default, outputs are cleared while iterating, use this flag to keep them in memory
49
+ const ITER_SKIP_OUT = 4; // Use this flag to skip STDOUT while iterating
50
+ const ITER_SKIP_ERR = 8; // Use this flag to skip STDERR while iterating
51
+
52
+ private $callback;
53
+ private $hasCallback = false;
54
+ private $commandline;
55
+ private $cwd;
56
+ private $env;
57
+ private $input;
58
+ private $starttime;
59
+ private $lastOutputTime;
60
+ private $timeout;
61
+ private $idleTimeout;
62
+ private $exitcode;
63
+ private $fallbackStatus = [];
64
+ private $processInformation;
65
+ private $outputDisabled = false;
66
+ private $stdout;
67
+ private $stderr;
68
+ private $process;
69
+ private $status = self::STATUS_READY;
70
+ private $incrementalOutputOffset = 0;
71
+ private $incrementalErrorOutputOffset = 0;
72
+ private $tty;
73
+ private $pty;
74
+
75
+ private $useFileHandles = false;
76
+ /** @var PipesInterface */
77
+ private $processPipes;
78
+
79
+ private $latestSignal;
80
+
81
+ private static $sigchild;
82
+
83
+ /**
84
+ * Exit codes translation table.
85
+ *
86
+ * User-defined errors must use exit codes in the 64-113 range.
87
+ */
88
+ public static $exitCodes = [
89
+ 0 => 'OK',
90
+ 1 => 'General error',
91
+ 2 => 'Misuse of shell builtins',
92
+
93
+ 126 => 'Invoked command cannot execute',
94
+ 127 => 'Command not found',
95
+ 128 => 'Invalid exit argument',
96
+
97
+ // signals
98
+ 129 => 'Hangup',
99
+ 130 => 'Interrupt',
100
+ 131 => 'Quit and dump core',
101
+ 132 => 'Illegal instruction',
102
+ 133 => 'Trace/breakpoint trap',
103
+ 134 => 'Process aborted',
104
+ 135 => 'Bus error: "access to undefined portion of memory object"',
105
+ 136 => 'Floating point exception: "erroneous arithmetic operation"',
106
+ 137 => 'Kill (terminate immediately)',
107
+ 138 => 'User-defined 1',
108
+ 139 => 'Segmentation violation',
109
+ 140 => 'User-defined 2',
110
+ 141 => 'Write to pipe with no one reading',
111
+ 142 => 'Signal raised by alarm',
112
+ 143 => 'Termination (request to terminate)',
113
+ // 144 - not defined
114
+ 145 => 'Child process terminated, stopped (or continued*)',
115
+ 146 => 'Continue if stopped',
116
+ 147 => 'Stop executing temporarily',
117
+ 148 => 'Terminal stop signal',
118
+ 149 => 'Background process attempting to read from tty ("in")',
119
+ 150 => 'Background process attempting to write to tty ("out")',
120
+ 151 => 'Urgent data available on socket',
121
+ 152 => 'CPU time limit exceeded',
122
+ 153 => 'File size limit exceeded',
123
+ 154 => 'Signal raised by timer counting virtual time: "virtual timer expired"',
124
+ 155 => 'Profiling timer expired',
125
+ // 156 - not defined
126
+ 157 => 'Pollable event',
127
+ // 158 - not defined
128
+ 159 => 'Bad syscall',
129
+ ];
130
+
131
+ /**
132
+ * @param array $command The command to run and its arguments listed as separate entries
133
+ * @param string|null $cwd The working directory or null to use the working dir of the current PHP process
134
+ * @param array|null $env The environment variables or null to use the same environment as the current PHP process
135
+ * @param mixed|null $input The input as stream resource, scalar or \Traversable, or null for no input
136
+ * @param int|float|null $timeout The timeout in seconds or null to disable
137
+ *
138
+ * @throws RuntimeException When proc_open is not installed
139
+ */
140
+ public function __construct($command, string $cwd = null, array $env = null, $input = null, ?float $timeout = 60)
141
+ {
142
+ if (!\function_exists('proc_open')) {
143
+ throw new LogicException('The Process class relies on proc_open, which is not available on your PHP installation.');
144
+ }
145
+
146
+ if (!\is_array($command)) {
147
+ @trigger_error(sprintf('Passing a command as string when creating a "%s" instance is deprecated since Symfony 4.2, pass it as an array of its arguments instead, or use the "Process::fromShellCommandline()" constructor if you need features provided by the shell.', __CLASS__), E_USER_DEPRECATED);
148
+ }
149
+
150
+ $this->commandline = $command;
151
+ $this->cwd = $cwd;
152
+
153
+ // on Windows, if the cwd changed via chdir(), proc_open defaults to the dir where PHP was started
154
+ // on Gnu/Linux, PHP builds with --enable-maintainer-zts are also affected
155
+ // @see : https://bugs.php.net/bug.php?id=51800
156
+ // @see : https://bugs.php.net/bug.php?id=50524
157
+ if (null === $this->cwd && (\defined('ZEND_THREAD_SAFE') || '\\' === \DIRECTORY_SEPARATOR)) {
158
+ $this->cwd = getcwd();
159
+ }
160
+ if (null !== $env) {
161
+ $this->setEnv($env);
162
+ }
163
+
164
+ $this->setInput($input);
165
+ $this->setTimeout($timeout);
166
+ $this->useFileHandles = '\\' === \DIRECTORY_SEPARATOR;
167
+ $this->pty = false;
168
+ }
169
+
170
+ /**
171
+ * Creates a Process instance as a command-line to be run in a shell wrapper.
172
+ *
173
+ * Command-lines are parsed by the shell of your OS (/bin/sh on Unix-like, cmd.exe on Windows.)
174
+ * This allows using e.g. pipes or conditional execution. In this mode, signals are sent to the
175
+ * shell wrapper and not to your commands.
176
+ *
177
+ * In order to inject dynamic values into command-lines, we strongly recommend using placeholders.
178
+ * This will save escaping values, which is not portable nor secure anyway:
179
+ *
180
+ * $process = Process::fromShellCommandline('my_command "$MY_VAR"');
181
+ * $process->run(null, ['MY_VAR' => $theValue]);
182
+ *
183
+ * @param string $command The command line to pass to the shell of the OS
184
+ * @param string|null $cwd The working directory or null to use the working dir of the current PHP process
185
+ * @param array|null $env The environment variables or null to use the same environment as the current PHP process
186
+ * @param mixed|null $input The input as stream resource, scalar or \Traversable, or null for no input
187
+ * @param int|float|null $timeout The timeout in seconds or null to disable
188
+ *
189
+ * @throws RuntimeException When proc_open is not installed
190
+ */
191
+ public static function fromShellCommandline(string $command, string $cwd = null, array $env = null, $input = null, ?float $timeout = 60)
192
+ {
193
+ $process = new static([], $cwd, $env, $input, $timeout);
194
+ $process->commandline = $command;
195
+
196
+ return $process;
197
+ }
198
+
199
+ public function __destruct()
200
+ {
201
+ $this->stop(0);
202
+ }
203
+
204
+ public function __clone()
205
+ {
206
+ $this->resetProcessData();
207
+ }
208
+
209
+ /**
210
+ * Runs the process.
211
+ *
212
+ * The callback receives the type of output (out or err) and
213
+ * some bytes from the output in real-time. It allows to have feedback
214
+ * from the independent process during execution.
215
+ *
216
+ * The STDOUT and STDERR are also available after the process is finished
217
+ * via the getOutput() and getErrorOutput() methods.
218
+ *
219
+ * @param callable|null $callback A PHP callback to run whenever there is some
220
+ * output available on STDOUT or STDERR
221
+ * @param array $env An array of additional env vars to set when running the process
222
+ *
223
+ * @return int The exit status code
224
+ *
225
+ * @throws RuntimeException When process can't be launched
226
+ * @throws RuntimeException When process stopped after receiving signal
227
+ * @throws LogicException In case a callback is provided and output has been disabled
228
+ *
229
+ * @final
230
+ */
231
+ public function run(callable $callback = null, array $env = []): int
232
+ {
233
+ $this->start($callback, $env);
234
+
235
+ return $this->wait();
236
+ }
237
+
238
+ /**
239
+ * Runs the process.
240
+ *
241
+ * This is identical to run() except that an exception is thrown if the process
242
+ * exits with a non-zero exit code.
243
+ *
244
+ * @param callable|null $callback
245
+ * @param array $env An array of additional env vars to set when running the process
246
+ *
247
+ * @return self
248
+ *
249
+ * @throws ProcessFailedException if the process didn't terminate successfully
250
+ *
251
+ * @final
252
+ */
253
+ public function mustRun(callable $callback = null, array $env = [])
254
+ {
255
+ if (0 !== $this->run($callback, $env)) {
256
+ throw new ProcessFailedException($this);
257
+ }
258
+
259
+ return $this;
260
+ }
261
+
262
+ /**
263
+ * Starts the process and returns after writing the input to STDIN.
264
+ *
265
+ * This method blocks until all STDIN data is sent to the process then it
266
+ * returns while the process runs in the background.
267
+ *
268
+ * The termination of the process can be awaited with wait().
269
+ *
270
+ * The callback receives the type of output (out or err) and some bytes from
271
+ * the output in real-time while writing the standard input to the process.
272
+ * It allows to have feedback from the independent process during execution.
273
+ *
274
+ * @param callable|null $callback A PHP callback to run whenever there is some
275
+ * output available on STDOUT or STDERR
276
+ * @param array $env An array of additional env vars to set when running the process
277
+ *
278
+ * @throws RuntimeException When process can't be launched
279
+ * @throws RuntimeException When process is already running
280
+ * @throws LogicException In case a callback is provided and output has been disabled
281
+ */
282
+ public function start(callable $callback = null, array $env = [])
283
+ {
284
+ if ($this->isRunning()) {
285
+ throw new RuntimeException('Process is already running');
286
+ }
287
+
288
+ $this->resetProcessData();
289
+ $this->starttime = $this->lastOutputTime = microtime(true);
290
+ $this->callback = $this->buildCallback($callback);
291
+ $this->hasCallback = null !== $callback;
292
+ $descriptors = $this->getDescriptors();
293
+
294
+ if (\is_array($commandline = $this->commandline)) {
295
+ $commandline = implode(' ', array_map([$this, 'escapeArgument'], $commandline));
296
+
297
+ if ('\\' !== \DIRECTORY_SEPARATOR) {
298
+ // exec is mandatory to deal with sending a signal to the process
299
+ $commandline = 'exec '.$commandline;
300
+ }
301
+ }
302
+
303
+ if ($this->env) {
304
+ $env += $this->env;
305
+ }
306
+ $env += $this->getDefaultEnv();
307
+
308
+ $options = ['suppress_errors' => true];
309
+
310
+ if ('\\' === \DIRECTORY_SEPARATOR) {
311
+ $options['bypass_shell'] = true;
312
+ $commandline = $this->prepareWindowsCommandLine($commandline, $env);
313
+ } elseif (!$this->useFileHandles && $this->isSigchildEnabled()) {
314
+ // last exit code is output on the fourth pipe and caught to work around --enable-sigchild
315
+ $descriptors[3] = ['pipe', 'w'];
316
+
317
+ // See https://unix.stackexchange.com/questions/71205/background-process-pipe-input
318
+ $commandline = '{ ('.$commandline.') <&3 3<&- 3>/dev/null & } 3<&0;';
319
+ $commandline .= 'pid=$!; echo $pid >&3; wait $pid; code=$?; echo $code >&3; exit $code';
320
+
321
+ // Workaround for the bug, when PTS functionality is enabled.
322
+ // @see : https://bugs.php.net/69442
323
+ $ptsWorkaround = fopen(__FILE__, 'r');
324
+ }
325
+
326
+ $envPairs = [];
327
+ foreach ($env as $k => $v) {
328
+ if (false !== $v) {
329
+ $envPairs[] = $k.'='.$v;
330
+ }
331
+ }
332
+
333
+ if (!is_dir($this->cwd)) {
334
+ throw new RuntimeException(sprintf('The provided cwd "%s" does not exist.', $this->cwd));
335
+ }
336
+
337
+ $this->process = proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $envPairs, $options);
338
+
339
+ if (!\is_resource($this->process)) {
340
+ throw new RuntimeException('Unable to launch a new process.');
341
+ }
342
+ $this->status = self::STATUS_STARTED;
343
+
344
+ if (isset($descriptors[3])) {
345
+ $this->fallbackStatus['pid'] = (int) fgets($this->processPipes->pipes[3]);
346
+ }
347
+
348
+ if ($this->tty) {
349
+ return;
350
+ }
351
+
352
+ $this->updateStatus(false);
353
+ $this->checkTimeout();
354
+ }
355
+
356
+ /**
357
+ * Restarts the process.
358
+ *
359
+ * Be warned that the process is cloned before being started.
360
+ *
361
+ * @param callable|null $callback A PHP callback to run whenever there is some
362
+ * output available on STDOUT or STDERR
363
+ * @param array $env An array of additional env vars to set when running the process
364
+ *
365
+ * @return $this
366
+ *
367
+ * @throws RuntimeException When process can't be launched
368
+ * @throws RuntimeException When process is already running
369
+ *
370
+ * @see start()
371
+ *
372
+ * @final
373
+ */
374
+ public function restart(callable $callback = null, array $env = [])
375
+ {
376
+ if ($this->isRunning()) {
377
+ throw new RuntimeException('Process is already running');
378
+ }
379
+
380
+ $process = clone $this;
381
+ $process->start($callback, $env);
382
+
383
+ return $process;
384
+ }
385
+
386
+ /**
387
+ * Waits for the process to terminate.
388
+ *
389
+ * The callback receives the type of output (out or err) and some bytes
390
+ * from the output in real-time while writing the standard input to the process.
391
+ * It allows to have feedback from the independent process during execution.
392
+ *
393
+ * @param callable|null $callback A valid PHP callback
394
+ *
395
+ * @return int The exitcode of the process
396
+ *
397
+ * @throws RuntimeException When process timed out
398
+ * @throws RuntimeException When process stopped after receiving signal
399
+ * @throws LogicException When process is not yet started
400
+ */
401
+ public function wait(callable $callback = null)
402
+ {
403
+ $this->requireProcessIsStarted(__FUNCTION__);
404
+
405
+ $this->updateStatus(false);
406
+
407
+ if (null !== $callback) {
408
+ if (!$this->processPipes->haveReadSupport()) {
409
+ $this->stop(0);
410
+ throw new \LogicException('Pass the callback to the "Process::start" method or call enableOutput to use a callback with "Process::wait"');
411
+ }
412
+ $this->callback = $this->buildCallback($callback);
413
+ }
414
+
415
+ do {
416
+ $this->checkTimeout();
417
+ $running = '\\' === \DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen();
418
+ $this->readPipes($running, '\\' !== \DIRECTORY_SEPARATOR || !$running);
419
+ } while ($running);
420
+
421
+ while ($this->isRunning()) {
422
+ $this->checkTimeout();
423
+ usleep(1000);
424
+ }
425
+
426
+ if ($this->processInformation['signaled'] && $this->processInformation['termsig'] !== $this->latestSignal) {
427
+ throw new ProcessSignaledException($this);
428
+ }
429
+
430
+ return $this->exitcode;
431
+ }
432
+
433
+ /**
434
+ * Waits until the callback returns true.
435
+ *
436
+ * The callback receives the type of output (out or err) and some bytes
437
+ * from the output in real-time while writing the standard input to the process.
438
+ * It allows to have feedback from the independent process during execution.
439
+ *
440
+ * @throws RuntimeException When process timed out
441
+ * @throws LogicException When process is not yet started
442
+ */
443
+ public function waitUntil(callable $callback): bool
444
+ {
445
+ $this->requireProcessIsStarted(__FUNCTION__);
446
+ $this->updateStatus(false);
447
+
448
+ if (!$this->processPipes->haveReadSupport()) {
449
+ $this->stop(0);
450
+ throw new \LogicException('Pass the callback to the "Process::start" method or call enableOutput to use a callback with "Process::waitUntil".');
451
+ }
452
+ $callback = $this->buildCallback($callback);
453
+
454
+ $ready = false;
455
+ while (true) {
456
+ $this->checkTimeout();
457
+ $running = '\\' === \DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen();
458
+ $output = $this->processPipes->readAndWrite($running, '\\' !== \DIRECTORY_SEPARATOR || !$running);
459
+
460
+ foreach ($output as $type => $data) {
461
+ if (3 !== $type) {
462
+ $ready = $callback(self::STDOUT === $type ? self::OUT : self::ERR, $data) || $ready;
463
+ } elseif (!isset($this->fallbackStatus['signaled'])) {
464
+ $this->fallbackStatus['exitcode'] = (int) $data;
465
+ }
466
+ }
467
+ if ($ready) {
468
+ return true;
469
+ }
470
+ if (!$running) {
471
+ return false;
472
+ }
473
+
474
+ usleep(1000);
475
+ }
476
+ }
477
+
478
+ /**
479
+ * Returns the Pid (process identifier), if applicable.
480
+ *
481
+ * @return int|null The process id if running, null otherwise
482
+ */
483
+ public function getPid()
484
+ {
485
+ return $this->isRunning() ? $this->processInformation['pid'] : null;
486
+ }
487
+
488
+ /**
489
+ * Sends a POSIX signal to the process.
490
+ *
491
+ * @param int $signal A valid POSIX signal (see http://www.php.net/manual/en/pcntl.constants.php)
492
+ *
493
+ * @return $this
494
+ *
495
+ * @throws LogicException In case the process is not running
496
+ * @throws RuntimeException In case --enable-sigchild is activated and the process can't be killed
497
+ * @throws RuntimeException In case of failure
498
+ */
499
+ public function signal($signal)
500
+ {
501
+ $this->doSignal($signal, true);
502
+
503
+ return $this;
504
+ }
505
+
506
+ /**
507
+ * Disables fetching output and error output from the underlying process.
508
+ *
509
+ * @return $this
510
+ *
511
+ * @throws RuntimeException In case the process is already running
512
+ * @throws LogicException if an idle timeout is set
513
+ */
514
+ public function disableOutput()
515
+ {
516
+ if ($this->isRunning()) {
517
+ throw new RuntimeException('Disabling output while the process is running is not possible.');
518
+ }
519
+ if (null !== $this->idleTimeout) {
520
+ throw new LogicException('Output can not be disabled while an idle timeout is set.');
521
+ }
522
+
523
+ $this->outputDisabled = true;
524
+
525
+ return $this;
526
+ }
527
+
528
+ /**
529
+ * Enables fetching output and error output from the underlying process.
530
+ *
531
+ * @return $this
532
+ *
533
+ * @throws RuntimeException In case the process is already running
534
+ */
535
+ public function enableOutput()
536
+ {
537
+ if ($this->isRunning()) {
538
+ throw new RuntimeException('Enabling output while the process is running is not possible.');
539
+ }
540
+
541
+ $this->outputDisabled = false;
542
+
543
+ return $this;
544
+ }
545
+
546
+ /**
547
+ * Returns true in case the output is disabled, false otherwise.
548
+ *
549
+ * @return bool
550
+ */
551
+ public function isOutputDisabled()
552
+ {
553
+ return $this->outputDisabled;
554
+ }
555
+
556
+ /**
557
+ * Returns the current output of the process (STDOUT).
558
+ *
559
+ * @return string The process output
560
+ *
561
+ * @throws LogicException in case the output has been disabled
562
+ * @throws LogicException In case the process is not started
563
+ */
564
+ public function getOutput()
565
+ {
566
+ $this->readPipesForOutput(__FUNCTION__);
567
+
568
+ if (false === $ret = stream_get_contents($this->stdout, -1, 0)) {
569
+ return '';
570
+ }
571
+
572
+ return $ret;
573
+ }
574
+
575
+ /**
576
+ * Returns the output incrementally.
577
+ *
578
+ * In comparison with the getOutput method which always return the whole
579
+ * output, this one returns the new output since the last call.
580
+ *
581
+ * @return string The process output since the last call
582
+ *
583
+ * @throws LogicException in case the output has been disabled
584
+ * @throws LogicException In case the process is not started
585
+ */
586
+ public function getIncrementalOutput()
587
+ {
588
+ $this->readPipesForOutput(__FUNCTION__);
589
+
590
+ $latest = stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset);
591
+ $this->incrementalOutputOffset = ftell($this->stdout);
592
+
593
+ if (false === $latest) {
594
+ return '';
595
+ }
596
+
597
+ return $latest;
598
+ }
599
+
600
+ /**
601
+ * Returns an iterator to the output of the process, with the output type as keys (Process::OUT/ERR).
602
+ *
603
+ * @param int $flags A bit field of Process::ITER_* flags
604
+ *
605
+ * @throws LogicException in case the output has been disabled
606
+ * @throws LogicException In case the process is not started
607
+ *
608
+ * @return \Generator
609
+ */
610
+ public function getIterator($flags = 0)
611
+ {
612
+ $this->readPipesForOutput(__FUNCTION__, false);
613
+
614
+ $clearOutput = !(self::ITER_KEEP_OUTPUT & $flags);
615
+ $blocking = !(self::ITER_NON_BLOCKING & $flags);
616
+ $yieldOut = !(self::ITER_SKIP_OUT & $flags);
617
+ $yieldErr = !(self::ITER_SKIP_ERR & $flags);
618
+
619
+ while (null !== $this->callback || ($yieldOut && !feof($this->stdout)) || ($yieldErr && !feof($this->stderr))) {
620
+ if ($yieldOut) {
621
+ $out = stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset);
622
+
623
+ if (isset($out[0])) {
624
+ if ($clearOutput) {
625
+ $this->clearOutput();
626
+ } else {
627
+ $this->incrementalOutputOffset = ftell($this->stdout);
628
+ }
629
+
630
+ yield self::OUT => $out;
631
+ }
632
+ }
633
+
634
+ if ($yieldErr) {
635
+ $err = stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset);
636
+
637
+ if (isset($err[0])) {
638
+ if ($clearOutput) {
639
+ $this->clearErrorOutput();
640
+ } else {
641
+ $this->incrementalErrorOutputOffset = ftell($this->stderr);
642
+ }
643
+
644
+ yield self::ERR => $err;
645
+ }
646
+ }
647
+
648
+ if (!$blocking && !isset($out[0]) && !isset($err[0])) {
649
+ yield self::OUT => '';
650
+ }
651
+
652
+ $this->checkTimeout();
653
+ $this->readPipesForOutput(__FUNCTION__, $blocking);
654
+ }
655
+ }
656
+
657
+ /**
658
+ * Clears the process output.
659
+ *
660
+ * @return $this
661
+ */
662
+ public function clearOutput()
663
+ {
664
+ ftruncate($this->stdout, 0);
665
+ fseek($this->stdout, 0);
666
+ $this->incrementalOutputOffset = 0;
667
+
668
+ return $this;
669
+ }
670
+
671
+ /**
672
+ * Returns the current error output of the process (STDERR).
673
+ *
674
+ * @return string The process error output
675
+ *
676
+ * @throws LogicException in case the output has been disabled
677
+ * @throws LogicException In case the process is not started
678
+ */
679
+ public function getErrorOutput()
680
+ {
681
+ $this->readPipesForOutput(__FUNCTION__);
682
+
683
+ if (false === $ret = stream_get_contents($this->stderr, -1, 0)) {
684
+ return '';
685
+ }
686
+
687
+ return $ret;
688
+ }
689
+
690
+ /**
691
+ * Returns the errorOutput incrementally.
692
+ *
693
+ * In comparison with the getErrorOutput method which always return the
694
+ * whole error output, this one returns the new error output since the last
695
+ * call.
696
+ *
697
+ * @return string The process error output since the last call
698
+ *
699
+ * @throws LogicException in case the output has been disabled
700
+ * @throws LogicException In case the process is not started
701
+ */
702
+ public function getIncrementalErrorOutput()
703
+ {
704
+ $this->readPipesForOutput(__FUNCTION__);
705
+
706
+ $latest = stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset);
707
+ $this->incrementalErrorOutputOffset = ftell($this->stderr);
708
+
709
+ if (false === $latest) {
710
+ return '';
711
+ }
712
+
713
+ return $latest;
714
+ }
715
+
716
+ /**
717
+ * Clears the process output.
718
+ *
719
+ * @return $this
720
+ */
721
+ public function clearErrorOutput()
722
+ {
723
+ ftruncate($this->stderr, 0);
724
+ fseek($this->stderr, 0);
725
+ $this->incrementalErrorOutputOffset = 0;
726
+
727
+ return $this;
728
+ }
729
+
730
+ /**
731
+ * Returns the exit code returned by the process.
732
+ *
733
+ * @return int|null The exit status code, null if the Process is not terminated
734
+ */
735
+ public function getExitCode()
736
+ {
737
+ $this->updateStatus(false);
738
+
739
+ return $this->exitcode;
740
+ }
741
+
742
+ /**
743
+ * Returns a string representation for the exit code returned by the process.
744
+ *
745
+ * This method relies on the Unix exit code status standardization
746
+ * and might not be relevant for other operating systems.
747
+ *
748
+ * @return string|null A string representation for the exit status code, null if the Process is not terminated
749
+ *
750
+ * @see http://tldp.org/LDP/abs/html/exitcodes.html
751
+ * @see http://en.wikipedia.org/wiki/Unix_signal
752
+ */
753
+ public function getExitCodeText()
754
+ {
755
+ if (null === $exitcode = $this->getExitCode()) {
756
+ return;
757
+ }
758
+
759
+ return isset(self::$exitCodes[$exitcode]) ? self::$exitCodes[$exitcode] : 'Unknown error';
760
+ }
761
+
762
+ /**
763
+ * Checks if the process ended successfully.
764
+ *
765
+ * @return bool true if the process ended successfully, false otherwise
766
+ */
767
+ public function isSuccessful()
768
+ {
769
+ return 0 === $this->getExitCode();
770
+ }
771
+
772
+ /**
773
+ * Returns true if the child process has been terminated by an uncaught signal.
774
+ *
775
+ * It always returns false on Windows.
776
+ *
777
+ * @return bool
778
+ *
779
+ * @throws LogicException In case the process is not terminated
780
+ */
781
+ public function hasBeenSignaled()
782
+ {
783
+ $this->requireProcessIsTerminated(__FUNCTION__);
784
+
785
+ return $this->processInformation['signaled'];
786
+ }
787
+
788
+ /**
789
+ * Returns the number of the signal that caused the child process to terminate its execution.
790
+ *
791
+ * It is only meaningful if hasBeenSignaled() returns true.
792
+ *
793
+ * @return int
794
+ *
795
+ * @throws RuntimeException In case --enable-sigchild is activated
796
+ * @throws LogicException In case the process is not terminated
797
+ */
798
+ public function getTermSignal()
799
+ {
800
+ $this->requireProcessIsTerminated(__FUNCTION__);
801
+
802
+ if ($this->isSigchildEnabled() && -1 === $this->processInformation['termsig']) {
803
+ throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal can not be retrieved.');
804
+ }
805
+
806
+ return $this->processInformation['termsig'];
807
+ }
808
+
809
+ /**
810
+ * Returns true if the child process has been stopped by a signal.
811
+ *
812
+ * It always returns false on Windows.
813
+ *
814
+ * @return bool
815
+ *
816
+ * @throws LogicException In case the process is not terminated
817
+ */
818
+ public function hasBeenStopped()
819
+ {
820
+ $this->requireProcessIsTerminated(__FUNCTION__);
821
+
822
+ return $this->processInformation['stopped'];
823
+ }
824
+
825
+ /**
826
+ * Returns the number of the signal that caused the child process to stop its execution.
827
+ *
828
+ * It is only meaningful if hasBeenStopped() returns true.
829
+ *
830
+ * @return int
831
+ *
832
+ * @throws LogicException In case the process is not terminated
833
+ */
834
+ public function getStopSignal()
835
+ {
836
+ $this->requireProcessIsTerminated(__FUNCTION__);
837
+
838
+ return $this->processInformation['stopsig'];
839
+ }
840
+
841
+ /**
842
+ * Checks if the process is currently running.
843
+ *
844
+ * @return bool true if the process is currently running, false otherwise
845
+ */
846
+ public function isRunning()
847
+ {
848
+ if (self::STATUS_STARTED !== $this->status) {
849
+ return false;
850
+ }
851
+
852
+ $this->updateStatus(false);
853
+
854
+ return $this->processInformation['running'];
855
+ }
856
+
857
+ /**
858
+ * Checks if the process has been started with no regard to the current state.
859
+ *
860
+ * @return bool true if status is ready, false otherwise
861
+ */
862
+ public function isStarted()
863
+ {
864
+ return self::STATUS_READY != $this->status;
865
+ }
866
+
867
+ /**
868
+ * Checks if the process is terminated.
869
+ *
870
+ * @return bool true if process is terminated, false otherwise
871
+ */
872
+ public function isTerminated()
873
+ {
874
+ $this->updateStatus(false);
875
+
876
+ return self::STATUS_TERMINATED == $this->status;
877
+ }
878
+
879
+ /**
880
+ * Gets the process status.
881
+ *
882
+ * The status is one of: ready, started, terminated.
883
+ *
884
+ * @return string The current process status
885
+ */
886
+ public function getStatus()
887
+ {
888
+ $this->updateStatus(false);
889
+
890
+ return $this->status;
891
+ }
892
+
893
+ /**
894
+ * Stops the process.
895
+ *
896
+ * @param int|float $timeout The timeout in seconds
897
+ * @param int $signal A POSIX signal to send in case the process has not stop at timeout, default is SIGKILL (9)
898
+ *
899
+ * @return int The exit-code of the process
900
+ */
901
+ public function stop($timeout = 10, $signal = null)
902
+ {
903
+ $timeoutMicro = microtime(true) + $timeout;
904
+ if ($this->isRunning()) {
905
+ // given SIGTERM may not be defined and that "proc_terminate" uses the constant value and not the constant itself, we use the same here
906
+ $this->doSignal(15, false);
907
+ do {
908
+ usleep(1000);
909
+ } while ($this->isRunning() && microtime(true) < $timeoutMicro);
910
+
911
+ if ($this->isRunning()) {
912
+ // Avoid exception here: process is supposed to be running, but it might have stopped just
913
+ // after this line. In any case, let's silently discard the error, we cannot do anything.
914
+ $this->doSignal($signal ?: 9, false);
915
+ }
916
+ }
917
+
918
+ if ($this->isRunning()) {
919
+ if (isset($this->fallbackStatus['pid'])) {
920
+ unset($this->fallbackStatus['pid']);
921
+
922
+ return $this->stop(0, $signal);
923
+ }
924
+ $this->close();
925
+ }
926
+
927
+ return $this->exitcode;
928
+ }
929
+
930
+ /**
931
+ * Adds a line to the STDOUT stream.
932
+ *
933
+ * @internal
934
+ */
935
+ public function addOutput(string $line)
936
+ {
937
+ $this->lastOutputTime = microtime(true);
938
+
939
+ fseek($this->stdout, 0, SEEK_END);
940
+ fwrite($this->stdout, $line);
941
+ fseek($this->stdout, $this->incrementalOutputOffset);
942
+ }
943
+
944
+ /**
945
+ * Adds a line to the STDERR stream.
946
+ *
947
+ * @internal
948
+ */
949
+ public function addErrorOutput(string $line)
950
+ {
951
+ $this->lastOutputTime = microtime(true);
952
+
953
+ fseek($this->stderr, 0, SEEK_END);
954
+ fwrite($this->stderr, $line);
955
+ fseek($this->stderr, $this->incrementalErrorOutputOffset);
956
+ }
957
+
958
+ /**
959
+ * Gets the command line to be executed.
960
+ *
961
+ * @return string The command to execute
962
+ */
963
+ public function getCommandLine()
964
+ {
965
+ return \is_array($this->commandline) ? implode(' ', array_map([$this, 'escapeArgument'], $this->commandline)) : $this->commandline;
966
+ }
967
+
968
+ /**
969
+ * Sets the command line to be executed.
970
+ *
971
+ * @param string|array $commandline The command to execute
972
+ *
973
+ * @return self The current Process instance
974
+ *
975
+ * @deprecated since Symfony 4.2.
976
+ */
977
+ public function setCommandLine($commandline)
978
+ {
979
+ @trigger_error(sprintf('The "%s()" method is deprecated since Symfony 4.2.', __METHOD__), E_USER_DEPRECATED);
980
+
981
+ $this->commandline = $commandline;
982
+
983
+ return $this;
984
+ }
985
+
986
+ /**
987
+ * Gets the process timeout (max. runtime).
988
+ *
989
+ * @return float|null The timeout in seconds or null if it's disabled
990
+ */
991
+ public function getTimeout()
992
+ {
993
+ return $this->timeout;
994
+ }
995
+
996
+ /**
997
+ * Gets the process idle timeout (max. time since last output).
998
+ *
999
+ * @return float|null The timeout in seconds or null if it's disabled
1000
+ */
1001
+ public function getIdleTimeout()
1002
+ {
1003
+ return $this->idleTimeout;
1004
+ }
1005
+
1006
+ /**
1007
+ * Sets the process timeout (max. runtime).
1008
+ *
1009
+ * To disable the timeout, set this value to null.
1010
+ *
1011
+ * @param int|float|null $timeout The timeout in seconds
1012
+ *
1013
+ * @return self The current Process instance
1014
+ *
1015
+ * @throws InvalidArgumentException if the timeout is negative
1016
+ */
1017
+ public function setTimeout($timeout)
1018
+ {
1019
+ $this->timeout = $this->validateTimeout($timeout);
1020
+
1021
+ return $this;
1022
+ }
1023
+
1024
+ /**
1025
+ * Sets the process idle timeout (max. time since last output).
1026
+ *
1027
+ * To disable the timeout, set this value to null.
1028
+ *
1029
+ * @param int|float|null $timeout The timeout in seconds
1030
+ *
1031
+ * @return self The current Process instance
1032
+ *
1033
+ * @throws LogicException if the output is disabled
1034
+ * @throws InvalidArgumentException if the timeout is negative
1035
+ */
1036
+ public function setIdleTimeout($timeout)
1037
+ {
1038
+ if (null !== $timeout && $this->outputDisabled) {
1039
+ throw new LogicException('Idle timeout can not be set while the output is disabled.');
1040
+ }
1041
+
1042
+ $this->idleTimeout = $this->validateTimeout($timeout);
1043
+
1044
+ return $this;
1045
+ }
1046
+
1047
+ /**
1048
+ * Enables or disables the TTY mode.
1049
+ *
1050
+ * @param bool $tty True to enabled and false to disable
1051
+ *
1052
+ * @return self The current Process instance
1053
+ *
1054
+ * @throws RuntimeException In case the TTY mode is not supported
1055
+ */
1056
+ public function setTty($tty)
1057
+ {
1058
+ if ('\\' === \DIRECTORY_SEPARATOR && $tty) {
1059
+ throw new RuntimeException('TTY mode is not supported on Windows platform.');
1060
+ }
1061
+
1062
+ if ($tty && !self::isTtySupported()) {
1063
+ throw new RuntimeException('TTY mode requires /dev/tty to be read/writable.');
1064
+ }
1065
+
1066
+ $this->tty = (bool) $tty;
1067
+
1068
+ return $this;
1069
+ }
1070
+
1071
+ /**
1072
+ * Checks if the TTY mode is enabled.
1073
+ *
1074
+ * @return bool true if the TTY mode is enabled, false otherwise
1075
+ */
1076
+ public function isTty()
1077
+ {
1078
+ return $this->tty;
1079
+ }
1080
+
1081
+ /**
1082
+ * Sets PTY mode.
1083
+ *
1084
+ * @param bool $bool
1085
+ *
1086
+ * @return self
1087
+ */
1088
+ public function setPty($bool)
1089
+ {
1090
+ $this->pty = (bool) $bool;
1091
+
1092
+ return $this;
1093
+ }
1094
+
1095
+ /**
1096
+ * Returns PTY state.
1097
+ *
1098
+ * @return bool
1099
+ */
1100
+ public function isPty()
1101
+ {
1102
+ return $this->pty;
1103
+ }
1104
+
1105
+ /**
1106
+ * Gets the working directory.
1107
+ *
1108
+ * @return string|null The current working directory or null on failure
1109
+ */
1110
+ public function getWorkingDirectory()
1111
+ {
1112
+ if (null === $this->cwd) {
1113
+ // getcwd() will return false if any one of the parent directories does not have
1114
+ // the readable or search mode set, even if the current directory does
1115
+ return getcwd() ?: null;
1116
+ }
1117
+
1118
+ return $this->cwd;
1119
+ }
1120
+
1121
+ /**
1122
+ * Sets the current working directory.
1123
+ *
1124
+ * @param string $cwd The new working directory
1125
+ *
1126
+ * @return self The current Process instance
1127
+ */
1128
+ public function setWorkingDirectory($cwd)
1129
+ {
1130
+ $this->cwd = $cwd;
1131
+
1132
+ return $this;
1133
+ }
1134
+
1135
+ /**
1136
+ * Gets the environment variables.
1137
+ *
1138
+ * @return array The current environment variables
1139
+ */
1140
+ public function getEnv()
1141
+ {
1142
+ return $this->env;
1143
+ }
1144
+
1145
+ /**
1146
+ * Sets the environment variables.
1147
+ *
1148
+ * Each environment variable value should be a string.
1149
+ * If it is an array, the variable is ignored.
1150
+ * If it is false or null, it will be removed when
1151
+ * env vars are otherwise inherited.
1152
+ *
1153
+ * That happens in PHP when 'argv' is registered into
1154
+ * the $_ENV array for instance.
1155
+ *
1156
+ * @param array $env The new environment variables
1157
+ *
1158
+ * @return self The current Process instance
1159
+ */
1160
+ public function setEnv(array $env)
1161
+ {
1162
+ // Process can not handle env values that are arrays
1163
+ $env = array_filter($env, function ($value) {
1164
+ return !\is_array($value);
1165
+ });
1166
+
1167
+ $this->env = $env;
1168
+
1169
+ return $this;
1170
+ }
1171
+
1172
+ /**
1173
+ * Gets the Process input.
1174
+ *
1175
+ * @return resource|string|\Iterator|null The Process input
1176
+ */
1177
+ public function getInput()
1178
+ {
1179
+ return $this->input;
1180
+ }
1181
+
1182
+ /**
1183
+ * Sets the input.
1184
+ *
1185
+ * This content will be passed to the underlying process standard input.
1186
+ *
1187
+ * @param string|int|float|bool|resource|\Traversable|null $input The content
1188
+ *
1189
+ * @return self The current Process instance
1190
+ *
1191
+ * @throws LogicException In case the process is running
1192
+ */
1193
+ public function setInput($input)
1194
+ {
1195
+ if ($this->isRunning()) {
1196
+ throw new LogicException('Input can not be set while the process is running.');
1197
+ }
1198
+
1199
+ $this->input = ProcessUtils::validateInput(__METHOD__, $input);
1200
+
1201
+ return $this;
1202
+ }
1203
+
1204
+ /**
1205
+ * Sets whether environment variables will be inherited or not.
1206
+ *
1207
+ * @param bool $inheritEnv
1208
+ *
1209
+ * @return self The current Process instance
1210
+ */
1211
+ public function inheritEnvironmentVariables($inheritEnv = true)
1212
+ {
1213
+ if (!$inheritEnv) {
1214
+ throw new InvalidArgumentException('Not inheriting environment variables is not supported.');
1215
+ }
1216
+
1217
+ return $this;
1218
+ }
1219
+
1220
+ /**
1221
+ * Performs a check between the timeout definition and the time the process started.
1222
+ *
1223
+ * In case you run a background process (with the start method), you should
1224
+ * trigger this method regularly to ensure the process timeout
1225
+ *
1226
+ * @throws ProcessTimedOutException In case the timeout was reached
1227
+ */
1228
+ public function checkTimeout()
1229
+ {
1230
+ if (self::STATUS_STARTED !== $this->status) {
1231
+ return;
1232
+ }
1233
+
1234
+ if (null !== $this->timeout && $this->timeout < microtime(true) - $this->starttime) {
1235
+ $this->stop(0);
1236
+
1237
+ throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_GENERAL);
1238
+ }
1239
+
1240
+ if (null !== $this->idleTimeout && $this->idleTimeout < microtime(true) - $this->lastOutputTime) {
1241
+ $this->stop(0);
1242
+
1243
+ throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_IDLE);
1244
+ }
1245
+ }
1246
+
1247
+ /**
1248
+ * Returns whether TTY is supported on the current operating system.
1249
+ */
1250
+ public static function isTtySupported(): bool
1251
+ {
1252
+ static $isTtySupported;
1253
+
1254
+ if (null === $isTtySupported) {
1255
+ $isTtySupported = (bool) @proc_open('echo 1 >/dev/null', [['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w']], $pipes);
1256
+ }
1257
+
1258
+ return $isTtySupported;
1259
+ }
1260
+
1261
+ /**
1262
+ * Returns whether PTY is supported on the current operating system.
1263
+ *
1264
+ * @return bool
1265
+ */
1266
+ public static function isPtySupported()
1267
+ {
1268
+ static $result;
1269
+
1270
+ if (null !== $result) {
1271
+ return $result;
1272
+ }
1273
+
1274
+ if ('\\' === \DIRECTORY_SEPARATOR) {
1275
+ return $result = false;
1276
+ }
1277
+
1278
+ return $result = (bool) @proc_open('echo 1 >/dev/null', [['pty'], ['pty'], ['pty']], $pipes);
1279
+ }
1280
+
1281
+ /**
1282
+ * Creates the descriptors needed by the proc_open.
1283
+ */
1284
+ private function getDescriptors(): array
1285
+ {
1286
+ if ($this->input instanceof \Iterator) {
1287
+ $this->input->rewind();
1288
+ }
1289
+ if ('\\' === \DIRECTORY_SEPARATOR) {
1290
+ $this->processPipes = new WindowsPipes($this->input, !$this->outputDisabled || $this->hasCallback);
1291
+ } else {
1292
+ $this->processPipes = new UnixPipes($this->isTty(), $this->isPty(), $this->input, !$this->outputDisabled || $this->hasCallback);
1293
+ }
1294
+
1295
+ return $this->processPipes->getDescriptors();
1296
+ }
1297
+
1298
+ /**
1299
+ * Builds up the callback used by wait().
1300
+ *
1301
+ * The callbacks adds all occurred output to the specific buffer and calls
1302
+ * the user callback (if present) with the received output.
1303
+ *
1304
+ * @param callable|null $callback The user defined PHP callback
1305
+ *
1306
+ * @return \Closure A PHP closure
1307
+ */
1308
+ protected function buildCallback(callable $callback = null)
1309
+ {
1310
+ if ($this->outputDisabled) {
1311
+ return function ($type, $data) use ($callback) {
1312
+ if (null !== $callback) {
1313
+ return $callback($type, $data);
1314
+ }
1315
+ };
1316
+ }
1317
+
1318
+ $out = self::OUT;
1319
+
1320
+ return function ($type, $data) use ($callback, $out) {
1321
+ if ($out == $type) {
1322
+ $this->addOutput($data);
1323
+ } else {
1324
+ $this->addErrorOutput($data);
1325
+ }
1326
+
1327
+ if (null !== $callback) {
1328
+ return $callback($type, $data);
1329
+ }
1330
+ };
1331
+ }
1332
+
1333
+ /**
1334
+ * Updates the status of the process, reads pipes.
1335
+ *
1336
+ * @param bool $blocking Whether to use a blocking read call
1337
+ */
1338
+ protected function updateStatus($blocking)
1339
+ {
1340
+ if (self::STATUS_STARTED !== $this->status) {
1341
+ return;
1342
+ }
1343
+
1344
+ $this->processInformation = proc_get_status($this->process);
1345
+ $running = $this->processInformation['running'];
1346
+
1347
+ $this->readPipes($running && $blocking, '\\' !== \DIRECTORY_SEPARATOR || !$running);
1348
+
1349
+ if ($this->fallbackStatus && $this->isSigchildEnabled()) {
1350
+ $this->processInformation = $this->fallbackStatus + $this->processInformation;
1351
+ }
1352
+
1353
+ if (!$running) {
1354
+ $this->close();
1355
+ }
1356
+ }
1357
+
1358
+ /**
1359
+ * Returns whether PHP has been compiled with the '--enable-sigchild' option or not.
1360
+ *
1361
+ * @return bool
1362
+ */
1363
+ protected function isSigchildEnabled()
1364
+ {
1365
+ if (null !== self::$sigchild) {
1366
+ return self::$sigchild;
1367
+ }
1368
+
1369
+ if (!\function_exists('phpinfo')) {
1370
+ return self::$sigchild = false;
1371
+ }
1372
+
1373
+ ob_start();
1374
+ phpinfo(INFO_GENERAL);
1375
+
1376
+ return self::$sigchild = false !== strpos(ob_get_clean(), '--enable-sigchild');
1377
+ }
1378
+
1379
+ /**
1380
+ * Reads pipes for the freshest output.
1381
+ *
1382
+ * @param string $caller The name of the method that needs fresh outputs
1383
+ * @param bool $blocking Whether to use blocking calls or not
1384
+ *
1385
+ * @throws LogicException in case output has been disabled or process is not started
1386
+ */
1387
+ private function readPipesForOutput(string $caller, bool $blocking = false)
1388
+ {
1389
+ if ($this->outputDisabled) {
1390
+ throw new LogicException('Output has been disabled.');
1391
+ }
1392
+
1393
+ $this->requireProcessIsStarted($caller);
1394
+
1395
+ $this->updateStatus($blocking);
1396
+ }
1397
+
1398
+ /**
1399
+ * Validates and returns the filtered timeout.
1400
+ *
1401
+ * @throws InvalidArgumentException if the given timeout is a negative number
1402
+ */
1403
+ private function validateTimeout(?float $timeout): ?float
1404
+ {
1405
+ $timeout = (float) $timeout;
1406
+
1407
+ if (0.0 === $timeout) {
1408
+ $timeout = null;
1409
+ } elseif ($timeout < 0) {
1410
+ throw new InvalidArgumentException('The timeout value must be a valid positive integer or float number.');
1411
+ }
1412
+
1413
+ return $timeout;
1414
+ }
1415
+
1416
+ /**
1417
+ * Reads pipes, executes callback.
1418
+ *
1419
+ * @param bool $blocking Whether to use blocking calls or not
1420
+ * @param bool $close Whether to close file handles or not
1421
+ */
1422
+ private function readPipes(bool $blocking, bool $close)
1423
+ {
1424
+ $result = $this->processPipes->readAndWrite($blocking, $close);
1425
+
1426
+ $callback = $this->callback;
1427
+ foreach ($result as $type => $data) {
1428
+ if (3 !== $type) {
1429
+ $callback(self::STDOUT === $type ? self::OUT : self::ERR, $data);
1430
+ } elseif (!isset($this->fallbackStatus['signaled'])) {
1431
+ $this->fallbackStatus['exitcode'] = (int) $data;
1432
+ }
1433
+ }
1434
+ }
1435
+
1436
+ /**
1437
+ * Closes process resource, closes file handles, sets the exitcode.
1438
+ *
1439
+ * @return int The exitcode
1440
+ */
1441
+ private function close(): int
1442
+ {
1443
+ $this->processPipes->close();
1444
+ if (\is_resource($this->process)) {
1445
+ proc_close($this->process);
1446
+ }
1447
+ $this->exitcode = $this->processInformation['exitcode'];
1448
+ $this->status = self::STATUS_TERMINATED;
1449
+
1450
+ if (-1 === $this->exitcode) {
1451
+ if ($this->processInformation['signaled'] && 0 < $this->processInformation['termsig']) {
1452
+ // if process has been signaled, no exitcode but a valid termsig, apply Unix convention
1453
+ $this->exitcode = 128 + $this->processInformation['termsig'];
1454
+ } elseif ($this->isSigchildEnabled()) {
1455
+ $this->processInformation['signaled'] = true;
1456
+ $this->processInformation['termsig'] = -1;
1457
+ }
1458
+ }
1459
+
1460
+ // Free memory from self-reference callback created by buildCallback
1461
+ // Doing so in other contexts like __destruct or by garbage collector is ineffective
1462
+ // Now pipes are closed, so the callback is no longer necessary
1463
+ $this->callback = null;
1464
+
1465
+ return $this->exitcode;
1466
+ }
1467
+
1468
+ /**
1469
+ * Resets data related to the latest run of the process.
1470
+ */
1471
+ private function resetProcessData()
1472
+ {
1473
+ $this->starttime = null;
1474
+ $this->callback = null;
1475
+ $this->exitcode = null;
1476
+ $this->fallbackStatus = [];
1477
+ $this->processInformation = null;
1478
+ $this->stdout = fopen('php://temp/maxmemory:'.(1024 * 1024), 'w+b');
1479
+ $this->stderr = fopen('php://temp/maxmemory:'.(1024 * 1024), 'w+b');
1480
+ $this->process = null;
1481
+ $this->latestSignal = null;
1482
+ $this->status = self::STATUS_READY;
1483
+ $this->incrementalOutputOffset = 0;
1484
+ $this->incrementalErrorOutputOffset = 0;
1485
+ }
1486
+
1487
+ /**
1488
+ * Sends a POSIX signal to the process.
1489
+ *
1490
+ * @param int $signal A valid POSIX signal (see http://www.php.net/manual/en/pcntl.constants.php)
1491
+ * @param bool $throwException Whether to throw exception in case signal failed
1492
+ *
1493
+ * @return bool True if the signal was sent successfully, false otherwise
1494
+ *
1495
+ * @throws LogicException In case the process is not running
1496
+ * @throws RuntimeException In case --enable-sigchild is activated and the process can't be killed
1497
+ * @throws RuntimeException In case of failure
1498
+ */
1499
+ private function doSignal(int $signal, bool $throwException): bool
1500
+ {
1501
+ if (null === $pid = $this->getPid()) {
1502
+ if ($throwException) {
1503
+ throw new LogicException('Can not send signal on a non running process.');
1504
+ }
1505
+
1506
+ return false;
1507
+ }
1508
+
1509
+ if ('\\' === \DIRECTORY_SEPARATOR) {
1510
+ exec(sprintf('taskkill /F /T /PID %d 2>&1', $pid), $output, $exitCode);
1511
+ if ($exitCode && $this->isRunning()) {
1512
+ if ($throwException) {
1513
+ throw new RuntimeException(sprintf('Unable to kill the process (%s).', implode(' ', $output)));
1514
+ }
1515
+
1516
+ return false;
1517
+ }
1518
+ } else {
1519
+ if (!$this->isSigchildEnabled()) {
1520
+ $ok = @proc_terminate($this->process, $signal);
1521
+ } elseif (\function_exists('posix_kill')) {
1522
+ $ok = @posix_kill($pid, $signal);
1523
+ } elseif ($ok = proc_open(sprintf('kill -%d %d', $signal, $pid), [2 => ['pipe', 'w']], $pipes)) {
1524
+ $ok = false === fgets($pipes[2]);
1525
+ }
1526
+ if (!$ok) {
1527
+ if ($throwException) {
1528
+ throw new RuntimeException(sprintf('Error while sending signal "%s".', $signal));
1529
+ }
1530
+
1531
+ return false;
1532
+ }
1533
+ }
1534
+
1535
+ $this->latestSignal = $signal;
1536
+ $this->fallbackStatus['signaled'] = true;
1537
+ $this->fallbackStatus['exitcode'] = -1;
1538
+ $this->fallbackStatus['termsig'] = $this->latestSignal;
1539
+
1540
+ return true;
1541
+ }
1542
+
1543
+ private function prepareWindowsCommandLine(string $cmd, array &$env)
1544
+ {
1545
+ $uid = uniqid('', true);
1546
+ $varCount = 0;
1547
+ $varCache = [];
1548
+ $cmd = preg_replace_callback(
1549
+ '/"(?:(
1550
+ [^"%!^]*+
1551
+ (?:
1552
+ (?: !LF! | "(?:\^[%!^])?+" )
1553
+ [^"%!^]*+
1554
+ )++
1555
+ ) | [^"]*+ )"/x',
1556
+ function ($m) use (&$env, &$varCache, &$varCount, $uid) {
1557
+ if (!isset($m[1])) {
1558
+ return $m[0];
1559
+ }
1560
+ if (isset($varCache[$m[0]])) {
1561
+ return $varCache[$m[0]];
1562
+ }
1563
+ if (false !== strpos($value = $m[1], "\0")) {
1564
+ $value = str_replace("\0", '?', $value);
1565
+ }
1566
+ if (false === strpbrk($value, "\"%!\n")) {
1567
+ return '"'.$value.'"';
1568
+ }
1569
+
1570
+ $value = str_replace(['!LF!', '"^!"', '"^%"', '"^^"', '""'], ["\n", '!', '%', '^', '"'], $value);
1571
+ $value = '"'.preg_replace('/(\\\\*)"/', '$1$1\\"', $value).'"';
1572
+ $var = $uid.++$varCount;
1573
+
1574
+ $env[$var] = $value;
1575
+
1576
+ return $varCache[$m[0]] = '!'.$var.'!';
1577
+ },
1578
+ $cmd
1579
+ );
1580
+
1581
+ $cmd = 'cmd /V:ON /E:ON /D /C ('.str_replace("\n", ' ', $cmd).')';
1582
+ foreach ($this->processPipes->getFiles() as $offset => $filename) {
1583
+ $cmd .= ' '.$offset.'>"'.$filename.'"';
1584
+ }
1585
+
1586
+ return $cmd;
1587
+ }
1588
+
1589
+ /**
1590
+ * Ensures the process is running or terminated, throws a LogicException if the process has a not started.
1591
+ *
1592
+ * @throws LogicException if the process has not run
1593
+ */
1594
+ private function requireProcessIsStarted(string $functionName)
1595
+ {
1596
+ if (!$this->isStarted()) {
1597
+ throw new LogicException(sprintf('Process must be started before calling %s.', $functionName));
1598
+ }
1599
+ }
1600
+
1601
+ /**
1602
+ * Ensures the process is terminated, throws a LogicException if the process has a status different than "terminated".
1603
+ *
1604
+ * @throws LogicException if the process is not yet terminated
1605
+ */
1606
+ private function requireProcessIsTerminated(string $functionName)
1607
+ {
1608
+ if (!$this->isTerminated()) {
1609
+ throw new LogicException(sprintf('Process must be terminated before calling %s.', $functionName));
1610
+ }
1611
+ }
1612
+
1613
+ /**
1614
+ * Escapes a string to be used as a shell argument.
1615
+ */
1616
+ private function escapeArgument(?string $argument): string
1617
+ {
1618
+ if ('' === $argument || null === $argument) {
1619
+ return '""';
1620
+ }
1621
+ if ('\\' !== \DIRECTORY_SEPARATOR) {
1622
+ return "'".str_replace("'", "'\\''", $argument)."'";
1623
+ }
1624
+ if (false !== strpos($argument, "\0")) {
1625
+ $argument = str_replace("\0", '?', $argument);
1626
+ }
1627
+ if (!preg_match('/[\/()%!^"<>&|\s]/', $argument)) {
1628
+ return $argument;
1629
+ }
1630
+ $argument = preg_replace('/(\\\\+)$/', '$1$1', $argument);
1631
+
1632
+ return '"'.str_replace(['"', '^', '%', '!', "\n"], ['""', '"^^"', '"^%"', '"^!"', '!LF!'], $argument).'"';
1633
+ }
1634
+
1635
+ private function getDefaultEnv()
1636
+ {
1637
+ $env = [];
1638
+
1639
+ foreach ($_SERVER as $k => $v) {
1640
+ if (\is_string($v) && false !== $v = getenv($k)) {
1641
+ $env[$k] = $v;
1642
+ }
1643
+ }
1644
+
1645
+ foreach ($_ENV as $k => $v) {
1646
+ if (\is_string($v)) {
1647
+ $env[$k] = $v;
1648
+ }
1649
+ }
1650
+
1651
+ return $env;
1652
+ }
1653
+ }