mirror of
https://github.com/barryvdh/laravel-ide-helper.git
synced 2026-08-18 01:57: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:
@@ -15,7 +15,10 @@ use Barryvdh\LaravelIdeHelper\Console\EloquentCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Console\GeneratorCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Console\MetaCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Console\ModelsCommand;
|
||||
use Barryvdh\LaravelIdeHelper\Listeners\GenerateModelHelper;
|
||||
use Illuminate\Console\Events\CommandFinished;
|
||||
use Illuminate\Contracts\Support\DeferrableProvider;
|
||||
use Illuminate\Database\Events\MigrationsEnded;
|
||||
use Illuminate\Foundation\Application;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\View\Engines\EngineResolver;
|
||||
@@ -32,6 +35,13 @@ class IdeHelperServiceProvider extends ServiceProvider implements DeferrableProv
|
||||
*/
|
||||
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')) {
|
||||
$viewPath = __DIR__ . '/../resources/views';
|
||||
$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