1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import os
- import shutil
- PATH = os.getcwd() + rf'{os.sep}template'
- class NamingError(BaseException):
- pass
- class ConflictError(BaseException):
- pass
- class Plugin:
- def __init__(self):
- self.dir_list = []
- self.plugin_list = []
- def get_dir(self):
- self.dir_list = os.listdir(PATH)
- return self.dir_list.copy()
- def get_all_plugin(self):
- self.get_dir()
- self.plugin_list = []
- for name in self.dir_list:
- try:
- plugin = os.listdir(f'{PATH}{os.sep}{name}')
- self.plugin_list += [f'{name}{os.sep}{i}' for i in plugin]
- finally:
- pass
- return self.plugin_list.copy()
- def get_plugin(self, index):
- dir_name = self.dir_list[index]
- return [f'{dir_name}{os.sep}{i}' for i in os.listdir(f'{PATH}{os.sep}{dir_name}')]
- def add_plugin(self, index, plugin_dir):
- plugin_name = os.path.split(plugin_dir)[1]
- if plugin_name.startswith('template_') and plugin_name.endswith('.py'):
- dir_name = self.dir_list[index]
- targets_name = f'{PATH}{os.sep}{dir_name}{os.sep}{plugin_name}'
- if os.path.isfile(targets_name):
- raise ConflictError
- shutil.copyfile(plugin_dir, targets_name)
- return self.get_all_plugin()
- else:
- print(plugin_name)
- raise NamingError
- def del_plugin(self, index):
- targets_name = f'{PATH}{os.sep}{self.plugin_list[index]}'
- os.remove(targets_name)
- return self.get_all_plugin()
- def merge_plugin(self, index, plugin_dir):
- plugin_name = os.path.split(plugin_dir)[1]
- targets_name = f'{PATH}{os.sep}{self.dir_list[index]}{os.sep}{plugin_name}'
- name = plugin_name[9:-3]
- with open(targets_name, 'a+') as f:
- with open(plugin_dir, 'r') as g:
- f.write('\n' + g.read().replace('base = None', f'base = {name}'))
- def show_plugin(self, index):
- with open(f'{PATH}{os.sep}{self.plugin_list[index]}') as f:
- code = f.read() + '\n[END]'
- return code, self.plugin_list[index]
|