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