Skip to content

Commit ec50ba4

Browse files
Merge pull request #20 from ibnusyawall/main
Feat(console): Add command to create new seeder
2 parents 5ba09c8 + 6d7af6e commit ec50ba4

File tree

5 files changed

+97
-2
lines changed

5 files changed

+97
-2
lines changed

src/Console/MakeSeederCommand.php

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
namespace Modular\Modular\Console;
4+
5+
use Illuminate\Console\Command;
6+
use Illuminate\Filesystem\Filesystem;
7+
use Illuminate\Support\Str;
8+
use Modular\Modular\Console\InstallerTraits\ModuleExists;
9+
10+
class MakeSeederCommand extends Command
11+
{
12+
use ModuleExists;
13+
14+
protected $signature = 'modular:make-seeder {moduleName} {resourceName}';
15+
16+
protected $description = 'Create a new seeder class for a Module';
17+
18+
protected string $moduleName;
19+
20+
protected string $resourceName;
21+
22+
public function handle(): int
23+
{
24+
$this->moduleName = Str::studly($this->argument('moduleName'));
25+
$this->resourceName = Str::studly($this->argument('resourceName'));
26+
27+
if (! $this->moduleExists()) {
28+
return self::FAILURE;
29+
}
30+
31+
$this->comment('Module '.$this->moduleName.' found, creating seeder file...');
32+
$this->createModuleSeeder();
33+
34+
return self::SUCCESS;
35+
}
36+
37+
private function createModuleSeeder(): void
38+
{
39+
(new Filesystem)->ensureDirectoryExists(base_path("modules/{$this->moduleName}/Database/Seeders"));
40+
41+
$stub = file_get_contents(__DIR__.'/../../stubs/module-stub/modules/Database/Seeders/ModuleSeeder.stub');
42+
43+
$stub = str_replace('{{ ModuleName }}', $this->moduleName, $stub);
44+
$stub = str_replace('{{ ResourceName }}', $this->resourceName, $stub);
45+
46+
$path = base_path("modules/{$this->moduleName}/Database/Seeders/{$this->resourceName}.php");
47+
48+
file_put_contents($path, $stub);
49+
}
50+
}

src/ModularServiceProvider.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Modular\Modular\Console\MakeModuleCommand;
1414
use Modular\Modular\Console\MakePageCommand;
1515
use Modular\Modular\Console\MakeRouteCommand;
16+
use Modular\Modular\Console\MakeSeederCommand;
1617
use Modular\Modular\Console\MakeServiceCommand;
1718
use Modular\Modular\Console\MakeTestCommand;
1819
use Modular\Modular\Console\MakeValidateCommand;
@@ -48,6 +49,7 @@ public function configurePackage(Package $package): void
4849
->hasCommand(MakeComponentCommand::class)
4950
->hasCommand(MakeTestCommand::class)
5051
->hasCommand(MakeMigrationCommand::class)
52+
->hasCommand(MakeSeederCommand::class)
5153
->hasCommand(PublishLaravelTranslationsCommand::class)
5254
->hasCommand(PublishSiteFilesCommand::class)
5355
->hasCommand(MakeFactoryCommand::class)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace Modules\{{ ModuleName }}\Database\Seeders;
4+
5+
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
6+
use Illuminate\Database\Seeder;
7+
8+
class {{ ResourceName }} extends Seeder
9+
{
10+
/**
11+
* Run the database seeds.
12+
*/
13+
public function run(): void
14+
{
15+
//
16+
}
17+
}

stubs/module-stub/modules/ModuleServiceProvider.stub

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,5 @@ class {{ moduleName }}ServiceProvider extends BaseServiceProvider
1111
parent::boot();
1212

1313
$this->loadMigrationsFrom(__DIR__.'/Database/Migrations');
14-
$this->loadViewsFrom(__DIR__.'/views', '{{ resourceName }}');
1514
}
16-
}
15+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
use Illuminate\Filesystem\Filesystem;
4+
5+
beforeEach(function () {
6+
$this->artisan('modular:make-module ModuleName');
7+
});
8+
9+
afterEach(function () {
10+
(new Filesystem)->deleteDirectory(base_path('modules'));
11+
});
12+
13+
it('can run modular:make-seeder command', function () {
14+
$this->artisan('modular:make-seeder moduleName resourceName')->assertSuccessful();
15+
});
16+
17+
it('can generate a seeder', function () {
18+
$this->artisan('modular:make-seeder moduleName resourceName');
19+
20+
$seeder = base_path('modules/ModuleName/Database/Seeders/ResourceName.php');
21+
$this->assertTrue(file_exists($seeder));
22+
23+
$seederContent = file_get_contents($seeder);
24+
25+
expect($seederContent)->toContain('namespace Modules\ModuleName\Database\Seeders;');
26+
expect($seederContent)->toContain('class ResourceName extends Seeder');
27+
});

0 commit comments

Comments
 (0)