/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/liquidcode/commands/make/entity.py
91 строка
3 KB
User
ci: настроен Black и flake8 для автоматического форматирования кода
04 июл 2026, 08:14
04 июл 2026, 08:14
4778ed6
Код
Авторство
О чём код?
""" Генератор сущностей для LiquidCode. Команда: lcc make:entity <name> [--directory DIR] [--force] [--no-interactive] Интерактивный режим позволяет добавлять поля по одному. """ import argparse from ..base import ( generate_from_template, TemplateError, normalize_class_name, ask_fields, normalize_field_type, ) def configure_parser(subparser: argparse.ArgumentParser) -> None: """ Добавляет аргументы для команды make:entity. Args: subparser: Объект ArgumentParser для команды. """ subparser.add_argument("name", nargs="?", help="Имя сущности (например, Product)") subparser.add_argument( "--directory", default="src/Entity", help="Целевая директория (по умолчанию: src/Entity)", ) subparser.add_argument( "--force", action="store_true", help="Перезаписать файл, если он существует", ) subparser.add_argument( "--no-interactive", action="store_true", help="Отключить интерактивный режим (поля не запрашиваются)", ) def run(args: argparse.Namespace) -> None: """ Выполняет команду make:entity. Args: args: Объект аргументов командной строки. """ try: # 1. Имя сущности name = args.name if not name and not args.no_interactive: name = input("Введите имя сущности (например, Product): ").strip() if not name: print("❌ Имя не может быть пустым") return normalized_name = normalize_class_name(name) # 2. Поля: либо из аргументов (если указаны), либо интерактивно fields = [] if not args.no_interactive: print(f"\nСоздание сущности {normalized_name}") print("Добавляйте поля по одному. Для завершения оставьте имя поля пустым.") fields = ask_fields() else: fields = [] # Нормализуем типы полей for field in fields: field["type"] = normalize_field_type(field["type"], field["nullable"]) # 3. Генерация файла extra = {"fields": fields} created = generate_from_template( template_name="entity", args=args, extra_kwargs=extra, default_filename="{name}.py", default_dir="src/Entity", ) if created: print(f"✅ Создана сущность: {normalized_name}") if fields: print(f" Поля: {', '.join(f['name'] for f in fields)}") else: print("⚠️ Файл уже существует. Используйте --force для перезаписи.") except (TypeError, ValueError, TemplateError, IOError) as e: print(f"❌ Ошибка: {e}")