2. Walkthrough
Every application should be a class that subclasses cliapp.Application.
The subclass should provide specific methods. Read the documentation
for the cliapp.Application class to see all methods, but a rough
summary is here:
- the settings attribute is the cliapp.Settings instance used by
the application
- override add_settings to add new settings for the application
- override process_* methods to override various stages in how
arguments and input files are processed
- override process_args to decide how each argument is processed;
by default, this called process_inputs or handles subcommands
- process_inputs calls process_input (note singular) for each
argument, or on - to process standard input if no files are named
on the command line
- process_input calls open_input to open each file, then calls
process_input_line for each input line
- process_input_line does nothing, by default
This cascade of overrideable methods is started by the run
method, which also sets up logging, loads configuration files,
parses the command line, and handles reporting of exceptions.
It can also run the rest of the code under the Python profiler,
if the appropriate environment variable is set.