From eee6bf15805fa8ed3ca713a4c6e8edfd9ebc5d4e Mon Sep 17 00:00:00 2001 From: Kevin Van Brunt Date: Tue, 19 Nov 2019 22:24:13 -0500 Subject: Added capability to override the argument parser class used by cmd2 built-in commands --- examples/override_parser.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100755 examples/override_parser.py (limited to 'examples/override_parser.py') diff --git a/examples/override_parser.py b/examples/override_parser.py new file mode 100755 index 00000000..ddfa8323 --- /dev/null +++ b/examples/override_parser.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python +# coding=utf-8 +# flake8: noqa F402 +""" +The standard parser used by cmd2 built-in commands is Cmd2ArgumentParser. +The following code shows how to override it with your own parser class. +""" + +# First set a value called argparse.cmd2_parser_module with the module that defines the custom parser +# See the code for custom_parser.py. It simply defines a parser and calls cmd2.set_default_argument_parser() +# with the custom parser's type. +import argparse +argparse.cmd2_parser_module = 'examples.custom_parser' + +# Next import stuff from cmd2. It will import your module just before the cmd2.Cmd class file is imported +# and therefore override the parser class it uses on its commands. +from cmd2 import cmd2 + +if __name__ == '__main__': + import sys + app = cmd2.Cmd(use_ipython=True, persistent_history_file='cmd2_history.dat') + app.locals_in_py = True # Enable access to "self" within the py command + app.debug = True # Show traceback if/when an exception occurs + sys.exit(app.cmdloop()) -- cgit v1.2.1