This commit is contained in:
2024-07-07 01:16:18 +08:00
commit 49901e616f
60 changed files with 8147 additions and 0 deletions

145
chatmode.py Normal file
View File

@@ -0,0 +1,145 @@
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()
# 获取当前用户和地址
user = os.getlogin()
address = os.getcwd()
# 把inputtext这个变量里的{user}换成user变量
inputtext = themetext.replace("{user}", user)
# 把inputtext这个变量里的{address}换成address变量
inputtext = inputtext.replace("{address}", address)
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)