调整部分前端布局和后端增删改逻辑
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
import getpass
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class RuntimeEnvironmentService:
|
||||
"""
|
||||
CLI 运行时环境服务。
|
||||
|
||||
该服务集中管理后端根目录解析、Python 解释器定位等稳定运行时能力,
|
||||
避免调用方继续依赖零散模块级函数。
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def is_backend_project_dir(project_dir: Path) -> bool:
|
||||
"""
|
||||
判断目录是否为后端项目根目录。
|
||||
|
||||
:param project_dir: 待检查目录
|
||||
:return: 是否为后端项目根目录
|
||||
"""
|
||||
return (
|
||||
(project_dir / 'app.py').exists()
|
||||
and (project_dir / 'config' / 'env.py').exists()
|
||||
and (project_dir / 'cli').is_dir()
|
||||
)
|
||||
|
||||
def get_backend_dir(self) -> str:
|
||||
"""
|
||||
获取后端根目录绝对路径。
|
||||
|
||||
:return: 后端根目录绝对路径
|
||||
"""
|
||||
current_dir = Path.cwd().resolve()
|
||||
if self.is_backend_project_dir(current_dir):
|
||||
return str(current_dir)
|
||||
return os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
@staticmethod
|
||||
def get_python_executable() -> str:
|
||||
"""
|
||||
获取当前 CLI 进程使用的 Python 解释器。
|
||||
|
||||
:return: Python 解释器路径或命令名
|
||||
"""
|
||||
return sys.executable or 'python'
|
||||
|
||||
|
||||
class RuntimeOperatorService:
|
||||
"""
|
||||
CLI 运行时操作者解析服务。
|
||||
|
||||
该服务集中提供当前 CLI 进程的操作者名称解析能力,
|
||||
避免各领域运行时对象继续复制相同的 `getpass.getuser()` 回退逻辑。
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def resolve_operator() -> str:
|
||||
"""
|
||||
解析当前 CLI 操作者名称。
|
||||
|
||||
:return: 操作者名称
|
||||
"""
|
||||
try:
|
||||
return getpass.getuser() or 'shierfeng-cli'
|
||||
except Exception:
|
||||
return 'shierfeng-cli'
|
||||
|
||||
|
||||
RUNTIME_ENVIRONMENT = RuntimeEnvironmentService()
|
||||
RUNTIME_OPERATOR = RuntimeOperatorService()
|
||||
Reference in New Issue
Block a user