Creando una aplicación de línea de comandos de shell con Python y Click

Estoy usando click (http://click.pocoo.org/3/) para crear una aplicación de línea de comandos, pero no sé cómo crear un shell para esta aplicación.
Supongamos que estoy escribiendo un programa llamado prueba y tengo comandos llamados subtest1 y subtest2

Pude hacerlo funcionar desde una terminal como:

$ test subtest1
$ test subtest2

Pero en lo que estaba pensando es en una concha, así que podría hacer:

$ test  
>> subtest1  
>> subtest2

¿Es esto posible con un clic?

Mejor respuesta
Esto no es imposible con un clic, pero tampoco hay soporte incorporado para eso. Lo primero que tendría que hacer es hacer que su devolución de llamada de grupo sea invocable sin un subcomando pasando invoke_without_command = True en el decorador de grupo (como se describe en here). Entonces su devolución de llamada de grupo tendría que implementar un REPL. Python tiene el marco cmd para hacer esto en la biblioteca estándar. Hacer que los subcomandos de clic estén disponibles allí implica anular cmd.Cmd.default, como en el fragmento de código a continuación. Obtener todos los detalles correctos, como ayuda, debería ser factible en unas pocas líneas.

import click
import cmd

class REPL(cmd.Cmd):
    def __init__(self, ctx):
        cmd.Cmd.__init__(self)
        self.ctx = ctx

    def default(self, line):
        subcommand = cli.commands.get(line)
        if subcommand:
            self.ctx.invoke(subcommand)
        else:
            return cmd.Cmd.default(self, line)

@click.group(invoke_without_command=True)
@click.pass_context
def cli(ctx):
    if ctx.invoked_subcommand is None:
        repl = REPL(ctx)
        repl.cmdloop()

@cli.command()
def a():
    """The `a` command prints an 'a'."""
    print "a"

@cli.command()
def b():
    """The `b` command prints a 'b'."""
    print "b"

if __name__ == "__main__":
    cli()

Por favor indique la dirección original:Creando una aplicación de línea de comandos de shell con Python y Click - Código de registro