import argparse import json import os DEFAULTS = { "description": "Очень полезный модуль", "author": "OCAB Team", "version": "1.0.0", "privileged": "false", } def create_module(args): module_dir = os.path.join("src/ocab_modules/standard", args.module_name) os.makedirs(module_dir, exist_ok=True) module_info = { "id": args.id, "name": args.name, "description": args.description, "author": args.author, "version": args.version, "privileged": args.privileged.lower() == "true", "dependencies": {}, } with open(os.path.join(module_dir, "info.json"), "w", encoding="utf-8") as f: json.dump(module_info, f, ensure_ascii=False, indent=4) with open(os.path.join(module_dir, "__init__.py"), "w", encoding="utf-8") as f: f.write("# Init file for the module\n") print(f"Module {args.module_name} created successfully.") def interactive_mode(args): def get_input(prompt, default=None): if default: value = input(f"{prompt} [{default}]: ") return value if value else default else: value = input(f"{prompt}: ") return value module_name = get_input("Введите название модуля (папки)") module_id = get_input("Введите ID") name = get_input("Введите название модуля") description = get_input( "Введите описание модуля", args.description or DEFAULTS["description"] ) author = get_input("Введите автора", args.author or DEFAULTS["author"]) version = get_input("Введите версию", args.version or DEFAULTS["version"]) privileged = get_input( "Модуль привилегированный (true/false)", args.privileged or DEFAULTS["privileged"], ) args = argparse.Namespace( command="create", module_name=module_name, id=module_id, name=name, description=description, author=author, version=version, privileged=privileged, dependencies="", ) create_module(args) def main(): parser = argparse.ArgumentParser( description="Утилита для создания директории модуля с файлами." ) subparsers = parser.add_subparsers(dest="command", required=True) create_parser = subparsers.add_parser("create", help="Создать новый модуль") create_parser.add_argument("--module_name", help="Название директории модуля") create_parser.add_argument("--id", help="ID модуля") create_parser.add_argument("--name", help="Название модуля") create_parser.add_argument("--description", help="Описание модуля") create_parser.add_argument("--author", help="Автор модуля") create_parser.add_argument("--version", help="Версия модуля") create_parser.add_argument( "--privileged", help="Привилегированный модуль (true/false)" ) create_parser.add_argument( "--dependencies", help="Список зависимостей в формате имя:версия через запятую" ) args = parser.parse_args() if args.command == "create": if not all( [ args.module_name, args.id, args.name, args.description, args.author, args.version, args.privileged, args.dependencies, ] ): print("Переход в интерактивный режим...") interactive_mode(args) else: create_module(args) if __name__ == "__main__": main()