def setup_main_options()

in lib/ramble/ramble/main.py [0:0]


def setup_main_options(args):
    """Configure ramble globals based on the basic options."""
    # Assign a custom function to show warnings
    warnings.showwarning = send_warning_to_tty

    # Set up environment based on args.
    tty.set_verbose(args.verbose)
    tty.set_debug(args.debug)
    tty.set_stacktrace(args.stacktrace)

    # debug must be set first so that it can even affect behavior of
    # errors raised by ramble.config.

    if args.debug:
        ramble.error.debug = args.debug
        spack.util.debug.register_interrupt_handler()
        ramble.config.set("config:debug", True, scope="command_line")
        spack.util.environment.tracing_enabled = True

    if args.timestamp:
        tty.set_timestamp(True)

    # override lock configuration if passed on command line
    if args.locks is not None:
        if args.locks is False:
            spack.util.lock.check_lock_safety(ramble.paths.prefix)
        ramble.config.set("config:locks", args.locks, scope="command_line")

    # override disable_passthrough configuration if passed on command line
    if args.disable_passthrough:
        ramble.config.set("config:disable_passthrough", True, scope="command_line")

    if args.disable_logger:
        ramble.config.set("config:disable_logger", True, scope="command_line")

    logger.enabled = not ramble.config.get("config:disable_logger", False)

    if args.disable_progress_bar:
        ramble.config.set("config:disable_progress_bar", True, scope="command_line")

    objects_to_mock = set()
    if args.mock:
        for obj in ramble.repository.ObjectTypes:
            objects_to_mock.add(obj)

    for obj in ramble.repository.ObjectTypes:
        if hasattr(args, f"mock_{obj.name}") and getattr(args, f"mock_{obj.name}"):
            objects_to_mock.add(obj)

    mock_repositories(objects_to_mock)

    # If the user asked for it, don't check ssl certs.
    if args.insecure:
        logger.warn("You asked for --insecure. Will NOT check SSL certificates.")
        ramble.config.set("config:verify_ssl", False, scope="command_line")

    # If the user asked for it allow env-vars to resolve in subprocess calls
    if args.resolve_variables_in_subprocesses:
        ramble.config.set("config:resolve_variables_in_subprocesses", True, scope="command_line")

    # Use the ramble config command to handle parsing the config strings
    for config_var in args.config_vars or []:
        ramble.config.add(fullpath=config_var, scope="command_line")

    # when to use color (takes always, auto, or never)
    color.set_color_when(args.color)