31 lines
904 B
Python
31 lines
904 B
Python
from typing import Optional
|
|
|
|
from pydantic import BaseModel, model_validator
|
|
|
|
from core.enums import GuiOption
|
|
|
|
|
|
class GuiConfig(BaseModel):
|
|
gui_option: GuiOption
|
|
raw_ui_filename: Optional[str] = None
|
|
|
|
def should_create_ui(self):
|
|
return self.gui_option == GuiOption.NEW
|
|
|
|
@property
|
|
def ui_filename(self) -> str:
|
|
if self.raw_ui_filename is None:
|
|
raise ValueError("ui_filename is None")
|
|
|
|
return self.raw_ui_filename
|
|
|
|
@model_validator(mode="after")
|
|
def validate_dependent_options(self):
|
|
if self.gui_option == GuiOption.EXISTING and self.raw_ui_filename is None:
|
|
raise ValueError("--ui-filename is required when --gui-option is 'existing'.")
|
|
|
|
if self.gui_option == GuiOption.NONE and self.raw_ui_filename:
|
|
raise ValueError("Cannot specify --ui-filename when --gui-option is 'none'.")
|
|
|
|
return self
|