Files
AutozShell/chatmode.py
2024-07-08 15:14:30 +08:00

140 lines
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)