public static function initializeSystemFileMonitor(Bootstrap $bootstrap)
{
/** @var FileMonitor[] $fileMonitors */
$fileMonitors = ['Flow_ClassFiles' => FileMonitor::createFileMonitorAtBoot('Flow_ClassFiles', $bootstrap), 'Flow_ConfigurationFiles' => FileMonitor::createFileMonitorAtBoot('Flow_ConfigurationFiles', $bootstrap), 'Flow_TranslationFiles' => FileMonitor::createFileMonitorAtBoot('Flow_TranslationFiles', $bootstrap)];
$context = $bootstrap->getContext();
/** @var PackageManagerInterface $packageManager */
$packageManager = $bootstrap->getEarlyInstance(PackageManagerInterface::class);
$packagesWithConfiguredObjects = static::getListOfPackagesWithConfiguredObjects($bootstrap);
/** @var PackageInterface $package */
foreach ($packageManager->getActivePackages() as $packageKey => $package) {
if ($packageManager->isPackageFrozen($packageKey)) {
continue;
}
self::monitorDirectoryIfItExists($fileMonitors['Flow_ConfigurationFiles'], $package->getConfigurationPath(), '\\.yaml$');
self::monitorDirectoryIfItExists($fileMonitors['Flow_TranslationFiles'], $package->getResourcesPath() . 'Private/Translations/', '\\.xlf');
if (!in_array($packageKey, $packagesWithConfiguredObjects)) {
continue;
}
foreach ($package->getAutoloadPaths() as $autoloadPath) {
self::monitorDirectoryIfItExists($fileMonitors['Flow_ClassFiles'], $autoloadPath, '\\.php$');
}
if ($context->isTesting() && $package instanceof Package) {
/** @var Package $package */
self::monitorDirectoryIfItExists($fileMonitors['Flow_ClassFiles'], $package->getFunctionalTestsPath(), '\\.php$');
}
}
self::monitorDirectoryIfItExists($fileMonitors['Flow_ConfigurationFiles'], FLOW_PATH_CONFIGURATION, '\\.yaml$');
foreach ($fileMonitors as $fileMonitor) {
$fileMonitor->detectChanges();
}
foreach ($fileMonitors as $fileMonitor) {
$fileMonitor->shutdownObject();
}
}