def METHOD_NAME(args, cfg):
    """
    Check the entire configuration `cfg`.
    """
    cfg.launch_wizard()
    # check global
    futil_root = Path(cfg["global", config.ROOT])
    futil_str = colored(str(futil_root), "yellow")
    cprint("global:", attrs=["bold"])
    if futil_root.exists():
        cprint(" ✔", "green", end=" ")
        print(f"{futil_str} exists.")
    else:
        cprint(" ✖", "red", end=" ")
        print(f"{futil_str} doesn't exist.")
    print()
    uninstalled = []
    wrong_version = []
    stages = set(args.stages) if args.stages else None
    # check executables in stages
    for name, stage in cfg["stages"].items():
        if stages is not None:
            if name not in stages:
                continue
            else:
                stages.remove(name)
        if "exec" in stage:
            cprint(f"stages.{name}.exec:", attrs=["bold"])
            exec_path = shutil.which(stage["exec"])
            exec_name = colored(stage["exec"], "yellow")
            if stage["exec"].startswith("cargo run"):
                cprint(" ✔", "green", end=" ")
            elif exec_path is not None:
                cprint(" ✔", "green", end=" ")
                print(f"{exec_name} installed.")
                # check if path is absolute or relative
                if not Path(exec_path).is_absolute():
                    print(
                        f"   {exec_name} is a relative path and "
                        + "will not work from every directory."
                    )
                # check version
                if not check_version(name, exec_path):
                    wrong_version.append(name)
            else:
                uninstalled.append(name)
                cprint(" ✖", "red", end=" ")
                print(f"{exec_name} not installed.")
            print()
    if len(uninstalled) > 0:
        bad_stages = colored(", ".join(uninstalled), "red")
        verb = "were" if len(uninstalled) > 1 else "was"
        print(f"{bad_stages} {verb} not installed correctly.")
        print(
            "Configuration instructions: "
            + "https://docs.calyxir.org/fud/#configuration"
        )
    if len(wrong_version) > 0:
        # add line break if we printed out uninstalled
        if len(uninstalled) > 0:
            print()
        bad_stages = colored(", ".join(wrong_version), "red")
        verb = "versions" if len(wrong_version) > 1 else "version"
        print(f"Incorrect {verb} for {bad_stages}.")
        print("Stages may fail or not execute correctly.")
    if stages:
        bad_stages = colored(", ".join(stages), "red")
        print(f"Stage(s) not found in configuration: {bad_stages}")
    # exit with -1 if something went wrong
    if len(uninstalled) > 0 or len(wrong_version) > 0:
        sys.exit(-1)