The CirrusSearch extension needs to be converted to use the new extension registration system. More details are available on T87875.
The missing parts appear to be:
Profile definitions: $wgCirrusSearchCompletionProfiles & friends. These are global presumably because we want to make them configurable. Potential solution: load them in special handler? Create API to manipulate them from local configs?Default profiles are no longer loaded by CirrusSearch.php. $wgCirrusSearchCompletionProfiles & friends are now by default empty and can be populated by users when they want to customize search profiles. Non-simple values: values that are either function calls or references to other values. E.g. $wgCirrusSearchIndexBaseName = wfWikiID();. Potential solution: set them in handler/hook? The problem is distinguishing between default and override. Another solution: default to null and substitute the real value later, on-demand. For some, like $wgCirrusSearchCompletionGeoContextSettings, we can change the profile value to a profile name.
- Calculated constant values, e.g. $wgCirrusSearchDropDelayedJobsAfter = 60 * 60 * 24 * 2; // 2 days. The main issue is documenting the value and making it clear. Potential solution: separate documentation and possibly @note in the config.
- Lack of support for PHP constants, e.g. when defining $wgCirrusSearchFieldTypes. Potential solution: use string constants that have self-documenting values? TBD.
- Lack of support to specifying class names - e.g. like $wgCirrusSearchFieldTypeOverrides and $wgCirrusSearchFieldTypes use php\class\name::class. Potential solution: so far I can see only converting back to strings. Not ideal, but we have many other contexts where class names are configured as strings.