How cweagans/composer-patches works
Composer Patches is a Composer plugin that resolves patch definitions, downloads and caches patch files, then applies them to installed dependencies. Its plugin class coordinates those stages and exposes commands, lock handling, and extension events. The graph includes the documented local/remote patch capability and the sampled provider, resolver, downloader, and patcher layers. Some subsystem wiring is supported by the SOURCE INDEX rather than inspected implementation; uncertain event and command relationships are omitted.
Main entry points: Patches.php Patches plugin · Patcher.php Patcher coordinator · CommandProvider.php Command provider · Resolver.php Resolver coordinator
Components 26
Plugin lifecycle
- Patches plugin
src/Plugin/Patches.php - Plugin events
src/Event/PluginEvent.php - Patch events
src/Event/PatchEvent.php
Patch definitions
- Patch model
src/Patch.php - Patch collection
src/PatchCollection.php - Resolver coordinator
src/Resolver.php - Resolver providers
src/Capability/Resolver/ResolverProvider.php - Built-in resolvers
src/Resolver - Resolver base
src/Resolver/ResolverBase.php - Patch lock state
src/Locker.php
Download and apply
- Download coordinator
src/Downloader.php - Downloader providers
src/Capability/Downloader/DownloaderProvider.php - HTTP downloader
src/Downloader/ComposerDownloader.php - Downloader contract
src/Downloader/DownloaderInterface.php - Patcher coordinator
src/Patcher.php - Patcher providers
src/Capability/Patcher/PatcherProvider.php - Built-in patchers
src/Patcher - Patcher contract
src/Patcher/PatcherInterface.php
Commands and state
- Command provider
src/Capability/CommandProvider.php - Environment doctor
src/Command/DoctorCommand.php - Patch commands
src/Command/PatchesCommandBase.php - Relock command
src/Command/RelockCommand.php - Repatch command
src/Command/RepatchCommand.php
Other components
- Composer
- Local or remote patch
- Installed dependencies
Connections 29
- Composer → Patches plugin: invokes plugin
- Patches plugin → Resolver coordinator: loads definitions
src/Plugin/Patches.php - Resolver coordinator → Resolver providers: discovers providers
src/Resolver.php - Resolver providers → Built-in resolvers: provides resolvers
src/Capability/Resolver/ResolverProvider.php - Built-in resolvers → Resolver base: shares base
src/Resolver/Dependencies.php - Resolver coordinator → Patch collection: returns collection
src/Resolver.php - Resolver base → Patch model: creates patches
src/Resolver/ResolverBase.php - Patches plugin → Patch collection: iterates patches
src/Plugin/Patches.php - Patches plugin → Download coordinator: downloads patches
src/Plugin/Patches.php - Download coordinator → Downloader providers: discovers providers
src/Downloader.php - Downloader providers → HTTP downloader: provides downloader
- Download coordinator → Downloader contract: validates implementations
src/Downloader.php - HTTP downloader → Local or remote patch: fetches and hashes
src/Downloader/ComposerDownloader.php - Patches plugin → Patcher coordinator: applies patches
src/Plugin/Patches.php - Patcher coordinator → Patcher providers: discovers providers
src/Patcher.php - Patcher providers → Built-in patchers: provides patchers
src/Capability/Patcher/PatcherProvider.php - Patcher coordinator → Patcher contract: validates implementations
src/Patcher.php - Patcher coordinator → Installed dependencies: applies to path
src/Patcher.php - Patches plugin → Patch lock state: uses lock state
src/Plugin/Patches.php - Patches plugin → Command provider: registers commands
src/Plugin/Patches.php - Command provider → Environment doctor: provides command
src/Capability/CommandProvider.php - Command provider → Relock command: provides command
src/Capability/CommandProvider.php - Command provider → Repatch command: provides command
src/Capability/CommandProvider.php - Environment doctor → Patcher providers: checks patchers
src/Command/DoctorCommand.php - Relock command → Patch commands: extends commands
src/Command/RelockCommand.php - Repatch command → Patch commands: extends commands
src/Command/RepatchCommand.php - Patch commands → Patches plugin: accesses plugin
src/Command/PatchesCommandBase.php - Patches plugin → Plugin events: dispatches discovery events
- Patches plugin → Patch events: dispatches patch events
src/Plugin/Patches.php