Spaces:
Runtime error
Runtime error
| """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 {} | |