PinkSky / server /build_mode_editor.py
FreshPixels's picture
Rename build_mode_editor.py to server/build_mode_editor.py
1720b0c verified
Raw
History Blame
2.71 kB
"""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 {}