Skip to content

Commit

Permalink
improve class discovering
Browse files Browse the repository at this point in the history
  • Loading branch information
mozex committed Jan 11, 2025
1 parent 0b34fbe commit de2a3ad
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 7 deletions.
20 changes: 20 additions & 0 deletions src/ExtendsDiscoverCondition.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace Mozex\Modules;

use Spatie\StructureDiscoverer\Data\DiscoveredClass;
use Spatie\StructureDiscoverer\Data\DiscoveredStructure;
use Spatie\StructureDiscoverer\DiscoverConditions\DiscoverCondition;

class ExtendsDiscoverCondition extends DiscoverCondition
{
public function __construct(public string $extends) {}

public function satisfies(DiscoveredStructure $discoveredData): bool
{
/** @var DiscoveredClass $discoveredData */

return $discoveredData->extends == $this->extends
|| is_subclass_of($discoveredData->extends, $this->extends);
}
}
3 changes: 2 additions & 1 deletion src/Features/SupportBladeComponents/BladeComponentsScout.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
use Illuminate\View\Component;
use Mozex\Modules\Contracts\ModuleClassScout;
use Mozex\Modules\Enums\AssetType;
use Mozex\Modules\ExtendsDiscoverCondition;
use Spatie\StructureDiscoverer\Discover;

class BladeComponentsScout extends ModuleClassScout
Expand All @@ -17,6 +18,6 @@ public function asset(): AssetType
protected function definition(): Discover
{
return parent::definition()
->extending(Component::class);
->custom(new ExtendsDiscoverCondition(Component::class));
}
}
3 changes: 2 additions & 1 deletion src/Features/SupportCommands/CommandsScout.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
use Illuminate\Console\Command;
use Mozex\Modules\Contracts\ModuleClassScout;
use Mozex\Modules\Enums\AssetType;
use Mozex\Modules\ExtendsDiscoverCondition;
use Spatie\StructureDiscoverer\Discover;

class CommandsScout extends ModuleClassScout
Expand All @@ -17,6 +18,6 @@ public function asset(): AssetType
protected function definition(): Discover
{
return parent::definition()
->extending(Command::class);
->custom(new ExtendsDiscoverCondition(Command::class));
}
}
3 changes: 2 additions & 1 deletion src/Features/SupportLivewire/LivewireComponentsScout.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
use Livewire\Component;
use Mozex\Modules\Contracts\ModuleClassScout;
use Mozex\Modules\Enums\AssetType;
use Mozex\Modules\ExtendsDiscoverCondition;
use Spatie\StructureDiscoverer\Discover;

class LivewireComponentsScout extends ModuleClassScout
Expand All @@ -17,6 +18,6 @@ public function asset(): AssetType
protected function definition(): Discover
{
return parent::definition()
->extending(Component::class);
->custom(new ExtendsDiscoverCondition(Component::class));
}
}
3 changes: 2 additions & 1 deletion src/Features/SupportNova/NovaResourcesScout.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Laravel\Nova\Resource;
use Mozex\Modules\Contracts\ModuleClassScout;
use Mozex\Modules\Enums\AssetType;
use Mozex\Modules\ExtendsDiscoverCondition;
use Spatie\StructureDiscoverer\Data\DiscoveredClass;
use Spatie\StructureDiscoverer\Discover;

Expand All @@ -19,7 +20,7 @@ public function asset(): AssetType
protected function definition(): Discover
{
return parent::definition()
->extending(Resource::class) // @phpstan-ignore-line
->custom(new ExtendsDiscoverCondition(Resource::class)) // @phpstan-ignore-line
->custom(
fn (DiscoveredClass $structure): bool => ! in_array(ActionResource::class, $structure->extendsChain) // @phpstan-ignore-line
);
Expand Down
3 changes: 2 additions & 1 deletion src/Features/SupportSchedules/SchedulesScout.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
use Mozex\Modules\Contracts\ConsoleKernel;
use Mozex\Modules\Contracts\ModuleClassScout;
use Mozex\Modules\Enums\AssetType;
use Mozex\Modules\ExtendsDiscoverCondition;
use Mozex\Modules\Facades\Modules;
use Spatie\StructureDiscoverer\Data\DiscoveredClass;
use Spatie\StructureDiscoverer\Discover;
Expand All @@ -19,7 +20,7 @@ public function asset(): AssetType
protected function definition(): Discover
{
return parent::definition()
->extending(ConsoleKernel::class)
->custom(new ExtendsDiscoverCondition(ConsoleKernel::class))
->custom(
fn (DiscoveredClass $structure): bool => $structure->name === 'Kernel'
&& str_ends_with(
Expand Down
3 changes: 2 additions & 1 deletion src/Features/SupportSeeders/SeedersScout.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
use Illuminate\Database\Seeder;
use Mozex\Modules\Contracts\ModuleClassScout;
use Mozex\Modules\Enums\AssetType;
use Mozex\Modules\ExtendsDiscoverCondition;
use Mozex\Modules\Facades\Modules;
use Spatie\StructureDiscoverer\Data\DiscoveredClass;
use Spatie\StructureDiscoverer\Discover;
Expand All @@ -19,7 +20,7 @@ public function asset(): AssetType
protected function definition(): Discover
{
return parent::definition()
->extending(Seeder::class)
->custom(new ExtendsDiscoverCondition(Seeder::class))
->custom(
fn (DiscoveredClass $structure): bool => $structure->name === Modules::moduleNameFromNamespace($structure->namespace).'DatabaseSeeder'
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
use Illuminate\Support\ServiceProvider;
use Mozex\Modules\Contracts\ModuleClassScout;
use Mozex\Modules\Enums\AssetType;
use Mozex\Modules\ExtendsDiscoverCondition;
use Spatie\StructureDiscoverer\Discover;

class ServiceProvidersScout extends ModuleClassScout
Expand All @@ -17,6 +18,6 @@ public function asset(): AssetType
protected function definition(): Discover
{
return parent::definition()
->extending(ServiceProvider::class);
->custom(new ExtendsDiscoverCondition(ServiceProvider::class));
}
}

0 comments on commit de2a3ad

Please sign in to comment.