-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft Add HookConvert #308
base: main
Are you sure you want to change the base?
Draft Add HookConvert #308
Conversation
Thanks for working on this. A few things. We don't need the whole config and setlist changes. We just need the rule, and we need some unit tests to cover the fule (hopefully those will work). If this wont work, we need to add somefunctional testing, but lets try and avoid that. Unit tests are superior. I'll push a few changes to help out (hopefully you allowed maintainer edits on the fork) |
I think we will need a new way to test this, since this also creates extra files. Not sure yet how, but i have some ideas. |
What you could do it create a few before and after files somewhere and share those. Perhaps a simple module would do with a few hooks that would be converted. I have a plan for functionally testing that. :) |
ac2f9cc
to
e0c637e
Compare
How would I run this locally? Since the last three commits it does not execute against core locally now. I think it's from 5fdfdbb |
You need to do the following steps:
Then create a file <?php
declare(strict_types=1);
use Rector\Config\RectorConfig;
return static function (RectorConfig $rectorConfig): void {
// Adjust the set lists to be more granular to your Drupal requirements.
// @todo find out how to only load the relevant rector rules.
// Should we try and load \Drupal::VERSION and check?
$rectorConfig->rule(\DrupalRector\Rector\Convert\HookConvertRector::class);
if (class_exists('DrupalFinder\DrupalFinderComposerRuntime')) {
$drupalFinder = new \DrupalFinder\DrupalFinderComposerRuntime();
} else {
$drupalFinder = new \DrupalFinder\DrupalFinder();
$drupalFinder->locateRoot(__DIR__);
}
$drupalRoot = $drupalFinder->getDrupalRoot();
$rectorConfig->autoloadPaths([
$drupalRoot . '/core',
$drupalRoot . '/modules',
$drupalRoot . '/profiles',
$drupalRoot . '/themes'
]);
$rectorConfig->skip(['*/upgrade_status/tests/modules/*']);
$rectorConfig->fileExtensions(['php', 'module', 'theme', 'install', 'profile', 'inc', 'engine']);
$rectorConfig->importNames(true, false);
$rectorConfig->importShortClasses(false);
}; Then just run rector
|
You could also use |
Thanks! I'll try that. |
That worked, but it's expanding all class names even with $rectorConfig->importShortClasses(true);
Any other changes? The older version was importing them as expected if you review the user conversion issue: https://git.drupalcode.org/project/drupal/-/merge_requests/9890/diffs |
|
A rebase would be great since that would fixup the tests. |
18a242e
to
bd77e4d
Compare
Rebased and fixed codestyle and some glaring phpstan issues. |
phpstan is wrong this is a php-parser v4 codebase not a v5 one. It doesn't work with v5 , I tried already. |
@bbrala we had to revert your last two commits cause it broke the core vs contrib detection as well as some conversions |
Sorry :) thanks. |
Description
Explain the technical implementation of the work done.
To Test
Drupal.org issue
Provide a link to the issue from https://www.drupal.org/project/rector/issues. If no issue exists, please create one and link to this PR.