Improved enterprise IT (#497)

This commit is contained in:
Thorsten Sommer authored and GitHub committed 2025-06-09 14:06:54 +02:00
1 parent 7a498d524e
commit 32e1ab977d
9 files changed
+200 -21

No files matched your search

@@ -13,6 +13,7 @@ public static partial class PluginFactory
private static string PLUGINS_ROOT = string.Empty;
private static string INTERNAL_PLUGINS_ROOT = string.Empty;
private static string CONFIGURATION_PLUGINS_ROOT = string.Empty;
private static string HOT_RELOAD_LOCK_FILE = string.Empty;
private static FileSystemWatcher HOT_RELOAD_WATCHER = null!;
private static ILanguagePlugin BASE_LANGUAGE_PLUGIN = NoPluginLanguage.INSTANCE;
@@ -30,6 +31,7 @@ public static partial class PluginFactory
LOG.LogInformation("Initializing plugin factory...");
DATA_DIR = SettingsManager.DataDirectory!;
PLUGINS_ROOT = Path.Join(DATA_DIR, "plugins");
HOT_RELOAD_LOCK_FILE = Path.Join(PLUGINS_ROOT, ".lock");
INTERNAL_PLUGINS_ROOT = Path.Join(PLUGINS_ROOT, ".internal");
CONFIGURATION_PLUGINS_ROOT = Path.Join(PLUGINS_ROOT, ".config");
@@ -41,6 +43,51 @@ public static partial class PluginFactory
LOG.LogInformation("Plugin factory initialized successfully.");
return true;
}
private static async Task LockHotReloadAsync()
{
if (!IS_INITIALIZED)
{
LOG.LogError("PluginFactory is not initialized.");
return;
}
try
{
if (File.Exists(HOT_RELOAD_LOCK_FILE))
{
LOG.LogWarning("Hot reload lock file already exists.");
return;
}
await File.WriteAllTextAsync(HOT_RELOAD_LOCK_FILE, DateTime.UtcNow.ToString("o"));
}
catch (Exception e)
{
LOG.LogError(e, "An error occurred while trying to lock hot reloading.");
}
}
private static void UnlockHotReload()
{
if (!IS_INITIALIZED)
{
LOG.LogError("PluginFactory is not initialized.");
return;
}
try
{
if(File.Exists(HOT_RELOAD_LOCK_FILE))
File.Delete(HOT_RELOAD_LOCK_FILE);
else
LOG.LogWarning("Hot reload lock file does not exist. Nothing to unlock.");
}
catch (Exception e)
{
LOG.LogError(e, "An error occurred while trying to unlock hot reloading.");
}
}
public static void Dispose()
{