This commit is contained in:
2025-02-21 21:34:10 +01:00
parent e1516e8b45
commit f21433417d
7 changed files with 41 additions and 32 deletions
+2 -1
View File
@@ -1 +1,2 @@
import xtendr
from . import xtendrbase
from . import xtendrsystem
+29
View File
@@ -0,0 +1,29 @@
import importlib
import sys
import os
import json
from abc import ABC, abstractmethod
class XtendRBase(ABC):
"""Abstract base class for all plugins.
Example:
>>> class TestPlugin(XtendRBase):
... def run(self):
... print("Running TestPlugin")
... def stop(self):
... print("Stopping TestPlugin")
>>> plugin = TestPlugin()
>>> plugin.run()
Running TestPlugin
>>> plugin.stop()
Stopping TestPlugin
"""
@abstractmethod
def run(self):
pass
@abstractmethod
def stop(self):
pass
+5 -27
View File
@@ -3,32 +3,9 @@ import sys
import os
import json
from abc import ABC, abstractmethod
from xtendr.xtendrbase import XtendRBase
class XtendRBase(ABC):
"""Abstract base class for all plugins.
Example:
>>> class TestPlugin(XtendRBase):
... def run(self):
... print("Running TestPlugin")
... def stop(self):
... print("Stopping TestPlugin")
>>> plugin = TestPlugin()
>>> plugin.run()
Running TestPlugin
>>> plugin.stop()
Stopping TestPlugin
"""
@abstractmethod
def run(self):
pass
@abstractmethod
def stop(self):
pass
class XtendR:
class XtendRSystem:
"""Plugin system to manage plugins.
Example:
@@ -50,8 +27,9 @@ class XtendR:
print(f"Plugin '{name}' is already attached.")
return
plugin_path = os.path.join(os.getcwd(), name)
info_path = os.path.join(plugin_path, "plugin_info.json")
plugin_path = os.path.join(os.getcwd(), "plugins", name)
info_path = os.path.join(plugin_path, name + ".json")
print(plugin_path + "\n" + info_path)
if not os.path.isdir(plugin_path) or not os.path.isfile(info_path):
print(f"Failed to attach plugin '{name}', folder or info file not found.")