我正在使用该cmd
模块并有一个名为server
(method 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()
不幸的是,这是不可能的。