Всем доброго времени суток.
Есть большой модуль к одной из популярных e-commerce платформ. Модуль успешно существует и функционирует.
У заказчика появилось требование сделать возможным т.н. whitelabelling: т.е. заменить все, что связано с конторой заказчика на нечто иное.
Т.е. был модуль
BrandName_PaymentGateway, а необходимо его превратить в
OtherName_PaymentGateway вместе со всем его содержимым. Файлов в модуле много, более 1.5к. А еще больше строковых констант, переменных, неймспейсов и прочего с упоминанием
BrandName.
Собственно, непонятно с какой стороны подойти к задаче, максимально избегая изобретения колеса.
Для PHP кода есть
https://github.com/nikic/PHP-Parser и даже
https://github.com/rectorphp/rector
Для JS, XML и CSS, вероятно, тоже есть подобные вещи.
Вопросы и мысли следующие:
1) Руками с помощью IDE все это делается достаточно быстро, но нужно будет сделать 200+ разных копий - не вариант.
2) До сих пор не найден достаточно универсальный инструмент для работы с текстом на PHP.
3) Есть мысли каким-то образом использовать git (patch) для более гибкой замены кусков кода, даже если искомая строка сместилась (основная ветка модуля активно развивается), чтобы после каждого релиза не переписывать правила замены.
4) Делать зоопарк из библиотек для обработки разных типов файлов - не хочется, тем более не хочется разносить правила замены по разным конфигам.