from argenta import Command, Response, Router
from argenta.command import Flag, Flags
from argenta.command.flag import ValidationStatus
from argenta.response import ResponseStatus

router = Router(title="Flags Example")


@router.command(
    Command(
        "process",
        description="Process with flags",
        flags=Flags([Flag("format", possible_values=["json", "xml"]), Flag("verbose")]),
    )
)
def process_handler(response: Response):
    print(f"Status: {response.status}")

    format_flag = response.input_flags.get_flag_by_name("format")
    verbose_flag = response.input_flags.get_flag_by_name("verbose")

    if format_flag:
        format_value = format_flag.input_value
        print(f"Format: {format_value}")

    if verbose_flag:
        print("Verbose mode enabled")

    if response.status == ResponseStatus.ALL_FLAGS_VALID:
        print("All flags are valid, proceeding...")
    elif response.status == ResponseStatus.INVALID_VALUE_FLAGS:
        print("Warning: Some flags have invalid values")
        for flag in response.input_flags:
            if flag.status == ValidationStatus.INVALID:
                print(f"  Invalid flag: {flag.string_entity} = {flag.input_value}")
