选项卡命令行实用程序的选项卡完成

时间:2015-09-11 11:01:03

标签: python bash autocomplete command-line-interface

我正在使用click从我的python模块中创建命令行实用程序。不幸的是click并没有为各种可能的选择提供bash完成,这是我非常需要的,并且只有在你做出错误的选择时才会给出可能的选择。

我的代码:

import json
import click

@click.command()
@click.option('--conn_obj', help='Connection Object')
@click.option('--entity', help='The entity you want to interact with. Example : Network, VM, Firewall etc.', type=click.Choice(['network','vm','firewall','eip','gateway','image','interface','network','route','subnet','tags','vm']))
@click.option('--operation', help='The operation you want to perform. Example : Create, Delete, List', type=click.Choice(['choice1','choice2','choice3']))
def execute(conn_obj,entity,operation,**kwargs):
    my_service = conn_obj.service
    my_connection = conn_obj.connection
    path = my_service + "/" + entity + ".json"
    with open(path) as json_file:
        json_data = json.load(json_file)
        method = json_data[operation]
        result = getattr(my_connection,method)(**kwargs)
    return result

if __name__=='__main__':
    execute()

根据我的理解,我有两个选择:

  • 使用click以外的其他模块创建命令行实用程序。不幸的是,我无法找到支持bash完成的任何支持。任何建议都会有所帮助。
  • 使用一些变通方法/黑客来实现某种可能值的自动完成。

任何帮助将不胜感激。

0 个答案:

没有答案