/neatx/lib/cli.py
http://neatx.googlecode.com/ · Python · 85 lines · 43 code · 20 blank · 22 comment · 4 complexity · a765d914ac32ac94e9661745087d30ce MD5 · raw file
- #
- #
- # Copyright (C) 2009 Google Inc.
- #
- # This program is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 2 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful, but
- # WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- # General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- # 02110-1301, USA.
- """Module for command line interface functions"""
- import logging
- import optparse
- import sys
- from neatx import config
- from neatx import constants
- from neatx import utils
- class GenericProgram(object):
- def __init__(self, logsetup):
- self.logsetup = logsetup
- self.cfg = None
- self.args = None
- self.options = None
- def BuildOptions(self):
- debug_opt = optparse.make_option("-d", "--debug", default=False,
- action="store_true",
- help="Enable debug logging")
- logtostderr_opt = optparse.make_option("--logtostderr", default=False,
- action="store_true",
- help="Log to stderr")
- return [debug_opt, logtostderr_opt]
- def Main(self):
- self.logsetup.Init()
- logging.debug("Started with args %r", sys.argv)
- try:
- (self.options, self.args) = self.ParseArgs()
- self.cfg = config.Config(constants.CONFIG_FILE)
- self._ConfigLogging()
- self.Run()
- except (SystemExit, KeyboardInterrupt):
- raise
- except Exception:
- logging.exception("Caught exception")
- sys.exit(constants.EXIT_FAILURE)
- def ParseArgs(self):
- parser = optparse.OptionParser(option_list=self.BuildOptions(),
- formatter=optparse.TitledHelpFormatter())
- return parser.parse_args()
- def _ConfigLogging(self):
- """Configures the logging module.
- """
- debug = self.options.debug or self.cfg.debug
- logopts = utils.LoggingSetupOptions(debug, self.options.logtostderr)
- self.logsetup.SetOptions(logopts)
- def Run(self):
- raise NotImplementedError()