mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from .luaplugin import LuaPlugin
|
|
from typing import List
|
|
import glob
|
|
from pathlib import Path
|
|
import json
|
|
import logging
|
|
|
|
|
|
class LuaPluginManager():
|
|
PLUGINS_RESOURCE_PATH = Path("resources/plugins")
|
|
PLUGINS_LIST_FILENAME = "plugins.json"
|
|
PLUGINS_JSON_FILENAME = "plugin.json"
|
|
|
|
__plugins = None
|
|
def __init__(self):
|
|
if not LuaPluginManager.__plugins:
|
|
LuaPluginManager.__plugins= []
|
|
jsonFile:Path = Path(LuaPluginManager.PLUGINS_RESOURCE_PATH, LuaPluginManager.PLUGINS_LIST_FILENAME)
|
|
if jsonFile.exists():
|
|
logging.info(f"Reading plugins list from {jsonFile}")
|
|
|
|
jsonData = json.loads(jsonFile.read_text())
|
|
for plugin in jsonData:
|
|
jsonPluginFolder = Path(LuaPluginManager.PLUGINS_RESOURCE_PATH, plugin)
|
|
jsonPluginFile = Path(jsonPluginFolder, LuaPluginManager.PLUGINS_JSON_FILENAME)
|
|
if jsonPluginFile.exists():
|
|
logging.info(f"Reading plugin {plugin} from {jsonPluginFile}")
|
|
plugin = LuaPlugin(jsonPluginFile)
|
|
LuaPluginManager.__plugins.append(plugin)
|
|
else:
|
|
logging.error(f"Missing configuration file {jsonPluginFile} for plugin {plugin}")
|
|
else:
|
|
logging.error(f"Missing plugins list file {jsonFile}")
|
|
|
|
def getPlugins(self):
|
|
return LuaPluginManager.__plugins
|
|
|
|
def getPlugin(self, pluginName):
|
|
for plugin in LuaPluginManager.__plugins:
|
|
if plugin.mnemonic == pluginName:
|
|
return plugin
|
|
|
|
return None |