mirror of
https://gitflic.ru/project/alt-gnome/karkas.git
synced 2024-12-24 00:33:06 +03:00
116 lines
3.8 KiB
Python
116 lines
3.8 KiB
Python
|
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()
|