Argcomplete令人困惑的脚本

时间:2016-05-10 11:36:27

标签: python autocomplete arguments ubuntu-14.04 argparse

我正在尝试使用argcomplete自动填充要输入到我的脚本“setup_warehouse_env”的可能参数:

def env_completer(prefix, **kwargs):
    # Run the command cman env list and return the results as a list of strings
    process = subprocess.Popen(shlex.split("cman env list"), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    env_list = process.stdout.readlines()
    env_list = [line.rstrip('\n') for line in env_list]
    print env_list
    return [v for v in env_list if v.startswith(prefix or '')]


if __name__ == '__main__':
    arg_parser = argparse.ArgumentParser(description='Choose the warehouse environment')
    arg_parser.add_argument('--environment', type=str, default='',
                            help="Environment name").completer = env_completer
    argcomplete.autocomplete(arg_parser)
    args = arg_parser.parse_args()

问题是我有另一个脚本已经使用了arg complete(一个名为cman的脚本),我的脚本在某种程度上最终会得到与cman脚本相同的自动完成功能。然而,我希望它具有命令“cman env list”返回的选项(字符串列表)。

我有另一个bash脚本以这种方式设置我的环境

eval "$(register-python-argcomplete setup_warehouse_env 2>/dev/null)"

并将setup_warehouse_env安装到全局二进制文件夹中,以便找到它。 我注意到函数“env_completer”甚至没有调用,因为我没有看到

的结果
print env_list

当我按下自动填充标签时。

0 个答案:

没有答案