J'essaye de faire un CLI, préférablement écrit en Python. J'ai besoin d'une interface de ligne de commande à plusieurs niveaux, et je veux compléter l'onglet.Comment faire une CLI multi-niveau en Python?
J'ai regardé le module cmd (à partir de la bibliothèque standard Python) et readline avec la fonction "complete" (pour l'achèvement de l'onglet).
Ils ont tous deux manqué quelque chose, à savoir que je ne l'ai pas compris comment gérer plusieurs niveaux tels que:
level1
level2
level2_subcommand_1
level2_subcommand_2
level3
level3_subcommand_1
Exemple: Si je tapais:
cmd> level2
, je veux voir level2_subcommand_1 et level2_subcommand_2 apparaissent lorsque j'appuie sur la touche de tabulation, mais pas de niveau1 et pas de niveau3.
Je ne pouvais pas le faire avec cmd lib aussi bien qu'avec readline.
Salut, merci pour votre réponse. Le deuxième exemple semble pouvoir faire ce que je veux. Je l'ai modifié (il appelle SubInterpreter au lieu de SubInterpreterForLevel2) mais cela ne fonctionne pas. C'est comme si j'étais bloqué au premier niveau (MyInterpreter). –
Bon, j'ai testé mon second exemple dans un interpréteur Python. On dirait que 'SubInterpreterForLevel2' devrait s'appeler' SubInterpreter' (comme vous l'avez noté correctement), plus la fonction 'do_quit' manquait l'argument' args', mais sinon ça marche parfaitement bien pour moi. Taper 'level2' change l'invite en' (level2) 'et me conduit au sous-interprète. Taper 'quit' dans' (level2) 'me ramène à' (Cmd) '. Recevez-vous un message d'erreur lorsque vous tapez 'level2'? –