Source code for uetools.commands.init

import os
from dataclasses import dataclass
from typing import Optional

from argklass.arguments import add_arguments
from argklass.command import Command, newparser

from uetools.commands.engine.add import EngineAdd
from uetools.core.conf import CONFIG, CONFIGNAME, load_conf, save_conf


[docs] @dataclass class Arguments: # fmt: off engine : Optional[str] = None # Path to the unreal engine folder (C:/opt/UnrealEngine/Engine) project: Optional[str] = None # Path to the unreal project folder (C:/Projects) version: Optional[str] = None # Unreal Engine Version (5.1)
# fmt: on
[docs] class Init(Command): """Initialize the configuration file with unreal engine folders Attributes ---------- engine: str Path to the unreal engine folder (C:/opt/UnrealEngine/Engine) project: str Path to the unreal project folder (C:/Projects) version: str Engine version Examples -------- .. code-block:: console uecli init --engine C:/opt/UnrealEngine/Engine --projects C:/opt/Projects """ name: str = "init"
[docs] @staticmethod def arguments(subparsers): parser = newparser(subparsers, Init) add_arguments(parser, Arguments)
[docs] @staticmethod def execute(args): """Initialize the engine and projects folders""" config = os.path.join(CONFIG, CONFIGNAME) conf = {} project_paths = conf.get("project_path", []) default_engine = "/UnrealEngine/Engine" default_project = os.path.abspath(os.path.join("..", default_engine)) if os.path.exists(config): conf = load_conf() project_paths = conf.get("project_path", []) if isinstance(project_paths, str): project_paths = [project_paths] default_engine = conf.get("engine_path", default_engine) if len(project_paths) != 0: default_project = project_paths[0] if args.engine is None: engine_path = input(f"Engine Folder [{default_engine}]: ") else: engine_path = args.engine if args.project is None: project_folder = input(f"Project Folder [{default_project}]: ") else: project_folder = args.project engine_path = engine_path or default_engine project_folder = project_folder or default_project project_paths.append(project_folder) conf["engine_path"] = engine_path conf["project_path"] = list(set(project_paths)) EngineAdd.addengine(conf, args.version, engine_path) save_conf(conf) print(f"Updated Engine paths inside `{config}`") return 0
COMMANDS = [Init]