Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f21433417d |
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
from xtendr.xtendr import XtendR
|
from xtendr.xtendrsystem import XtendRSystem
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
"""Example usage of the PluginSystem.
|
"""Example usage of the PluginSystem.
|
||||||
@@ -14,7 +14,7 @@ if __name__ == "__main__":
|
|||||||
>>> system.detach("example_plugin")
|
>>> system.detach("example_plugin")
|
||||||
Detached plugin 'example_plugin'.
|
Detached plugin 'example_plugin'.
|
||||||
"""
|
"""
|
||||||
system = XtendR()
|
system = XtendRSystem()
|
||||||
system.attach("example_plugin") # Assuming 'example_plugin/plugin_info.json' exists
|
system.attach("example_plugin") # Assuming 'example_plugin/plugin_info.json' exists
|
||||||
system.run("example_plugin")
|
system.run("example_plugin")
|
||||||
system.stop("example_plugin")
|
system.stop("example_plugin")
|
||||||
|
|||||||
@@ -2,5 +2,6 @@
|
|||||||
"name": "Example Plugin",
|
"name": "Example Plugin",
|
||||||
"version": "1.0",
|
"version": "1.0",
|
||||||
"module": "example_plugin",
|
"module": "example_plugin",
|
||||||
|
"class": "ExamplePlugin",
|
||||||
"description": "An example plugin that prints a message."
|
"description": "An example plugin that prints a message."
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
from xtendr import XtendRBase
|
from xtendr.xtendrbase import XtendRBase
|
||||||
|
|
||||||
class ExamplePlugin(XtendRBase):
|
class ExamplePlugin(XtendRBase):
|
||||||
"""Example plugin implementation.
|
"""Example plugin implementation.
|
||||||
@@ -3,7 +3,7 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="XtendR",
|
name="XtendR",
|
||||||
version="0.0.1",
|
version="0.0.3",
|
||||||
packages=find_packages(),
|
packages=find_packages(),
|
||||||
install_requires=[],
|
install_requires=[],
|
||||||
author="Jan Lerking",
|
author="Jan Lerking",
|
||||||
|
|||||||
+2
-1
@@ -1 +1,2 @@
|
|||||||
import xtendr
|
from . import xtendrbase
|
||||||
|
from . import xtendrsystem
|
||||||
@@ -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 os
|
||||||
import json
|
import json
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
from xtendr.xtendrbase import XtendRBase
|
||||||
|
|
||||||
class XtendRBase(ABC):
|
class XtendRSystem:
|
||||||
"""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:
|
|
||||||
"""Plugin system to manage plugins.
|
"""Plugin system to manage plugins.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
@@ -50,8 +27,9 @@ class XtendR:
|
|||||||
print(f"Plugin '{name}' is already attached.")
|
print(f"Plugin '{name}' is already attached.")
|
||||||
return
|
return
|
||||||
|
|
||||||
plugin_path = os.path.join(os.getcwd(), name)
|
plugin_path = os.path.join(os.getcwd(), "plugins", name)
|
||||||
info_path = os.path.join(plugin_path, "plugin_info.json")
|
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):
|
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.")
|
print(f"Failed to attach plugin '{name}', folder or info file not found.")
|
||||||
Reference in New Issue
Block a user