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 / OptionRequiredDescription
[name]NoComposer package name, e.g. vendor/orders
--target-pathNoAbsolute path to the target bucket directory
--generatorsNoRepeatable. Generator names to run (see below)

Generators

NameDefaultCreates
migrationdatabase/migrations/xxxx_create_{name}_table.php
modelsrc/Models/{Name}.php
factorydatabase/factories/{Name}Factory.php
service-providersrc/Providers/{Name}ServiceProvider.php
testtests/{Name}Test.php
controllersrc/Http/Controllers/{Name}Controller.php
policysrc/Policies/{Name}Policy.php
seederdatabase/seeders/{Name}Seeder.php

What Gets Registered

Regardless of which generators are selected, osdd:layer always:

  1. Creates a composer.json for the layer with "type": "layer" and PSR-4 autoload
  2. Adds a path repository entry to root composer.json
  3. Adds "vendor/package": "*" to require in root composer.json
  4. Injects extra.laravel.providers into the layer's composer.json (when using service-provider generator)

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