调整部分前端布局和后端增删改逻辑
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
class DevCommandPresenter:
|
||||
"""
|
||||
开发命令文本渲染器。
|
||||
|
||||
该渲染器负责将 `dev` 命令组产生的结构化 payload 转换为稳定的文本摘要,
|
||||
同时保持 JSON 输出仍由控制器直接返回,不在此处做契约变形。
|
||||
"""
|
||||
|
||||
def build_dev_lint_text(self, payload: dict[str, object]) -> str:
|
||||
"""
|
||||
将 lint 执行结果渲染为文本摘要。
|
||||
|
||||
:param payload: lint 执行结果字典
|
||||
:return: 文本摘要
|
||||
"""
|
||||
targets = payload.get('targets')
|
||||
lines = [
|
||||
f'ok: {str(payload.get("ok", False)).lower()}',
|
||||
f'env: {payload.get("env", "")}',
|
||||
f'check_only: {str(payload.get("checkOnly", False)).lower()}',
|
||||
f'fix: {str(payload.get("fix", False)).lower()}',
|
||||
f'unsafe_fixes: {str(payload.get("unsafeFixes", False)).lower()}',
|
||||
]
|
||||
if isinstance(targets, list) and targets:
|
||||
lines.append('targets:')
|
||||
lines.extend(f' - {target}' for target in targets)
|
||||
else:
|
||||
lines.append('targets: none')
|
||||
lines.extend(self._build_command_result_section('format', payload.get('format')))
|
||||
lines.extend(self._build_command_result_section('check', payload.get('check')))
|
||||
return '\n'.join(lines)
|
||||
|
||||
def build_dev_test_text(self, payload: dict[str, object]) -> str:
|
||||
"""
|
||||
将测试执行结果渲染为文本摘要。
|
||||
|
||||
:param payload: 测试执行结果字典
|
||||
:return: 文本摘要
|
||||
"""
|
||||
targets = payload.get('targets')
|
||||
lines = [
|
||||
f'ok: {str(payload.get("ok", False)).lower()}',
|
||||
f'env: {payload.get("env", "")}',
|
||||
f'keyword: {payload.get("keyword", "") or "-"}',
|
||||
f'maxfail: {payload.get("maxfail", 0)}',
|
||||
f'quiet: {str(payload.get("quiet", False)).lower()}',
|
||||
]
|
||||
if isinstance(targets, list) and targets:
|
||||
lines.append('targets:')
|
||||
lines.extend(f' - {target}' for target in targets)
|
||||
else:
|
||||
lines.append('targets: none')
|
||||
lines.extend(self._build_command_result_section('test', payload.get('test')))
|
||||
return '\n'.join(lines)
|
||||
|
||||
@staticmethod
|
||||
def _build_command_result_section(title: str, payload: dict[str, object] | None) -> list[str]:
|
||||
"""
|
||||
构建单个子命令执行结果段落。
|
||||
|
||||
:param title: 段落标题
|
||||
:param payload: 子命令执行结果
|
||||
:return: 文本行列表
|
||||
"""
|
||||
if not isinstance(payload, dict):
|
||||
return [f'{title}: none']
|
||||
|
||||
lines = [
|
||||
f'{title}:',
|
||||
f' ok: {str(payload.get("ok", False)).lower()}',
|
||||
f' return_code: {payload.get("returnCode", "-")}',
|
||||
f' command: {DevCommandPresenter._format_command_text(payload.get("command"))}',
|
||||
]
|
||||
stdout = payload.get('stdout')
|
||||
stderr = payload.get('stderr')
|
||||
if stdout:
|
||||
lines.append(' stdout:')
|
||||
lines.append(' |')
|
||||
lines.extend(f' {line}' for line in str(stdout).splitlines())
|
||||
if stderr:
|
||||
lines.append(' stderr:')
|
||||
lines.append(' |')
|
||||
lines.extend(f' {line}' for line in str(stderr).splitlines())
|
||||
return lines
|
||||
|
||||
@staticmethod
|
||||
def _format_command_text(command: object) -> str:
|
||||
"""
|
||||
将命令参数列表格式化为可读文本。
|
||||
|
||||
:param command: 命令参数列表
|
||||
:return: 格式化后的命令文本
|
||||
"""
|
||||
if not isinstance(command, list):
|
||||
return '-'
|
||||
return ' '.join(str(item) for item in command) or '-'
|
||||
Reference in New Issue
Block a user