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

import typing
import pathlib
from styxdefs import *
import dataclasses

SURF_DSET_INFO_METADATA = Metadata(
    id="0eea0d47be8d446fa32a71638d9796998abd8047.boutiques",
    name="SurfDsetInfo",
    package="afni",
    container_image_tag="afni/afni_make_build:AFNI_24.2.06",
)


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


def surf_dset_info(
    input_dsets: list[InputPathType],
    debug_level: int | None = None,
    novolreg: bool = False,
    noxform: bool = False,
    setenv: str | None = None,
    trace_: bool = False,
    extreme_trace: bool = False,
    nomall: bool = False,
    yesmall: bool = False,
    mini_help: bool = False,
    help_: bool = False,
    extreme_help: bool = False,
    help_view: bool = False,
    help_web: bool = False,
    help_find: str | None = None,
    help_raw: bool = False,
    help_spx: bool = False,
    help_aspx: bool = False,
    all_opts: bool = False,
    runner: Runner | None = None,
) -> SurfDsetInfoOutputs:
    """
    Provides information about surface datasets (DSET).
    
    Author: AFNI Developers
    
    URL: https://afni.nimh.nih.gov/
    
    Args:
        input_dsets: Input dataset.
        debug_level: Debug level. If DBG = 2, show full dataset information in\
            NIML form.
        novolreg: Ignore any Rotate, Volreg, Tagalign, or WarpDrive\
            transformations.
        noxform: Same as -novolreg.
        setenv: Set environment variable.
        trace_: Turns on In/Out debug and Memory tracing.
        extreme_trace: Turns on extreme tracing.
        nomall: Turn off memory tracing.
        yesmall: Turn on memory tracing (default).
        mini_help: Mini help.
        help_: Show entire help output.
        extreme_help: Show extreme help.
        help_view: Open help in text editor.
        help_web: Open help in web browser.
        help_find: Look for lines in help output that match the specified word.
        help_raw: Show unedited help string.
        help_spx: Show help string in sphinx format, but do not autoformat.
        help_aspx: Show help string in sphinx with autoformatting.
        all_opts: Attempt to identify all options for the program from the help\
            output.
        runner: Command runner.
    Returns:
        NamedTuple of outputs (described in `SurfDsetInfoOutputs`).
    """
    if debug_level is not None and not (0 <= debug_level): 
        raise ValueError(f"'debug_level' must be greater than 0 <= x but was {debug_level}")
    runner = runner or get_global_runner()
    execution = runner.start_execution(SURF_DSET_INFO_METADATA)
    cargs = []
    cargs.append("SurfDsetInfo")
    cargs.extend([
        "-input",
        *[execution.input_file(f) for f in input_dsets]
    ])
    if debug_level is not None:
        cargs.extend([
            "-debug",
            str(debug_level)
        ])
    if novolreg:
        cargs.append("-novolreg")
    if noxform:
        cargs.append("-noxform")
    if setenv is not None:
        cargs.extend([
            "-setenv",
            setenv
        ])
    if trace_:
        cargs.append("-trace")
    if extreme_trace:
        cargs.append("-TRACE")
    if nomall:
        cargs.append("-nomall")
    if yesmall:
        cargs.append("-yesmall")
    if mini_help:
        cargs.append("-h")
    if help_:
        cargs.append("-help")
    if extreme_help:
        cargs.append("-HELP")
    if help_view:
        cargs.append("-h_view")
    if help_web:
        cargs.append("-h_web")
    if help_find is not None:
        cargs.extend([
            "-h_find",
            help_find
        ])
    if help_raw:
        cargs.append("-h_raw")
    if help_spx:
        cargs.append("-h_spx")
    if help_aspx:
        cargs.append("-h_aspx")
    if all_opts:
        cargs.append("-all_opts")
    ret = SurfDsetInfoOutputs(
        root=execution.output_file("."),
    )
    execution.run(cargs)
    return ret


__all__ = [
    "SURF_DSET_INFO_METADATA",
    "SurfDsetInfoOutputs",
    "surf_dset_info",
]
