Skip to content

Commit

Permalink
[DX] make all configure() methods accept direct value object configur…
Browse files Browse the repository at this point in the history
…ation (#1322)
  • Loading branch information
TomasVotruba committed Nov 27, 2021
1 parent 373ac30 commit 3844627
Show file tree
Hide file tree
Showing 79 changed files with 214 additions and 113 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@
return static function (ContainerConfigurator $containerConfigurator): void {
$services = $containerConfigurator->services();
$services->set(AddInterfaceByParentRector::class)
->call('configure', [[
AddInterfaceByParentRector::INTERFACE_BY_PARENT => [
SomeParent::class => SomeInterface::class,
],
]]);
->configure([
SomeParent::class => SomeInterface::class,
]);
};
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,9 @@
use Rector\TypeDeclaration\Rector\ClassMethod\AddReturnTypeDeclarationRector;
use Rector\TypeDeclaration\ValueObject\AddReturnTypeDeclaration;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symplify\SymfonyPhpConfig\ValueObjectInliner;

return static function (ContainerConfigurator $containerConfigurator): void {
$services = $containerConfigurator->services();
$services->set(AddReturnTypeDeclarationRector::class)
->call('configure', [[
AddReturnTypeDeclarationRector::METHOD_RETURN_TYPES => ValueObjectInliner::inline([
new AddReturnTypeDeclaration(PHPUnitTestCase::class, 'tearDown', new VoidType()),
]),
]]);
->configure([new AddReturnTypeDeclaration(PHPUnitTestCase::class, 'tearDown', new VoidType())]);
};
2 changes: 1 addition & 1 deletion rules/Arguments/Rector/ClassMethod/ArgumentAdderRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ public function refactor(Node $node): MethodCall | StaticCall | ClassMethod | nu
*/
public function configure(array $configuration): void
{
$addedArguments = $configuration[self::ADDED_ARGUMENTS] ?? [];
$addedArguments = $configuration[self::ADDED_ARGUMENTS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($addedArguments, ArgumentAdder::class);
$this->addedArguments = $addedArguments;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public function refactor(Node $node): MethodCall | StaticCall | ClassMethod
*/
public function configure(array $configuration): void
{
$replacedArguments = $configuration[self::REPLACED_ARGUMENTS] ?? [];
$replacedArguments = $configuration[self::REPLACED_ARGUMENTS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($replacedArguments, ReplaceArgumentDefaultValue::class);
$this->replacedArguments = $replacedArguments;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public function refactor(Node $node): FuncCall
*/
public function configure(array $configuration): void
{
$replacedArguments = $configuration[self::REPLACED_ARGUMENTS] ?? [];
$replacedArguments = $configuration[self::REPLACED_ARGUMENTS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($replacedArguments, ReplaceFuncCallArgumentDefaultValue::class);
$this->replacedArguments = $replacedArguments;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ public function refactor(Node $node): ?FuncCall
*/
public function configure(array $configuration): void
{
$functionArgumentSwaps = $configuration[self::FUNCTION_ARGUMENT_SWAPS] ?? [];
$functionArgumentSwaps = $configuration[self::FUNCTION_ARGUMENT_SWAPS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($functionArgumentSwaps, SwapFuncCallArguments::class);
$this->functionArgumentSwaps = $functionArgumentSwaps;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public function refactor(Node $node): ?Node
*/
public function configure(array $configuration): void
{
$groupNamesBySuffix = $configuration[self::GROUP_NAMES_BY_SUFFIX] ?? [];
$groupNamesBySuffix = $configuration[self::GROUP_NAMES_BY_SUFFIX] ?? ($configuration ?: []);
Assert::allString($groupNamesBySuffix);

$this->groupNamesBySuffix = $groupNamesBySuffix;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use Rector\FileSystemRector\ValueObjectFactory\AddedFileWithNodesFactory;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use Webmozart\Assert\Assert;

/**
* Inspiration @see https://github.com/rectorphp/rector/pull/1865/files#diff-0d18e660cdb626958662641b491623f8
Expand Down Expand Up @@ -50,7 +51,7 @@ final class MoveValueObjectsToValueObjectDirectoryRector extends AbstractRector
private bool $enableValueObjectGuessing = true;

/**
* @var class-string[]
* @var string[]
*/
private array $types = [];

Expand Down Expand Up @@ -154,9 +155,19 @@ public function refactor(Node $node): ?Node
*/
public function configure(array $configuration): void
{
$this->types = $configuration[self::TYPES] ?? [];
$this->suffixes = $configuration[self::SUFFIXES] ?? [];
$this->enableValueObjectGuessing = $configuration[self::ENABLE_VALUE_OBJECT_GUESSING] ?? false;
$types = $configuration[self::TYPES] ?? [];
Assert::isArray($types);
Assert::allString($types);
$this->types = $types;

$suffixes = $configuration[self::SUFFIXES] ?? [];
Assert::isArray($suffixes);
Assert::allString($suffixes);
$this->suffixes = $suffixes;

$enableValueObjectGuessing = $configuration[self::ENABLE_VALUE_OBJECT_GUESSING] ?? false;
Assert::boolean($enableValueObjectGuessing);
$this->enableValueObjectGuessing = $enableValueObjectGuessing;
}

private function isValueObjectMatch(Class_ $class): bool
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ public function refactor(Node $node): ?Node
*/
public function configure(array $configuration): void
{
$attributesOrder = $configuration[self::ATTRIBUTES_ORDER] ?? [];
$attributesOrder = $configuration[self::ATTRIBUTES_ORDER] ?? ($configuration ?: []);
Assert::isArray($attributesOrder);
Assert::allString($attributesOrder);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ public function refactor(Node $node): ?Node
*/
public function configure(array $configuration): void
{
$methodsToYields = $configuration[self::METHODS_TO_YIELDS] ?? [];
$methodsToYields = $configuration[self::METHODS_TO_YIELDS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($methodsToYields, ReturnArrayClassMethodToYield::class);
$this->methodsToYields = $methodsToYields;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,11 @@ public function refactor(Node $node): ?Node
}

/**
* @param array<string, PreferenceSelfThis[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$typeToPreference = $configuration[self::TYPE_TO_PREFERENCE] ?? [];
$typeToPreference = $configuration[self::TYPE_TO_PREFERENCE] ?? ($configuration ?: []);
Assert::allIsAOf($typeToPreference, PreferenceSelfThis::class);

$this->typeToPreference = $typeToPreference;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public function getRuleDefinition(): RuleDefinition
*/
public function configure(array $configuration): void
{
$packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? [];
$packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($packagesAndVersions, PackageAndVersion::class);

$this->versionGuard->validate($packagesAndVersions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public function getRuleDefinition(): RuleDefinition
*/
public function configure(array $configuration): void
{
$packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? [];
$packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($packagesAndVersions, PackageAndVersion::class);

$this->versionGuard->validate($packagesAndVersions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public function getRuleDefinition(): RuleDefinition
*/
public function configure(array $configuration): void
{
$packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? [];
$packagesAndVersions = $configuration[self::PACKAGES_AND_VERSIONS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($packagesAndVersions, PackageAndVersion::class);

$this->versionGuard->validate($packagesAndVersions);
Expand Down
10 changes: 8 additions & 2 deletions rules/Composer/Rector/RemovePackageComposerRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use Symplify\ComposerJsonManipulator\ValueObject\ComposerJson;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use Webmozart\Assert\Assert;

/**
* @see \Rector\Tests\Composer\Rector\RemovePackageComposerRector\RemovePackageComposerRectorTest
Expand Down Expand Up @@ -55,10 +56,15 @@ public function getRuleDefinition(): RuleDefinition
}

/**
* @param array<string, string[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$this->packageNames = $configuration[self::PACKAGE_NAMES] ?? [];
$packagesNames = $configuration[self::PACKAGE_NAMES] ?? ($configuration ?: []);

Assert::isArray($packagesNames);
Assert::allString($packagesNames);

$this->packageNames = $packagesNames;
}
}
2 changes: 1 addition & 1 deletion rules/Composer/Rector/RenamePackageComposerRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public function getRuleDefinition(): RuleDefinition
*/
public function configure(array $configuration): void
{
$renamePackages = $configuration[self::RENAME_PACKAGES] ?? [];
$renamePackages = $configuration[self::RENAME_PACKAGES] ?? ($configuration ?: []);
Assert::allIsInstanceOf($renamePackages, RenamePackage::class);
$this->renamePackages = $renamePackages;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ public function getRuleDefinition(): RuleDefinition
*/
public function configure(array $configuration): void
{
$replacePackagesAndVersions = $configuration[self::REPLACE_PACKAGES_AND_VERSIONS] ?? [];
$replacePackagesAndVersions = $configuration[self::REPLACE_PACKAGES_AND_VERSIONS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($replacePackagesAndVersions, ReplacePackageAndVersion::class);

$this->versionGuard->validate($replacePackagesAndVersions);
Expand Down
2 changes: 1 addition & 1 deletion rules/DeadCode/Rector/ClassLike/RemoveAnnotationRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ public function refactor(Node $node): ?Node
*/
public function configure(array $configuration): void
{
$annotationsToRemove = $configuration[self::ANNOTATIONS_TO_REMOVE] ?? [];
$annotationsToRemove = $configuration[self::ANNOTATIONS_TO_REMOVE] ?? ($configuration ?: []);
Assert::allString($annotationsToRemove);

$this->annotationsToRemove = $annotationsToRemove;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
use Rector\Core\ValueObject\MethodName;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use Webmozart\Assert\Assert;

/**
* @see \Rector\Tests\DependencyInjection\Rector\ClassMethod\AddMethodParentCallRector\AddMethodParentCallRectorTest
Expand Down Expand Up @@ -113,11 +114,16 @@ public function refactor(Node $node): ?Node
}

/**
* @param array<string, array<string, string>> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$this->methodByParentTypes = $configuration[self::METHODS_BY_PARENT_TYPES] ?? [];
$methodsByParentTypes = $configuration[self::METHODS_BY_PARENT_TYPES] ?? ($configuration ?: []);
Assert::allString(array_keys($methodsByParentTypes));
Assert::allString($methodsByParentTypes);

/** @var array<string, string> $methodsByParentTypes */
$this->methodByParentTypes = $methodsByParentTypes;
}

private function shouldSkipMethod(ClassMethod $classMethod, string $method): bool
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,12 +143,12 @@ public function refactor(Node $node): ?Node
*/
public function configure(array $configuration): void
{
$safeTypes = $configuration[self::SAFE_TYPES] ?? [];
$safeTypes = $configuration[self::SAFE_TYPES] ?? ($configuration ?: []);
Assert::isArray($safeTypes);
Assert::allString($safeTypes);
$this->safeTypes = $safeTypes;

$safeTypesToMethods = $configuration[self::SAFE_TYPES_TO_METHODS] ?? [];
$safeTypesToMethods = $configuration[self::SAFE_TYPES_TO_METHODS] ?? ($configuration ?: []);
Assert::isArray($safeTypesToMethods);
foreach ($safeTypesToMethods as $key => $value) {
Assert::string($key);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ public function refactor(Node $node): ?Node
*/
public function configure(array $configuration): void
{
$attributesToAnnotations = $configuration[self::ATTRIBUTE_TO_ANNOTATION] ?? [];
$attributesToAnnotations = $configuration[self::ATTRIBUTE_TO_ANNOTATION] ?? ($configuration ?: []);
Assert::allIsInstanceOf($attributesToAnnotations, DowngradeAttributeToAnnotation::class);

$this->attributesToAnnotations = $attributesToAnnotations;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,11 +123,11 @@ final class SomeClass implements SomeInterface
}

/**
* @param array<string, GenericClassMethodParam[]> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$makeClassMethodGenerics = $configuration[self::GENERIC_CLASS_METHOD_PARAMS] ?? [];
$makeClassMethodGenerics = $configuration[self::GENERIC_CLASS_METHOD_PARAMS] ?? ($configuration ?: []);
Assert::allIsAOf($makeClassMethodGenerics, GenericClassMethodParam::class);

$this->genericClassMethodParams = $makeClassMethodGenerics;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public function refactor(Node $node): ?Node
*/
public function configure(array $configuration): void
{
$classesToSkip = $configuration[self::CLASSES_TO_SKIP] ?? [];
$classesToSkip = $configuration[self::CLASSES_TO_SKIP] ?? ($configuration ?: []);
Assert::allString($classesToSkip);

$this->classesToSkip = $classesToSkip;
Expand Down
11 changes: 9 additions & 2 deletions rules/Php71/Rector/Name/ReservedObjectRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use Webmozart\Assert\Assert;

/**
* @changelog https://wiki.php.net/rfc/object-typehint https://github.com/cebe/yii2/commit/9548a212ecf6e50fcdb0e5ba6daad88019cfc544
Expand Down Expand Up @@ -88,11 +89,17 @@ public function refactor(Node $node): ?Node
}

/**
* @param array<string, array<string, string>> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$this->reservedKeywordsToReplacements = $configuration[self::RESERVED_KEYWORDS_TO_REPLACEMENTS] ?? [];
$reservedKeywordsToReplacements = $configuration[self::RESERVED_KEYWORDS_TO_REPLACEMENTS] ?? ($configuration ?: []);

Assert::isArray($reservedKeywordsToReplacements);
Assert::allString(array_keys($reservedKeywordsToReplacements));
Assert::allString($reservedKeywordsToReplacements);

$this->reservedKeywordsToReplacements = $reservedKeywordsToReplacements;
}

private function processIdentifier(Identifier $identifier): Identifier
Expand Down
11 changes: 9 additions & 2 deletions rules/Php74/Rector/Function_/ReservedFnFunctionRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use Rector\VersionBonding\Contract\MinPhpVersionInterface;
use Symplify\RuleDocGenerator\ValueObject\CodeSample\ConfiguredCodeSample;
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
use Webmozart\Assert\Assert;

/**
* @changelog https://github.com/php/php-src/pull/3941/files#diff-7e3a1a5df28a1cbd8c0fb6db68f243da
Expand Down Expand Up @@ -112,10 +113,16 @@ public function refactor(Node $node): ?Node
}

/**
* @param array<string, array<string, string>> $configuration
* @param mixed[] $configuration
*/
public function configure(array $configuration): void
{
$this->reservedNamesToNewOnes = $configuration[self::RESERVED_NAMES_TO_NEW_ONES] ?? [];
$reservedNamesToNewOnes = $configuration[self::RESERVED_NAMES_TO_NEW_ONES] ?? ($configuration ?: []);

Assert::allString(array_keys($reservedNamesToNewOnes));
Assert::allString($reservedNamesToNewOnes);

/** @var array<string, string> $reservedNamesToNewOnes */
$this->reservedNamesToNewOnes = $reservedNamesToNewOnes;
}
}
2 changes: 1 addition & 1 deletion rules/Php80/Rector/Class_/AnnotationToAttributeRector.php
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ public function refactor(Node $node): ?Node
*/
public function configure(array $configuration): void
{
$annotationsToAttributes = $configuration[self::ANNOTATION_TO_ATTRIBUTE] ?? [];
$annotationsToAttributes = $configuration[self::ANNOTATION_TO_ATTRIBUTE] ?? ($configuration ?: []);
Assert::allIsInstanceOf($annotationsToAttributes, AnnotationToAttribute::class);
$this->annotationsToAttributes = $annotationsToAttributes;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ public function refactor(Node $node): ?Node
*/
public function configure(array $configuration): void
{
$this->replaceStringWithClassConstants = $configuration[self::REPLACE_STRING_WITH_CLASS_CONSTANT] ?? [];
$this->replaceStringWithClassConstants = $configuration[self::REPLACE_STRING_WITH_CLASS_CONSTANT] ?? ($configuration ?: []);
}

private function matchArg(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public function refactor(Node $node): MethodCall | StaticCall | ClassMethod
*/
public function configure(array $configuration): void
{
$removedArguments = $configuration[self::REMOVED_ARGUMENTS] ?? [];
$removedArguments = $configuration[self::REMOVED_ARGUMENTS] ?? ($configuration ?: []);
Assert::allIsInstanceOf($removedArguments, ArgumentRemover::class);
$this->removedArguments = $removedArguments;
}
Expand Down
Loading

0 comments on commit 3844627

Please sign in to comment.