2016-04-29 2 views
0

Я использую модуль щелчка python для создания CLI. Дело в том, что я хочу иметь категорию команды с аргументами, например:Python модуль щелчка для создания CLI

myawesomecli env info 
myawesomecli env clean 
myawesomecli env ... 

myawesomecli database create-table <name> 
myawesomecli database insert <entry> 
myawesomecli database ... 

До сих пор, я могу придумать с этим:

import click 
@click.group() 
@click.version_option(version='0.1 ') 
def cli(): 
    pass 

@cli.command() 
@click.argument('option') 
def env(option): 
    if option == 'info': 
     click.echo("run env info command") 
    elif option == 'clean': 
     click.echo("run env clean command")  
    ... 

@cli.command() 
@click.argument('option') 
def database(option): 
    if option == 'create-table': 
     click.echo("run database create-table command") 
    elif option == 'clean': 
     click.echo("run database clean command")   
    ... 

Есть ли способ, чтобы иметь функцию каждая подкоманда вместо использования if-else?

+0

Какая библиотека предоставляет «щелчок»? –

+0

'pip list | grep click click (6.6)' – hosselausso

+0

Вы * можете * указать ссылку. –

ответ

1
import click 
@click.group() 
@click.version_option(version='0.1 ') 
def cli(): 
    pass 

@cli.group() 
@click.argument('option') 
def env(option): 
    """ Define the environment of the product """ 
    pass 

@env.command() 
def info(): 
    click.echo("run env info command") 

@env.command(): 
def group(): 
    click.echo("run env group command") 
... 

Я также пытаюсь понять некоторые вещи, но это одна из идей, на которые я надеюсь.

+0

Да, это работает! Благодаря! – hosselausso

+0

Добро пожаловать, я думаю, что щелчок идет на что-то великолепное, но у него есть несколько способов. – yfeleke

Смежные вопросы