mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
chore(rector): Add rule to import Nextcloud classes in all files
We skip all files outside of OC/OCA/OCP from "use" auto-import because it’s not always desirable to import classes when they have generic names, so it should be the developer choice. Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
parent
832695d565
commit
28153443a5
1 changed files with 25 additions and 0 deletions
|
|
@ -7,10 +7,32 @@ declare(strict_types=1);
|
|||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
use PhpParser\Node;
|
||||
use Rector\CodingStyle\Contract\ClassNameImport\ClassNameImportSkipVoterInterface;
|
||||
use Rector\Config\RectorConfig;
|
||||
use Rector\StaticTypeMapper\ValueObject\Type\FullyQualifiedObjectType;
|
||||
use Rector\ValueObject\Application\File;
|
||||
|
||||
$nextcloudDir = dirname(__DIR__);
|
||||
|
||||
class NextcloudNamespaceSkipVoter implements ClassNameImportSkipVoterInterface {
|
||||
private array $namespacePrefixes = [
|
||||
'OC',
|
||||
'OCA',
|
||||
'OCP',
|
||||
];
|
||||
public function shouldSkip(File $file, FullyQualifiedObjectType $fullyQualifiedObjectType, Node $node) : bool {
|
||||
foreach ($this->namespacePrefixes as $prefix) {
|
||||
if (str_starts_with($fullyQualifiedObjectType->getClassName(), $prefix . '\\')) {
|
||||
// Import Nextcloud namespaces
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// Skip everything else
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
$config = RectorConfig::configure()
|
||||
->withPaths([
|
||||
$nextcloudDir . '/apps',
|
||||
|
|
@ -30,9 +52,12 @@ $config = RectorConfig::configure()
|
|||
])
|
||||
// uncomment to reach your current PHP version
|
||||
// ->withPhpSets()
|
||||
->withImportNames(importShortClasses:false)
|
||||
->withTypeCoverageLevel(0);
|
||||
|
||||
$config->registerService(NextcloudNamespaceSkipVoter::class, tag:ClassNameImportSkipVoterInterface::class);
|
||||
|
||||
/* Ignore all files ignored by git */
|
||||
$ignoredEntries = shell_exec('git status --porcelain --ignored ' . escapeshellarg($nextcloudDir));
|
||||
$ignoredEntries = explode("\n", $ignoredEntries);
|
||||
$ignoredEntries = array_filter($ignoredEntries, static fn (string $line) => str_starts_with($line, '!! '));
|
||||
|
|
|
|||
Loading…
Reference in a new issue