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

import typing
import pathlib
from styxdefs import *
import dataclasses

INIT_USER_DOTFILES_PY_METADATA = Metadata(
    id="46bf1c58977e7bced1c1fbd2f6c4642aa3fe2ecd.boutiques",
    name="init_user_dotfiles.py",
    package="afni",
    container_image_tag="afni/afni_make_build:AFNI_24.2.06",
)


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


def init_user_dotfiles_py(
    help_: bool = False,
    help_dotfiles_all: bool = False,
    help_dotfiles_mod: bool = False,
    help_shells: bool = False,
    hist: bool = False,
    show_valid_opts: bool = False,
    ver: bool = False,
    dot_files_list: list[str] | None = None,
    dir_bin: str | None = None,
    dir_dot: str | None = None,
    do_updates: list[str] | None = None,
    dry_run: bool = False,
    force: bool = False,
    make_backup: str | None = None,
    shell_list: list[str] | None = None,
    test: bool = False,
    verbosity_level: int | None = None,
    runner: Runner | None = None,
) -> InitUserDotfilesPyOutputs:
    """
    Initialize or evaluate user dot files (.cshrc, .bashrc, ...) for system
    settings.
    
    Author: AFNI Team
    
    URL:
    https://afni.nimh.nih.gov/pub/dist/doc/program_help/init_user_dotfiles.py.html
    
    Args:
        help_: Show this help.
        help_dotfiles_all: Display dot files known by the program.
        help_dotfiles_mod: Display modifiable dot files.
        help_shells: Display shells known by the program.
        hist: Show module history.
        show_valid_opts: List valid options.
        ver: Show current version.
        dot_files_list: Specify dot files to focus on (default from\
            -help_dotfiles_mod).
        dir_bin: Specify bin directory to add to PATH (default comes from\
            `which afni_proc.py`).
        dir_dot: Specify directory containing dot files.
        do_updates: Specify which updates to make (default is nothing).
        dry_run: Do not modify files, but see what would happen.
        force: Force edits, whether they seem needed or not.
        make_backup: Specify whether to make backups of originals (default is\
            yes).
        shell_list: Specify shells instead of using -dflist.
        test: Just test the files for potential changes.
        verbosity_level: Set the verbosity level (default 1).
        runner: Command runner.
    Returns:
        NamedTuple of outputs (described in `InitUserDotfilesPyOutputs`).
    """
    runner = runner or get_global_runner()
    execution = runner.start_execution(INIT_USER_DOTFILES_PY_METADATA)
    cargs = []
    cargs.append("init_user_dotfiles.py")
    if help_:
        cargs.append("-help")
    if help_dotfiles_all:
        cargs.append("-help_dotfiles_all")
    if help_dotfiles_mod:
        cargs.append("-help_dotfiles_mod")
    if help_shells:
        cargs.append("-help_shells")
    if hist:
        cargs.append("-hist")
    if show_valid_opts:
        cargs.append("-show_valid_opts")
    if ver:
        cargs.append("-ver")
    if dot_files_list is not None:
        cargs.extend([
            "-dflist",
            *dot_files_list
        ])
    if dir_bin is not None:
        cargs.extend([
            "-dir_bin",
            dir_bin
        ])
    if dir_dot is not None:
        cargs.extend([
            "-dir_dot",
            dir_dot
        ])
    if do_updates is not None:
        cargs.extend([
            "-do_updates",
            *do_updates
        ])
    if dry_run:
        cargs.append("-dry_run")
    if force:
        cargs.append("-force")
    if make_backup is not None:
        cargs.extend([
            "-make_backup",
            make_backup
        ])
    if shell_list is not None:
        cargs.extend([
            "-shell_list",
            *shell_list
        ])
    if test:
        cargs.append("-test")
    if verbosity_level is not None:
        cargs.extend([
            "-verb",
            str(verbosity_level)
        ])
    ret = InitUserDotfilesPyOutputs(
        root=execution.output_file("."),
    )
    execution.run(cargs)
    return ret


__all__ = [
    "INIT_USER_DOTFILES_PY_METADATA",
    "InitUserDotfilesPyOutputs",
    "init_user_dotfiles_py",
]
