Я использую модуль cmd
и имею команду server
(метод do_server()
), которая имеет автозаполнение из коробки (я на macOS).Это все нормально и работает как ожидалось.Но если я хочу дополнительно использовать подкоманду в команде server
, то все получается не так, как мне нужно.
Мне понадобится следующее:
- подкоманды должнытакже может быть интегрирован с командой help
(не должен отображаться при вводе help
, поскольку они не являются командами первого уровня, но должен отображаться при вводе help server
)
- подкоманды также должны интегрироваться с автоматическимизавершено
В настоящее время я не вижу способа определить подкоманды из коробки.Мне нужно реализовать их в качестве аргументов для команды, которая не является идеальной.
Мой вопрос будет таким: как мне добиться автоматического документирования подкоманд с помощью help
и иметь автозаполнение, чтобы оно интегрировалось каккак можно лучше с cmd
?
В этом примере я хотел бы лучше интегрировать connect
в качестве подкоманды:
from cmd import Cmd
class Tansanit(Cmd):
def do_server(self, args):
""" Show server info """
print("Some server details")
if args and args == "connect":
print("Connect to the server")
def do_quit(self, args):
""" Quit CLI """
raise SystemExit
if __name__ == '__main__':
t = Tansanit()
t.prompt = "> "
t.cmdloop()
Я бы предпочел иметь что-то вродеэто:
from cmd import Cmd
class Tansanit(Cmd):
def do_server(self, args):
""" Show server info """
print("Some server details")
def do_server_connect(self, args):
""" Connect to server """
print("Connect to the server")
def do_quit(self, args):
""" Quit CLI """
raise SystemExit
if __name__ == '__main__':
t = Tansanit()
t.prompt = "> "
t.cmdloop()
К сожалению, это невозможно.