Commands Overview
osdd:layer
Scaffold a new OSDD layer interactively or with CLI options.
osdd:layer creates and registers a new layer. It can be run fully interactively or driven by command-line options for automation.
Usage
Terminal
# Interactive
php artisan osdd:layer
# Non-interactive
php artisan osdd:layer vendor/orders \
--target-path=/path/to/project/functional \
--generators=migration \
--generators=model \
--generators=factory \
--generators=service-provider
Arguments & Options
| Argument / Option | Required | Description |
|---|---|---|
[name] | No | Composer package name, e.g. vendor/orders |
--target-path | No | Absolute path to the target bucket directory |
--generators | No | Repeatable. Generator names to run (see below) |
Generators
| Name | Default | Creates |
|---|---|---|
migration | ✓ | database/migrations/xxxx_create_{name}_table.php |
model | ✓ | src/Models/{Name}.php |
factory | ✓ | database/factories/{Name}Factory.php |
service-provider | ✓ | src/Providers/{Name}ServiceProvider.php |
test | ✓ | tests/{Name}Test.php |
controller | — | src/Http/Controllers/{Name}Controller.php |
policy | — | src/Policies/{Name}Policy.php |
seeder | — | database/seeders/{Name}Seeder.php |
What Gets Registered
Regardless of which generators are selected, osdd:layer always:
- Creates a
composer.jsonfor the layer with"type": "layer"and PSR-4 autoload - Adds a
pathrepository entry to rootcomposer.json - Adds
"vendor/package": "*"torequirein rootcomposer.json - Injects
extra.laravel.providersinto the layer'scomposer.json(when usingservice-providergenerator)
Examples
With all defaults
Terminal
php artisan osdd:layer
# → prompts for bucket, name, generators
# → creates functional/orders with migration, model, factory, service-provider, test
Controller-first layer
Terminal
php artisan osdd:layer vendor/invoices \
--target-path=$(pwd)/functional \
--generators=model \
--generators=controller \
--generators=migration \
--generators=service-provider
Technical infrastructure layer
Terminal
php artisan osdd:layer xefi/event-bus \
--target-path=$(pwd)/technical \
--generators=service-provider