# This file was auto generated by Styx.
# Do not edit this file directly.

import typing
import pathlib
from styxdefs import *
import dataclasses

UBER_SKEL_METADATA = Metadata(
    id="d77a80fc9ecd09ed285b440328c53e4f45eb7735.boutiques",
    name="uber_skel",
    package="afni",
    container_image_tag="afni/afni_make_build:AFNI_24.2.06",
)


class UberSkelOutputs(typing.NamedTuple):
    """
    Output object returned when calling `uber_skel(...)`.
    """
    root: OutputPathType
    """Output root folder. This is the root folder for all outputs."""


def uber_skel(
    qt_options: str | None = None,
    no_gui_flag: bool = False,
    print_script: bool = False,
    save_script: str | None = None,
    user_var: list[str] | None = None,
    help_howto_program: bool = False,
    help_: bool = False,
    help_gui: bool = False,
    history: bool = False,
    show_valid_opts: bool = False,
    version: bool = False,
    runner: Runner | None = None,
) -> UberSkelOutputs:
    """
    Sample uber processing program for initializing user and control variables, with
    options for both GUI and non-GUI modes.
    
    Author: AFNI Developers
    
    URL: https://afni.nimh.nih.gov/
    
    Args:
        qt_options: Pass PyQt4 options directly to the GUI.
        no_gui_flag: Run without the GUI.
        print_script: Print the script.
        save_script: Save the script.
        user_var: Initialize user variables. Usage: -uvar <name> <value>.
        help_howto_program: Show programming comments.
        help_: Show help.
        help_gui: Show help for the GUI.
        history: Show history.
        show_valid_opts: Show valid options.
        version: Show version.
        runner: Command runner.
    Returns:
        NamedTuple of outputs (described in `UberSkelOutputs`).
    """
    runner = runner or get_global_runner()
    execution = runner.start_execution(UBER_SKEL_METADATA)
    cargs = []
    cargs.append("uber_skel.py")
    if qt_options is not None:
        cargs.extend([
            "-qt_opts",
            qt_options
        ])
    if no_gui_flag:
        cargs.append("-no_gui")
    if print_script:
        cargs.append("-print_script")
    if save_script is not None:
        cargs.extend([
            "-save_script",
            save_script
        ])
    if user_var is not None:
        cargs.extend([
            "-uvar",
            *user_var
        ])
    if help_howto_program:
        cargs.append("-help_howto_program")
    if help_:
        cargs.append("-help")
    if help_gui:
        cargs.append("-help_gui")
    if history:
        cargs.append("-hist")
    if show_valid_opts:
        cargs.append("-show_valid_opts")
    if version:
        cargs.append("-ver")
    ret = UberSkelOutputs(
        root=execution.output_file("."),
    )
    execution.run(cargs)
    return ret


__all__ = [
    "UBER_SKEL_METADATA",
    "UberSkelOutputs",
    "uber_skel",
]
