Skip to content

Commit c126992

Browse files
committed
🎉 Unclear initial code
0 parents  commit c126992

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed

‎info.json‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"name": "DevTools",
3+
"api_version": "0.0.1",
4+
"main": "main.Main",
5+
"version": "0.0.1",
6+
"description": "Simple plugin that helps to make another one",
7+
"author": "HunterAzar"
8+
}

‎main.py‎

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import importlib
2+
import importlib.util
3+
import json
4+
import sys
5+
from podrum.plugin_manager import plugin_manager
6+
from podrum.version import version
7+
from podrum.server import server
8+
from podrum.console.logger import logger
9+
import os
10+
import shutil
11+
12+
class Main:
13+
def __init__(self):
14+
self.logger: logger = logger()
15+
16+
self.server: server
17+
18+
self.plugin_folder_path: str = os.path.join(os.getcwd(),"plugins")
19+
20+
self.loaded_plugins:list = []
21+
22+
23+
24+
def on_load(self):
25+
self.logger.info("DevTools is on fire!!!")
26+
self.getAllFolders()
27+
28+
def on_unload(self):
29+
self.logger.notice("Goodbye my friend :)")
30+
31+
def toxic_load(self,path:str) -> int:
32+
plugin_info:dict = json.load(open(os.path.join(path,"info.json"),'r'))
33+
name = plugin_info["name"]
34+
file_name,class_name = plugin_info["main"].rsplit(".",1)
35+
plugin_version = plugin_info["version"]
36+
if(plugin_info["name"] in self.loaded_plugins):
37+
return 0
38+
self.logger.notice(f"Getting plugin {name} infos...")
39+
40+
if(plugin_info["api_version"] != version.podrum_api_version):
41+
self.logger.warn(f"Plugin "+ plugin_info["name"]+ " can't be loaded due to bad plugin API version. ")
42+
self.logger.warn(f"Plugin API version "+ plugin_info["api_version"])
43+
self.logger.warn(f"Required API version {version.podrum_api_version}")
44+
return 1
45+
if(plugin_info["name"] in self.server.managers.plugin_manager.plugins):
46+
self.logger.info("Unloading stage 1/1 ...")
47+
del self.server.managers.plugin_manager.plugins[plugin_info["name"]]
48+
49+
# self.logger.info("Making new ZIP file")
50+
# shutil.make_archive(f"{name}_{plugin_version}","zip",path)
51+
# shutil.move(f"{name}_{plugin_version}.zip",f"plugins/{name}_{plugin_version}.zip")
52+
# self.logger.success("Successfully maked ZIP file")
53+
54+
self.logger.info("Server please load this plugin now...")
55+
#self.server.managers.plugin_manager.load(f"{self.server.get_root_path()}\\..\\plugins\\{name}_{plugin_version}.zip")
56+
spec = importlib.util.spec_from_file_location(f"{class_name}",f"{path}\{file_name}.py")
57+
prev_main_class = spec.loader.load_module(spec.name)
58+
main_class = getattr(prev_main_class,class_name)
59+
self.server.managers.plugin_manager.plugins[plugin_info["name"]] = main_class()
60+
self.server.managers.plugin_manager.plugins[plugin_info["name"]].server = self.server
61+
self.server.managers.plugin_manager.plugins[plugin_info["name"]].path = path
62+
self.server.managers.plugin_manager.plugins[plugin_info["name"]].version = plugin_info["version"]
63+
self.server.managers.plugin_manager.plugins[plugin_info["name"]].description = plugin_info["description"]
64+
self.server.managers.plugin_manager.plugins[plugin_info["name"]].author = plugin_info["author"]
65+
if(hasattr(main_class,"on_load")):
66+
self.server.managers.plugin_manager.plugins[plugin_info["name"]].on_load()
67+
68+
self.logger.success("Thank you server for loading "+plugin_info["name"])
69+
return 0
70+
71+
def getAllFolders(self) -> None:
72+
howMuch = 0
73+
for dirs in os.listdir(self.plugin_folder_path):
74+
if os.path.isdir(os.path.join(self.plugin_folder_path,dirs)):
75+
if(dirs != "DevTools"):
76+
self.logger.info(f"Loading {os.path.join(self.plugin_folder_path,dirs)} plugin")
77+
if(self.toxic_load(os.path.join(self.plugin_folder_path,dirs))==0):
78+
howMuch=howMuch+1
79+
if howMuch!=0:
80+
self.logger.info(f"Loaded {howMuch} plugins")
81+
else:
82+
self.logger.info("There is no plugins to load")

0 commit comments

Comments
 (0)