mirror of
https://gitea.com/Lerking/XtendR.git
synced 2025-07-21 12:41:17 +02:00
0.0.3
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
from xtendr.xtendr import XtendR
|
||||
from xtendr.xtendrsystem import XtendRSystem
|
||||
|
||||
if __name__ == "__main__":
|
||||
"""Example usage of the PluginSystem.
|
||||
@@ -14,7 +14,7 @@ if __name__ == "__main__":
|
||||
>>> system.detach("example_plugin")
|
||||
Detached plugin 'example_plugin'.
|
||||
"""
|
||||
system = XtendR()
|
||||
system = XtendRSystem()
|
||||
system.attach("example_plugin") # Assuming 'example_plugin/plugin_info.json' exists
|
||||
system.run("example_plugin")
|
||||
system.stop("example_plugin")
|
||||
|
@@ -2,5 +2,6 @@
|
||||
"name": "Example Plugin",
|
||||
"version": "1.0",
|
||||
"module": "example_plugin",
|
||||
"class": "ExamplePlugin",
|
||||
"description": "An example plugin that prints a message."
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
from xtendr import XtendRBase
|
||||
from xtendr.xtendrbase import XtendRBase
|
||||
|
||||
class ExamplePlugin(XtendRBase):
|
||||
"""Example plugin implementation.
|
2
setup.py
2
setup.py
@@ -3,7 +3,7 @@ if __name__ == "__main__":
|
||||
|
||||
setup(
|
||||
name="XtendR",
|
||||
version="0.0.1",
|
||||
version="0.0.3",
|
||||
packages=find_packages(),
|
||||
install_requires=[],
|
||||
author="Jan Lerking",
|
||||
|
@@ -1 +1,2 @@
|
||||
import xtendr
|
||||
from . import xtendrbase
|
||||
from . import xtendrsystem
|
29
xtendr/xtendrbase.py
Normal file
29
xtendr/xtendrbase.py
Normal 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
|
@@ -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.")
|
Reference in New Issue
Block a user