Ejemplo n.º 1
0
def _try(description, last, command, args, call):
    """Try the completion"""
    if command == config.main_command.path:
        args = [config.main_command.path] + list(args)
    else:
        args = [config.main_command.path, command] + list(args)
    complete_envvar = "_{}_COMPLETE".format(config.main_command.path.upper().replace("-", "_"))
    if description:
        extra_env = {
            "COMMANDLINE": " ".join(quote(arg) for arg in args) + ('' if last else ' '),
            complete_envvar: "complete-fish",
        }
    else:
        extra_env = {
            "COMP_WORDS": " ".join(quote(arg) for arg in args),
            "COMP_CWORD": str(max(0, len(args) - (1 if last else 0))),
            complete_envvar: "complete",
        }
    extra_env.update({CASE_INSENSITIVE_ENV: 'ON'} if config.completion.case_insensitive else {})
    with updated_env(**extra_env):
        if call:
            call_me()
        else:
            oldvalue = click_project.completion.IN_COMPLETION
            click_project.completion.IN_COMPLETION = True
            config.main_command()
            click_project.completion.IN_COMPLETION = oldvalue
Ejemplo n.º 2
0
def temp_config():
    with updated_env():
        configs.append(deepcopy(configs[-1]))
        try:
            yield
        finally:
            configs.pop()
Ejemplo n.º 3
0
 def external_command(**kwargs):
     from click_project.lib import call
     config.merge_settings()
     args = ([command_path] + get_settings_for_path("parameters", path))
     env = {(config.main_command.path + "___" + key).upper():
            (str(value) if value else "")
            for key, value in kwargs.items()}
     ctx = click.get_current_context()
     env[(config.main_command.path +
          "___PATH").upper()] = (ctx.command_path.replace(" ",
                                                          "_").upper())
     while ctx:
         env.update({
             (ctx.command_path.replace(" ", "_") + "__" + key).upper():
             ((" ".join(map(quote, value)) if type(value) is tuple else
               str(value) if value else ""))
             for key, value in ctx.params.items()
         })
         ctx = ctx.parent
     env[(config.main_command.path + "___CMD_OPTIND").upper()] = (str(
         len(config.command_line_settings["parameters"][path])))
     env[(config.main_command.path + "___CMD_ARGS").upper()] = (
         " ".join(
             quote(a)
             for a in config.command_line_settings["parameters"][path]))
     env[(config.main_command.path + "___OPTIND").upper()] = (str(
         len(args[1:])))
     env[(config.main_command.path + "___ARGS").upper()] = (" ".join(
         quote(a) for a in args[1:]))
     with updated_env(**env):
         call(args)
Ejemplo n.º 4
0
 def docker_compose(args, internal=False):
     with updated_env(**extra_env()):
         call(
             ["docker-compose"] +
             (extra_options() if callable(extra_options) else extra_options)
             + args,
             internal=internal,
             cwd=abs_directory())
Ejemplo n.º 5
0
        def external_command(**kwargs):
            from click_project.lib import call
            ctx = click.get_current_context()
            config.merge_settings()
            args = ([command_path] + list(ctx.params.get("args", [])))

            def value_to_string(value):
                return (" ".join(map(quote, value)) if type(value) is tuple
                        else str(value) if value else "")

            env = {("CLK___" + key).upper(): (value_to_string(value))
                   for key, value in kwargs.items()}
            env[("CLK___PATH").upper()] = (ctx.command_path.replace(
                " ", "_").upper())
            if "args" in ctx.params:
                env[("CLK___ARGS").upper()] = " ".join(
                    map(quote, ctx.params["args"]))

            while ctx:
                env.update({
                    (ctx.command_path.replace(" ", "_") + "__" + key).upper():
                    (value_to_string(value))
                    for key, value in ctx.params.items()
                })
                ctx = ctx.parent

            for path, parameters in config.get_settings2("parameters").items():
                env[(f"CLK_P_" + path.replace("-", "__").replace(
                    ".", "_")).upper()] = " ".join(map(quote, parameters))

            env[("CLK___CMD_OPTIND").upper()] = (str(
                len(
                    config.commandline_profile.get_settings("parameters")
                    [path])))
            env[("CLK___CMD_ARGS").upper()] = (" ".join(
                quote(a) for a in config.commandline_profile.get_settings(
                    "parameters")[path]))
            env[("CLK___OPTIND").upper()] = (str(len(args[1:])))
            env[("CLK___ALL").upper()] = (" ".join(quote(a) for a in args[1:]))
            with updated_env(**env):
                call(
                    args,
                    internal=True,
                )