140 lines
3.6 KiB
Python
140 lines
3.6 KiB
Python
import os,sys
|
||
import configparser
|
||
from pluginbase import PluginBase
|
||
|
||
|
||
runcanshu = 0
|
||
|
||
|
||
|
||
config = configparser.ConfigParser()
|
||
config.read(os.path.expanduser('~') + '/.ashrc')
|
||
themefile = config.get('ash', 'ash_theme')
|
||
plugin_list = config.get('ash', 'plugin')
|
||
if "," in plugin_list:
|
||
plugin_list = plugin_list.split(",")
|
||
|
||
# 插件
|
||
|
||
plugin_base = PluginBase(package='main.plugins')
|
||
plugin_source = plugin_base.make_plugin_source(searchpath=['./plugin'])
|
||
|
||
def plugin_load():
|
||
config.read(os.path.expanduser('~') + '/.ashrc')
|
||
themefile = config.get('ash', 'ash_theme')
|
||
plugin_list = config.get('ash', 'plugin')
|
||
if "," in plugin_list:
|
||
plugin_list = plugin_list.split(",")
|
||
|
||
if type(plugin_list) == str:
|
||
if plugin_list in plugin_source.list_plugins():
|
||
pass
|
||
else:
|
||
if not plugin_list:
|
||
|
||
if plugin_list != "":
|
||
plugin_source.load_plugin(plugin_list)
|
||
|
||
else:
|
||
for i in plugin_list:
|
||
if i in plugin_source.list_plugins():
|
||
pass
|
||
else:
|
||
if not i == "":
|
||
plugin_source.load_plugin(i)
|
||
|
||
plugin_load()
|
||
|
||
|
||
|
||
|
||
|
||
|
||
themeconfig = configparser.ConfigParser()
|
||
# 获取当前文件的绝对路径
|
||
current_file_path = os.path.abspath(__file__)
|
||
|
||
# 从绝对路径中提取目录
|
||
current_file_dir = os.path.dirname(current_file_path)
|
||
themeconfig.read(current_file_dir+ "/" + "theme" + "/" + themefile + "/" + themefile + ".ini")
|
||
#print(current_file_dir+ "/" + "theme" + "/" + themefile + "/" + themefile + ".ini")
|
||
#print(themeconfig["theme"])
|
||
|
||
|
||
|
||
|
||
|
||
|
||
while True:
|
||
|
||
# 重新加载plugin
|
||
|
||
plugin_load()
|
||
runcanshu = 0
|
||
config.read(os.path.expanduser('~') + '/.ashrc')
|
||
themefile = config.get('ash', 'ash_theme')
|
||
os.system("python3 " + current_file_dir + "/" + "theme/"+ themefile + "/" + "theme.py")
|
||
with open(current_file_dir + "/" + "themetext", "r") as f:
|
||
themetext = f.read()
|
||
|
||
inputtext = themetext
|
||
|
||
text1 = str(input(inputtext))
|
||
if text1 == "exit":
|
||
runcanshu = 1
|
||
sys.exit()
|
||
try:
|
||
if text1[0] == 'c' and text1[1] == 'd':
|
||
# 如果cd后面的路径不存在,则提示错误
|
||
if len(text1) > 2 and not os.path.exists(text1[3:]):
|
||
print("路径不存在")
|
||
else:
|
||
os.chdir(text1[3:])
|
||
|
||
runcanshu = 1
|
||
|
||
except:
|
||
pass
|
||
try:
|
||
if text1[0] == 'a' and text1[1] == 's' and text1[2] == 'h':
|
||
runcanshu = 1
|
||
os.system("python3 " + current_file_dir + "/" + "main.py " + text1[4:])
|
||
except:
|
||
pass
|
||
# 判断输入的内容是否在插件的command_list中,如果在,则执行对应的函数
|
||
for i in plugin_list:
|
||
# print(plugin_source.list_plugins())
|
||
if type(plugin_list) == list:
|
||
if text1 in plugin_source.load_plugin(i).command_list:
|
||
# print(plugin_source.load_plugin(i).command_list)
|
||
plugin_source.load_plugin(i).run(text1)
|
||
|
||
runcanshu = 1
|
||
break
|
||
else:
|
||
if text1 in plugin_source.load_plugin(plugin_list).command_list:
|
||
# print(plugin_source.load_plugin(plugin_list).command_list)
|
||
plugin_source.load_plugin(plugin_list).run(text1)
|
||
|
||
runcanshu = 1
|
||
break
|
||
|
||
try:
|
||
if text1[0] == 'p' and text1[1] == 'c' and text1[2] == 'm' and text1[3] == 'd':
|
||
exec(text1[5:])
|
||
runcanshu = 1
|
||
except IndexError:
|
||
pass
|
||
except (NameError, SyntaxError) as nerror:
|
||
print(repr(nerror))
|
||
|
||
if runcanshu == 1:
|
||
continue
|
||
|
||
|
||
if runcanshu == 0:
|
||
os.system(text1)
|
||
|
||
|
||
|