/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop-0.4
src/liquidcode/commands/core/generator.py
63 строки
2 KB
User
0.4.8 - переработка документации, рефакторинг кода
06 июл 2026, 12:38
06 июл 2026, 12:38
2cfe3f4
Код
Авторство
О чём код?
import argparse import os from typing import Optional, Dict, Any from .file_utils import create_file from .template_utils import get_template def generate_from_template( template_name: str, args: argparse.Namespace, extra_kwargs: Optional[Dict[str, Any]] = None, default_filename: Optional[str] = None, default_dir: str = 'src', template_extension: str = '.py.j2', ) -> bool: """ Универсальная функция для генерации файла из шаблона. Args: template_name: Имя шаблона ('controller', 'entity', 'middleware', 'crud', 'api'). args: Объект argparse.Namespace (должен содержать name, возможно directory, force). extra_kwargs: Дополнительные параметры для подстановки. default_filename: Шаблон имени файла с {name}. default_dir: Базовая директория по умолчанию. template_extension: Расширение файла шаблона (по умолчанию '.py.j2'). Returns: True, если файл создан, иначе False (файл существует и не force). Raises: TypeError: Если args не является argparse.Namespace. ValueError: Если отсутствует атрибут 'name'. TemplateError: При ошибках шаблона. IOError: При ошибке записи файла. """ if not isinstance(args, argparse.Namespace): raise TypeError("args должен быть экземпляром argparse.Namespace") name = getattr(args, 'name', None) if not name: raise ValueError("Отсутствует атрибут 'name' в args") target_dir = getattr(args, 'directory', default_dir) if not hasattr(args, 'directory') and default_dir: target_dir = default_dir if default_filename: filename = default_filename.format(name=name) else: filename = f"{name}.py" full_path = os.path.join(target_dir, filename) template_kwargs = {'name': name} if extra_kwargs: template_kwargs.update(extra_kwargs) content = get_template(template_name, extension=template_extension, **template_kwargs) overwrite = getattr(args, 'force', False) return create_file(full_path, content, overwrite)