Cómo usar las mismas opciones para cmd en el mismo grupo usando python-click

Tengo un código como el siguiente, tanto foo como bar tienen una opción de usuario y necesito escribir:

@click.option('--user', default='*')

dos veces para cada función

Pero en realidad tengo muchos cmds como este, así que es un montón de código repetido.

@click.group(help="cmd group")
def main():
    pass


@click.command(name='foo')
@click.option('--user', default='*')
def foo(user):
    click.secho(user, fg='green')


@click.command(name='bar')
@click.option('--user', default='*')
def bar(user):
    click.secho(user, fg='green')


main.add_command(foo)
main.add_command(bar)

Lo que quiero es agregar la misma opción a un lugar en el grupo de cmd. ¿Cómo puedo hacer esto con un clic?

Mejor respuesta
pásalo en el contexto:

@click.group(help="cmd group")
@click.option('--user', default='*')
@click.pass_context
def main(ctx, user):
    ctx.obj = {'user': user}


@click.command(name='foo')
@click.pass_context
def foo(ctx):
    click.secho(ctx.obj['user'], fg='green')


@click.command(name='bar')
@click.pass_context
def bar(ctx):
    click.secho(ctx.obj['user'], fg='green')


main.add_command(foo)
main.add_command(bar)

mycli – la barra de gatos del usuario hará eco a los gatos del subcomando de la barra

Por favor indique la dirección original:Cómo usar las mismas opciones para cmd en el mismo grupo usando python-click - Código de registro