mirror of
https://github.com/rectorphp/rector.git
synced 2024-06-03 09:50:49 +00:00
27fd5c38cf
2d4ac92120
use rector as dependency, its the only way to see the bug
112 lines
5.7 KiB
Plaintext
112 lines
5.7 KiB
Plaintext
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Rector\Core\Configuration\Option;
|
|
use Rector\Core\ValueObject\PhpVersion;
|
|
use Rector\Php55\Rector\String_\StringClassNameToClassConstantRector;
|
|
use Rector\PostRector\Rector\NameImportingPostRector;
|
|
use Ssch\TYPO3Rector\Configuration\Typo3Option;
|
|
use Ssch\TYPO3Rector\FileProcessor\Composer\Rector\ExtensionComposerRector;
|
|
use Ssch\TYPO3Rector\FileProcessor\TypoScript\Rector\FileIncludeToImportStatementTypoScriptRector;
|
|
use Ssch\TYPO3Rector\Rector\v9\v0\InjectAnnotationRector;
|
|
use Ssch\TYPO3Rector\Rector\General\ConvertImplicitVariablesToExplicitGlobalsRector;
|
|
use Ssch\TYPO3Rector\Rector\General\ExtEmConfRector;
|
|
use Ssch\TYPO3Rector\Set\Typo3LevelSetList;
|
|
use Ssch\TYPO3Rector\FileProcessor\TypoScript\Rector\ExtbasePersistenceTypoScriptRector;
|
|
|
|
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
|
|
|
|
return static function (ContainerConfigurator $containerConfigurator): void {
|
|
$parameters = $containerConfigurator->parameters();
|
|
|
|
$containerConfigurator->import(Typo3LevelSetList::UP_TO_TYPO3_11);
|
|
|
|
// In order to have a better analysis from phpstan we teach it here some more things
|
|
$parameters->set(Option::PHPSTAN_FOR_RECTOR_PATH, Typo3Option::PHPSTAN_FOR_RECTOR_PATH);
|
|
|
|
// FQN classes are not imported by default. If you don't do it manually after every Rector run, enable it by:
|
|
$parameters->set(Option::AUTO_IMPORT_NAMES, true);
|
|
|
|
// this will not import root namespace classes, like \DateTime or \Exception
|
|
$parameters->set(Option::IMPORT_SHORT_CLASSES, false);
|
|
|
|
// this will not import classes used in PHP DocBlocks, like in /** @var \Some\Class */
|
|
$parameters->set(Option::IMPORT_DOC_BLOCKS, false);
|
|
|
|
// Define your target version which you want to support
|
|
$parameters->set(Option::PHP_VERSION_FEATURES, PhpVersion::PHP_74);
|
|
|
|
// If you have an editorconfig and changed files should keep their format enable it here
|
|
// $parameters->set(Option::ENABLE_EDITORCONFIG, true);
|
|
|
|
// If you only want to process one/some TYPO3 extension(s), you can specify its path(s) here.
|
|
// If you use the option --config change __DIR__ to getcwd()
|
|
// $parameters->set(Option::PATHS, [
|
|
// __DIR__ . '/packages/acme_demo/',
|
|
// ]);
|
|
|
|
// If you use the option --config change __DIR__ to getcwd()
|
|
$parameters->set(Option::SKIP, [
|
|
// @see https://github.com/sabbelasichon/typo3-rector/issues/2536
|
|
__DIR__ . '/**/Configuration/ExtensionBuilder/*',
|
|
// We skip those directories on purpose as there might be node_modules or similar
|
|
// that include typescript which would result in false positive processing
|
|
__DIR__ . '/**/Resources/**/node_modules/*',
|
|
__DIR__ . '/**/Resources/**/NodeModules/*',
|
|
__DIR__ . '/**/Resources/**/BowerComponents/*',
|
|
__DIR__ . '/**/Resources/**/bower_components/*',
|
|
__DIR__ . '/**/Resources/**/build/*',
|
|
]);
|
|
|
|
// This is used by the class \Ssch\TYPO3Rector\Rector\PostRector\FullQualifiedNamePostRector to force FQN in this paths and files
|
|
$parameters->set(Typo3Option::PATHS_FULL_QUALIFIED_NAMESPACES, [
|
|
# If you are targeting TYPO3 Version 11 use can now use Short namespace
|
|
# @see namespace https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ExtensionArchitecture/ConfigurationFiles/Index.html
|
|
'ext_localconf.php',
|
|
'ext_tables.php',
|
|
'ClassAliasMap.php',
|
|
__DIR__ . '/**/Configuration/*.php',
|
|
__DIR__ . '/**/Configuration/**/*.php',
|
|
]);
|
|
|
|
// If you have trouble that rector cannot run because some TYPO3 constants are not defined add an additional constants file
|
|
// @see https://github.com/sabbelasichon/typo3-rector/blob/master/typo3.constants.php
|
|
// @see https://github.com/rectorphp/rector/blob/main/docs/static_reflection_and_autoload.md#include-files
|
|
// $parameters->set(Option::BOOTSTRAP_FILES, [
|
|
// __DIR__ . '/typo3.constants.php'
|
|
// ]);
|
|
|
|
// get services (needed for register a single rule)
|
|
$services = $containerConfigurator->services();
|
|
|
|
// register a single rule
|
|
// $services->set(InjectAnnotationRector::class);
|
|
|
|
/**
|
|
* Useful rule from RectorPHP itself to transform i.e. GeneralUtility::makeInstance('TYPO3\CMS\Core\Log\LogManager')
|
|
* to GeneralUtility::makeInstance(\TYPO3\CMS\Core\Log\LogManager::class) calls.
|
|
* But be warned, sometimes it produces false positives (edge cases), so watch out
|
|
*/
|
|
// $services->set(StringClassNameToClassConstantRector::class);
|
|
|
|
// Optional non-php file functionalities:
|
|
// @see https://github.com/sabbelasichon/typo3-rector/blob/main/docs/beyond_php_file_processors.md
|
|
|
|
// Adapt your composer.json dependencies to the latest available version for the defined SetList
|
|
// $containerConfigurator->import(Typo3SetList::COMPOSER_PACKAGES_104_CORE);
|
|
// $containerConfigurator->import(Typo3SetList::COMPOSER_PACKAGES_104_EXTENSIONS);
|
|
|
|
// Rewrite your extbase persistence class mapping from typoscript into php according to official docs.
|
|
// This processor will create a summarized file with all of the typoscript rewrites combined into a single file.
|
|
// The filename can be passed as argument, "Configuration_Extbase_Persistence_Classes.php" is default.
|
|
// $services->set(ExtbasePersistenceTypoScriptRector::class);
|
|
// Add some general TYPO3 rules
|
|
$services->set(ConvertImplicitVariablesToExplicitGlobalsRector::class);
|
|
$services->set(ExtEmConfRector::class);
|
|
$services->set(ExtensionComposerRector::class);
|
|
|
|
// Do you want to modernize your TypoScript include statements for files and move from <INCLUDE /> to @import use the FileIncludeToImportStatementVisitor
|
|
// $services->set(FileIncludeToImportStatementTypoScriptRector::class);
|
|
};
|