小编Dev*_*raj的帖子

是否可以在基于Click的界面中为所有子命令添加全局参数?

我在virtualenv下使用Click并使用entry_pointsetuptools中的指令将根映射到一个名为dispatch的函数.

我的工具公开两个子serveconfig,我使用在顶级组的选项,以确保用户总是通过一个--path指令.但用法结果如下:

mycommand --path=/tmp serve
Run Code Online (Sandbox Code Playgroud)

无论是serveconfig子命令需要确保用户始终在传递路径和理想,我想目前的CLI为:

mycommand serve /tmp` or `mycommand config validate /tmp
Run Code Online (Sandbox Code Playgroud)

当前基于Click的实现如下:

# cli root

@click.group()
@click.option('--path', type=click.Path(writable=True))
@click.version_option(__version__)
@click.pass_context
def dispatch(ctx, path):
    """My project description"""
    ctx.obj = Project(path="config.yaml")

# serve

@dispatch.command()
@pass_project
def serve(project):
    """Starts WSGI server using the configuration"""
    print "hello"

# config

@dispatch.group()
@pass_project
def config(project):
    """Validate or initalise a configuration file"""
    pass

@config.command("validate")
@pass_project
def config_validate(project):
    """Reports on the validity of …
Run Code Online (Sandbox Code Playgroud)

python command-line-interface python-click

6
推荐指数
1
解决办法
664
查看次数