Page MenuHomePhorge

Rector.php configuration to support PHP 8.2 on Arcanist and Phorge (+bash script in comments)

Authored By
valerio.bozzolan
Mar 7 2023, 09:41
Size
3 KB
Referenced Files
None
Subscribers
None

Rector.php configuration to support PHP 8.2 on Arcanist and Phorge (+bash script in comments)

<?php
/**
* Rector.php configuration to remove very legacy PHP < 5.5 stuff from
* Phorge/Phabricator and Arcanist.
*
* Author: (2023) Valerio Bozzolan and contributors
* License: this specific configuration file is not elegible for copyright
* since it's just a configuration
* so I release it under CC0 public domain.
* Task: https://we.phorge.it/T15145
* Source: https://we.phorge.it/P6
*/
declare(strict_types=1);
use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\LevelSetList;
use Rector\Core\ValueObject\PhpVersion;
use Rector\Set\ValueObject\DowngradeLevelSetList;
use Rector\Set\ValueObject\SetList;
return static function (RectorConfig $rectorConfig): void {
// shared directories to be touched by Rector
// these paths exist in both Arcanist and Phorge
$paths = [
__DIR__ . '/bin',
__DIR__ . '/externals',
__DIR__ . '/resources',
__DIR__ . '/scripts',
__DIR__ . '/src',
__DIR__ . '/support',
];
// rare directories to be touched by Rector
// these paths are probably defined in only Arcanist, or only Phorge
$phaths_rare = [
__DIR__ . '/conf',
__DIR__ . '/webroot',
];
// ignore unexisting paths, add existing paths
foreach( $phaths_rare as $path ) {
if( file_exists( $path ) ) {
$paths[] = $path;
}
}
// process just these paths
$rectorConfig->paths( $paths );
// ignore various test cases at the moment
$rectorConfig->skip( [
__DIR__ . '/src/__tests__/' . '**',
__DIR__ . '/src/*/__tests__/' . '**',
] );
// trying to add support to this PHP version and below (PHP 8.2)
$rectorConfig->sets( [
Rector\Set\ValueObject\LevelSetList::UP_TO_PHP_82,
] );
// trying to respect obsolete Phorge's code styles previous to PHP 5.5
$rectorConfig->skip([
// for some reasons we want long "array()" instead of "[]"...
// https://we.phorge.it/book/contrib/article/php_coding_standards/
Rector\Php54\Rector\Array_\LongArrayToShortArrayRector::class,
// avoid to add the PHPDOC "* @return never" since it can be confusing
Rector\TypeDeclaration\Rector\ClassMethod\ReturnNeverTypeRector::class,
]);
// tried to drop the () function that just returns the first argument
// so I tried just renaming this function to an empty space
// so it should do
// - id( new Asd() )
// + ( new Asd() )
// but this is not supported in Rector since it throws an exception
// $rectorConfig->ruleWithConfiguration(RenameFunctionRector::class, [
// 'id' => '',
// ]);
// So it was implemented with a sed
// trying to set the current (and minimum) PHP version to be adopted as base
// https://getrector.com/documentation/php-version-features
// https://we.phorge.it/book/phorge/article/installation_guide/
$rectorConfig->phpVersion(PhpVersion::PHP_55);
// trying to don't destroy my computer that does not have 16 cores but 12
// defaults:
// time: 120
// cores: 16
// jobSize: 20
// https://getrector.com/documentation/troubleshooting-parallel
$rectorConfig->parallel( 120, 12, 20 );
};

File Metadata

Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
175538
Default Alt Text
Rector.php configuration to support PHP 8.2 on Arcanist and Phorge (+bash script in comments) (3 KB)

Event Timeline