summaryrefslogtreecommitdiff
path: root/docs/hooks.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/hooks.rst')
-rw-r--r--docs/hooks.rst61
1 files changed, 61 insertions, 0 deletions
diff --git a/docs/hooks.rst b/docs/hooks.rst
new file mode 100644
index 00000000..3849cce0
--- /dev/null
+++ b/docs/hooks.rst
@@ -0,0 +1,61 @@
+.. cmd2 documentation for application and command lifecycle and the hooks which are available
+
+cmd2 Application Lifecyle and Hooks
+===================================
+
+The typical way of starting a cmd2 application is as follows::
+
+ from cmd2 import Cmd
+ class App(Cmd):
+ # customized attributes and methods here
+ app = App()
+ app.cmdloop()
+
+There are several pre-existing methods and attributes which you can tweak to control the overall behavior of your
+application before, during, and after the main loop.
+
+Application Lifecycle Hook Methods
+----------------------------------
+The ``preloop`` and ``postloop`` methods run before and after the main loop, respectively.
+
+.. automethod:: cmd2.Cmd.preloop
+
+.. automethod:: cmd2.Cmd.postloop
+
+Application Lifecycle Attributes
+--------------------------------
+
+There are numerous attributes (member variables of the ``cmd2.Cmd``) which have a signficiant effect on the applicaiton
+behavior upon entering or during the main loop. A partial list of some of the more important ones is presented here:
+
+- **intro**: *str* - if provided this serves as the intro banner printed once at start of application, after ``preloop`` runs
+- **allow_cli_args**: *bool* - if True (default), then searches for -t or --test at command line to invoke transcript testing mode instead of a normal main loop
+ and also processes any commands provided as arguments on the command line just prior to entering the main loop
+- **echo**: *bool* - if True, then the command line entered is echoed to the screen (most useful when running scripts)
+- **prompt**: *str* - sets the prompt which is displayed, can be dynamically changed based on applicatoin state and/or
+ command results
+
+
+Command Processing Hooks
+------------------------
+
+Inside the main loop, every time the user hits <Enter> the line is processed by the ``onecmd_plus_hooks`` method.
+
+.. automethod:: cmd2.Cmd.onecmd_plus_hooks
+
+As the ``onecmd_plus_hooks`` name implies, there are a number of *hook* methods that can be defined in order to inject
+applicaiton-specific behavior at various points during the processing of a line of text entered by the user. ``cmd2``
+increases the 2 hooks provided by ``cmd`` (**precmd** and **postcmd**) to 6 for greater flexibility. Here are
+the various hook methods, presented in chronological order starting with the ones called earliest in the process.
+
+.. automethod:: cmd2.Cmd.preparse
+
+.. automethod:: cmd2.Cmd.postparse
+
+.. automethod:: cmd2.Cmd.postparsing_precmd
+
+.. automethod:: cmd2.Cmd.precmd
+
+.. automethod:: cmd2.Cmd.postcmd
+
+.. automethod:: cmd2.Cmd.postparsing_postcmd