mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-17 17:47:13 +00:00
Auto generate models (#1163)
* Add illuminate/events as suggestion * Add post migration to config * Add listener to generate model helper * Add event listeners if enabled * Fix config file format * Add docblock for shouldRun flag * Allow running multiple commands after migrations * Simplify config * Change default value
This commit is contained in:
@@ -42,6 +42,9 @@
|
|||||||
"spatie/phpunit-snapshot-assertions": "^3 || ^4",
|
"spatie/phpunit-snapshot-assertions": "^3 || ^4",
|
||||||
"vimeo/psalm": "^3.12"
|
"vimeo/psalm": "^3.12"
|
||||||
},
|
},
|
||||||
|
"suggest": {
|
||||||
|
"illuminate/events": "Required for automatic helper generation (^6|^7|^8)."
|
||||||
|
},
|
||||||
"config": {
|
"config": {
|
||||||
"sort-packages": true
|
"sort-packages": true
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -278,4 +278,16 @@ return [
|
|||||||
*/
|
*/
|
||||||
'additional_relation_types' => [],
|
'additional_relation_types' => [],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Run artisan commands after migrations to generate model helpers
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| The specified commands should run after migrations are finished running.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
'post_migrate' => [
|
||||||
|
// 'ide-helper:models --nowrite',
|
||||||
|
],
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -15,7 +15,10 @@ use Barryvdh\LaravelIdeHelper\Console\EloquentCommand;
|
|||||||
use Barryvdh\LaravelIdeHelper\Console\GeneratorCommand;
|
use Barryvdh\LaravelIdeHelper\Console\GeneratorCommand;
|
||||||
use Barryvdh\LaravelIdeHelper\Console\MetaCommand;
|
use Barryvdh\LaravelIdeHelper\Console\MetaCommand;
|
||||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||||
|
use Barryvdh\LaravelIdeHelper\Listeners\GenerateModelHelper;
|
||||||
|
use Illuminate\Console\Events\CommandFinished;
|
||||||
use Illuminate\Contracts\Support\DeferrableProvider;
|
use Illuminate\Contracts\Support\DeferrableProvider;
|
||||||
|
use Illuminate\Database\Events\MigrationsEnded;
|
||||||
use Illuminate\Foundation\Application;
|
use Illuminate\Foundation\Application;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
use Illuminate\View\Engines\EngineResolver;
|
use Illuminate\View\Engines\EngineResolver;
|
||||||
@@ -32,6 +35,13 @@ class IdeHelperServiceProvider extends ServiceProvider implements DeferrableProv
|
|||||||
*/
|
*/
|
||||||
public function boot()
|
public function boot()
|
||||||
{
|
{
|
||||||
|
if ($this->app['config']->get('ide-helper.post_migrate', [])) {
|
||||||
|
$this->app['events']->listen(CommandFinished::class, GenerateModelHelper::class);
|
||||||
|
$this->app['events']->listen(MigrationsEnded::class, function () {
|
||||||
|
GenerateModelHelper::$shouldRun = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if ($this->app->has('view')) {
|
if ($this->app->has('view')) {
|
||||||
$viewPath = __DIR__ . '/../resources/views';
|
$viewPath = __DIR__ . '/../resources/views';
|
||||||
$this->loadViewsFrom($viewPath, 'ide-helper');
|
$this->loadViewsFrom($viewPath, 'ide-helper');
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Barryvdh\LaravelIdeHelper\Listeners;
|
||||||
|
|
||||||
|
use Illuminate\Console\Events\CommandFinished;
|
||||||
|
use Illuminate\Contracts\Config\Repository as Config;
|
||||||
|
use Illuminate\Contracts\Console\Kernel as Artisan;
|
||||||
|
|
||||||
|
class GenerateModelHelper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Tracks whether we should run the models command on the CommandFinished event or not.
|
||||||
|
* Set to true by the MigrationsEnded event, needs to be cleared before artisan call to prevent infinite loop.
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public static $shouldRun = false;
|
||||||
|
|
||||||
|
/** @var \Illuminate\Contracts\Console\Kernel */
|
||||||
|
protected $artisan;
|
||||||
|
|
||||||
|
/** @var \Illuminate\Contracts\Config\Repository */
|
||||||
|
protected $config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param \Illuminate\Contracts\Console\Kernel $artisan
|
||||||
|
* @param \Illuminate\Contracts\Config\Repository $config
|
||||||
|
*/
|
||||||
|
public function __construct(Artisan $artisan, Config $config)
|
||||||
|
{
|
||||||
|
$this->artisan = $artisan;
|
||||||
|
$this->config = $config;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the event.
|
||||||
|
*
|
||||||
|
* @param CommandFinished $event
|
||||||
|
*/
|
||||||
|
public function handle(CommandFinished $event)
|
||||||
|
{
|
||||||
|
if (!self::$shouldRun) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
self::$shouldRun = false;
|
||||||
|
|
||||||
|
foreach ($this->config->get('ide-helper.post_migrate', []) as $command) {
|
||||||
|
$this->artisan->call($command, [], $event->output);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user