This commit is contained in:
Dan Harrin
2023-02-26 17:51:43 +00:00
parent 32ab7ce8f1
commit 1a4115bc48
7 changed files with 95 additions and 15 deletions
@@ -1,6 +1,6 @@
<?php
namespace Filament\Upgrade\Forms;
namespace Filament\Upgrade\Rectors;
use PhpParser\Node;
use PhpParser\Node\Expr\ArrowFunction;
@@ -1,6 +1,6 @@
<?php
namespace Filament\Upgrade\App;
namespace Filament\Upgrade\Rectors;
use PhpParser\Node;
use PhpParser\Node\Name;
@@ -0,0 +1,66 @@
<?php
namespace Filament\Upgrade\Rectors;
use PhpParser\Node;
use PhpParser\Node\Expr\ArrowFunction;
use PhpParser\Node\Expr\Closure;
use PhpParser\Node\Name;
use PhpParser\Node\Stmt\Class_;
use Rector\Core\Rector\AbstractRector;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
class ReplaceParentClassRector extends AbstractRector
{
/**
* @return array<class-string, class-string>
*/
public function getChanges(): array
{
return [
'Filament\\PluginServiceProvider' => 'Spatie\\LaravelPackageTools\\PackageServiceProvider',
'Filament\\Resources\\RelationManagers\\BelongsToManyRelationManager' => 'Filament\\Resources\\RelationManagers\\RelationManager',
'Filament\\Resources\\RelationManagers\\HasManyRelationManager' => 'Filament\\Resources\\RelationManagers\\RelationManager',
'Filament\\Resources\\RelationManagers\\HasManyThroughRelationManager' => 'Filament\\Resources\\RelationManagers\\RelationManager',
'Filament\\Resources\\RelationManagers\\MorphManyRelationManager' => 'Filament\\Resources\\RelationManagers\\RelationManager',
'Filament\\Resources\\RelationManagers\\MorphToManyRelationManager' => 'Filament\\Resources\\RelationManagers\\RelationManager',
];
}
public function getNodeTypes(): array
{
return [Class_::class];
}
public function refactor(Node $node): ?Node
{
/** @var Class_ $node */
$changes = $this->getChanges();
foreach ($changes as $parentClassToRemove => $parentClassToAdd) {
if (! $this->isName($node->extends, $parentClassToRemove)) {
continue;
}
$node->extends = new Name("\\{$parentClassToAdd}");
return $node;
}
return null;
}
public function getRuleDefinition(): RuleDefinition
{
return new RuleDefinition(
'Replace the parent class with another',
[
new CodeSample(
'MembersRelationManager extends BelongsToManyRelationManager',
'MembersRelationManager extends RelationManager',
),
]
);
}
}
@@ -1,6 +1,6 @@
<?php
namespace Filament\Upgrade;
namespace Filament\Upgrade\Rectors;
use PhpParser\Node;
use PhpParser\Node\Expr\MethodCall;
@@ -1,6 +1,6 @@
<?php
namespace Filament\Upgrade\App;
namespace Filament\Upgrade\Rectors;
use Closure;
use PhpParser\Node;
@@ -1,6 +1,6 @@
<?php
namespace Filament\Upgrade\App;
namespace Filament\Upgrade\Rectors;
use Closure;
use PhpParser\Node;
+24 -10
View File
@@ -1,20 +1,34 @@
<?php
use Filament\Upgrade\App\MoveImportedClassesRector;
use Filament\Upgrade\App\SimpleMethodChangesRector;
use Filament\Upgrade\App\SimplePropertyChangesRector;
use Filament\Upgrade\Forms\FixGetSetClosureTypesRector;
use Filament\Upgrade\SecondaryToGrayColorRector;
use Filament\Upgrade\Rectors;
use Rector\Config\RectorConfig;
use Rector\Removing\Rector\Class_\RemoveTraitUseRector;
use Rector\Renaming\Rector\String_\RenameStringRector;
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->rules([
FixGetSetClosureTypesRector::class,
MoveImportedClassesRector::class,
SecondaryToGrayColorRector::class,
SimpleMethodChangesRector::class,
SimplePropertyChangesRector::class,
Rectors\FixGetSetClosureTypesRector::class,
Rectors\MoveImportedClassesRector::class,
Rectors\ReplaceParentClassRector::class,
Rectors\SecondaryToGrayColorRector::class,
Rectors\SimpleMethodChangesRector::class,
Rectors\SimplePropertyChangesRector::class,
]);
$rectorConfig->ruleWithConfiguration(RemoveTraitUseRector::class, [
'Filament\\Http\\Livewire\\Concerns\\CanNotify',
'Filament\\Resources\\Pages\\ListRecords\\Concerns\\CanCreateRecords',
'Filament\\Resources\\Pages\\ListRecords\\Concerns\\CanDeleteRecords',
'Filament\\Resources\\Pages\\ListRecords\\Concerns\\CanEditRecords',
'Filament\\Resources\\Pages\\ListRecords\\Concerns\\CanViewRecords',
'Filament\\Resources\\RelationManagers\\Concerns\\CanAssociateRecords',
'Filament\\Resources\\RelationManagers\\Concerns\\CanAttachRecords',
'Filament\\Resources\\RelationManagers\\Concerns\\CanCreateRecords',
'Filament\\Resources\\RelationManagers\\Concerns\\CanDeleteRecords',
'Filament\\Resources\\RelationManagers\\Concerns\\CanDetachRecords',
'Filament\\Resources\\RelationManagers\\Concerns\\CanDisassociateRecords',
'Filament\\Resources\\RelationManagers\\Concerns\\CanEditRecords',
'Filament\\Resources\\RelationManagers\\Concerns\\CanViewRecords',
]);
$rectorConfig->ruleWithConfiguration(