shippercli / contracts
Contracts and interfaces for Shipper CLI providers
v1.0.0
2026-07-27 18:36 UTC
Requires
- php: ^8.3
README
Contracts and interfaces for Shipper CLI providers.
Packages
shippercli/contracts- Shared interfaces for provider pluginsshippercli/provider-ploi- Ploi provider pluginshippercli/provider-forge- Laravel Forge provider plugin
Interfaces
DeploymentProviderInterface- Main provider interfaceAliasManagerInterface- Domain alias managementDeployScriptManagerInterface- Deployment script managementEnvironmentManagerInterface- Environment variable managementSslManagerInterface- SSL certificate managementShipperPluginInterface- Plugin entry point
Provider contracts accept Shipper configuration objects as object so provider
packages do not depend on the CLI's internal DTO namespace. Providers should use
the documented configuration accessors (name(), path(), repository(),
profiles(), get(), and related feature accessors) and feature-detect optional
accessors with method_exists().
Creating a Provider
- Create a new repository:
shippercli/provider-{name} - Add
composer.jsonwith"type": "shipper-plugin" - Implement
DeploymentProviderInterface - Implement
ShipperPluginInterfaceand return a provider-name-to-class map - Add
extra.shipper-pluginpointing to your plugin class
public function providers(): array { return [ 'example' => ExampleProvider::class, ]; }
License
MIT
