我正在尝试使用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
当我按下自动填充标签时。