Use the logging module for output, with levels specified through the --quiet, --verbose, and --dry-run switches. Allow for overwhelming verbosity by doubling-up the --verbose switch.
Automagically convert the command line option switches into function call arguments.
Move all of the command boilerplate into the cli module. The marshal_command_argments() pretty much does it all.