"""Build Mode Editor — управление режимами сборки""" import os import json from typing import Dict from .config import BUILD_MODES_FILE class BuildModeEditor: def __init__(self, state): self.state = state def list_modes(self) -> str: modes = self._load_all_modes() if not modes: return "📋 Нет сохранённых режимов сборки" lines = ["📋 Режимы сборки:"] for name, config in modes.items(): lines.append(f"- {name}: {config.get('description', 'No description')}") return "\n".join(lines) def show_mode(self, mode_name: str) -> str: modes = self._load_all_modes() mode = modes.get(mode_name) if not mode: return f"❌ Режим '{mode_name}' не найден" return f"📋 {mode_name}:\n```json\n{json.dumps(mode, ensure_ascii=False, indent=2)}\n```" def save_mode(self, mode_name: str, config: Dict = None) -> str: modes = self._load_all_modes() if config is None: config = dict(self.state.build_context) config["description"] = f"Mode created {datetime.now().isoformat()}" modes[mode_name] = config try: with open(BUILD_MODES_FILE, "w", encoding="utf-8") as f: json.dump(modes, f, ensure_ascii=False, indent=2) return f"✅ Режим '{mode_name}' сохранён" except Exception as e: return f"❌ Ошибка сохранения: {e}" def load_mode(self, mode_name: str) -> str: modes = self._load_all_modes() mode = modes.get(mode_name) if not mode: return f"❌ Режим '{mode_name}' не найден" self.state.build_context.update(mode) return f"✅ Режим '{mode_name}' загружен" def delete_mode(self, mode_name: str) -> str: modes = self._load_all_modes() if mode_name not in modes: return f"❌ Режим '{mode_name}' не найден" del modes[mode_name] try: with open(BUILD_MODES_FILE, "w", encoding="utf-8") as f: json.dump(modes, f, ensure_ascii=False, indent=2) return f"🗑️ Режим '{mode_name}' удалён" except Exception as e: return f"❌ Ошибка удаления: {e}" def _load_all_modes(self) -> Dict: if not os.path.exists(BUILD_MODES_FILE): return {} try: with open(BUILD_MODES_FILE, "r", encoding="utf-8") as f: return json.load(f) except: return {}