Fix short-term issues: refactor main.py, test paths, sysmon optional psutil
This commit is contained in:
@@ -5,10 +5,10 @@ import logging
|
|||||||
import asyncio
|
import asyncio
|
||||||
import sys
|
import sys
|
||||||
import signal
|
import signal
|
||||||
|
import argparse
|
||||||
from services.project_engine import ProjectEngine
|
from services.project_engine import ProjectEngine
|
||||||
from services.pyenv_manager import PyEnvManager
|
from services.pyenv_manager import PyEnvManager
|
||||||
from services.proxy_service import ProxyService
|
from services.proxy_service import ProxyService
|
||||||
from services.web_panel.routes import projects
|
|
||||||
import os
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
@@ -34,13 +34,14 @@ from service_manager import ServiceManager
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
class CatFramework:
|
class SenSuFramework:
|
||||||
"""框架主类"""
|
"""框架主类"""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, headless=False):
|
||||||
self.service_manager = ServiceManager()
|
self.service_manager = ServiceManager()
|
||||||
self.is_running = False
|
self.is_running = False
|
||||||
logger.debug("🐱 DreamSu 框架初始化开始")
|
self.headless = headless
|
||||||
|
logger.debug("🐱 SenSu 框架初始化开始")
|
||||||
|
|
||||||
async def initialize(self):
|
async def initialize(self):
|
||||||
"""初始化框架"""
|
"""初始化框架"""
|
||||||
@@ -84,13 +85,17 @@ class CatFramework:
|
|||||||
self.service_manager.register_service("shutdown", shutdown_service)
|
self.service_manager.register_service("shutdown", shutdown_service)
|
||||||
|
|
||||||
# 8. TUI服务
|
# 8. TUI服务
|
||||||
|
if self.headless:
|
||||||
|
logger.info("Headless mode, skip TUI")
|
||||||
|
self.service_manager.register_service("tui", self._create_fallback_tui())
|
||||||
|
else:
|
||||||
try:
|
try:
|
||||||
tui_service = TuiService(base_config, log_service, command_service)
|
tui_service = TuiService(base_config, log_service, command_service)
|
||||||
await tui_service.start()
|
await tui_service.start()
|
||||||
self.service_manager.register_service("tui", tui_service)
|
self.service_manager.register_service("tui", tui_service)
|
||||||
logger.info("TUI服务启动成功")
|
logger.info("TUI服务启动成功")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"TUI服务启动失败,使用命令行模式: {str(e)}")
|
logger.warning(f"TUI服务启动失败: {e}")
|
||||||
self.service_manager.register_service("tui", self._create_fallback_tui())
|
self.service_manager.register_service("tui", self._create_fallback_tui())
|
||||||
|
|
||||||
# 9. 权限服务
|
# 9. 权限服务
|
||||||
@@ -184,10 +189,13 @@ class CatFramework:
|
|||||||
shutdown_service.register_shutdown_handler(self._framework_shutdown_handler)
|
shutdown_service.register_shutdown_handler(self._framework_shutdown_handler)
|
||||||
# 11.7 项目引擎 + 反向代理
|
# 11.7 项目引擎 + 反向代理
|
||||||
try:
|
try:
|
||||||
|
logger.info("> 初始化 项目引擎 中...")
|
||||||
project_engine = ProjectEngine(self.service_manager)
|
project_engine = ProjectEngine(self.service_manager)
|
||||||
await project_engine.start()
|
await project_engine.start()
|
||||||
self.service_manager.register_service("project_engine", project_engine)
|
self.service_manager.register_service("project_engine", project_engine)
|
||||||
self.service_manager.register_service("pyenv", PyEnvManager("data/projects"))
|
pe_mgr = PyEnvManager("data/projects")
|
||||||
|
self.service_manager.register_service("pyenv", pe_mgr)
|
||||||
|
|
||||||
logger.info("> 初始化 反向代理 中...")
|
logger.info("> 初始化 反向代理 中...")
|
||||||
proxy_service = ProxyService(self.service_manager)
|
proxy_service = ProxyService(self.service_manager)
|
||||||
await proxy_service.start()
|
await proxy_service.start()
|
||||||
@@ -198,7 +206,7 @@ class CatFramework:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"引擎/代理初始化跳过: {e}")
|
logger.warning(f"引擎/代理初始化跳过: {e}")
|
||||||
|
|
||||||
logger.info("🎉 DreamSu 初始化完成!")
|
logger.info("🎉 SenSu 初始化完成!")
|
||||||
self.is_running = True
|
self.is_running = True
|
||||||
|
|
||||||
# 显示欢迎日志
|
# 显示欢迎日志
|
||||||
@@ -214,7 +222,7 @@ class CatFramework:
|
|||||||
# 显示欢迎消息
|
# 显示欢迎消息
|
||||||
tui_service = self.service_manager.get_service("tui")
|
tui_service = self.service_manager.get_service("tui")
|
||||||
if hasattr(tui_service, 'show_message'):
|
if hasattr(tui_service, 'show_message'):
|
||||||
tui_service.show_message("🐱 DreamSu 框架 已就绪!\n", "info")
|
tui_service.show_message("🐱 SenSu 框架 已就绪!\n", "info")
|
||||||
tui_service.show_message("====================================\n", "info")
|
tui_service.show_message("====================================\n", "info")
|
||||||
tui_service.show_message("🐱 SenSu 已就绪!", "info")
|
tui_service.show_message("🐱 SenSu 已就绪!", "info")
|
||||||
tui_service.show_message(f"当前 SenSu 版本号 {version}", "info")
|
tui_service.show_message(f"当前 SenSu 版本号 {version}", "info")
|
||||||
@@ -324,7 +332,8 @@ class CatFramework:
|
|||||||
logger.info("进入框架主循环")
|
logger.info("进入框架主循环")
|
||||||
|
|
||||||
# 特殊终端,添加命令行输入处理
|
# 特殊终端,添加命令行输入处理
|
||||||
if not hasattr(self.service_manager.get_service("tui"), 'tui_app'):
|
tui = self.service_manager.get_service("tui")
|
||||||
|
if self.headless or not hasattr(tui, 'tui_app'):
|
||||||
await self._run_cli_mode()
|
await self._run_cli_mode()
|
||||||
else:
|
else:
|
||||||
# 原有的TUI模式
|
# 原有的TUI模式
|
||||||
@@ -395,9 +404,9 @@ class CatFramework:
|
|||||||
logger.error(f"关闭框架时出错: {str(e)}", exc_info=True)
|
logger.error(f"关闭框架时出错: {str(e)}", exc_info=True)
|
||||||
await self._safe_shutdown()
|
await self._safe_shutdown()
|
||||||
|
|
||||||
async def main():
|
async def main(headless=False):
|
||||||
"""主函数"""
|
"""主函数"""
|
||||||
framework = CatFramework()
|
framework = SenSuFramework(headless=headless)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# 初始化框架
|
# 初始化框架
|
||||||
@@ -430,7 +439,10 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
print("\n🐱 主程序启动...")
|
print("\n🐱 主程序启动...")
|
||||||
# 运行主程序
|
# 运行主程序
|
||||||
asyncio.run(main())
|
parser = argparse.ArgumentParser(description="SenSu")
|
||||||
|
parser.add_argument("--headless", action="store_true")
|
||||||
|
args = parser.parse_args()
|
||||||
|
asyncio.run(main(headless=args.headless))
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("\n🐱 接收到键盘中断,关闭...")
|
print("\n🐱 接收到键盘中断,关闭...")
|
||||||
|
|||||||
Reference in New Issue
Block a user