Override undocumented help area in Python's cmd module
command-line-interface, python
Solution
class Pt(Cmd):
__hiden_methods = ('do_EOF',)
def do_EOF(self, arg):
return True
def get_names(self):
return [n for n in dir(self.__class__) if n not in self.__hiden_methods]
That will hide the method from the completion also.
Problem
I am using Python's cmd module to build a little CLI tool. I am not a fan of showing the undocumented commands listed. So when I type 'help' I would like to just show the documented commands. Currently typing help shows this: ``` Documented commands (type help <topic>): ======================================== exit help projects Undocumented commands: ====================== EOF ``` I have that EOF bit in there because I need to exit gracefully, as is documented by the cmd examples. But I don't want it listed. If I do document it - it makes no sense. How can I override and not show 'undocumented commands'? My code: ``` from cmd import Cmd from ptcli import Ptcli from termcolor import colored class Pt(Cmd): Cmd.intro = colored("Welcome to pt CLI","yellow") Cmd.prompt = colored(">> ","cyan") def do_projects(self,line): 'Choose current project from a list' pt = Ptcli() result = pt.get_projects() for i in result: print i['name'] def do_exit(self,line): 'Exit pt cli' return True def do_EOF(self, line): return True def default(self, arg): ''' Print a command not recognized error message ''' ``` if name == 'main': Pt().cmdloop()