Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: infra_libs/app.py

Issue 2213143002: Add infra_libs as a bootstrap dependency. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Removed the ugly import hack Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: infra_libs/app.py
diff --git a/infra_libs/app.py b/infra_libs/app.py
deleted file mode 100644
index b04a98bf25e0e99c6b63e6735b8b365180748bc0..0000000000000000000000000000000000000000
--- a/infra_libs/app.py
+++ /dev/null
@@ -1,136 +0,0 @@
-# Copyright 2015 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-import argparse
-import datetime
-import logging
-import os
-import sys
-
-import psutil
-
-from infra_libs import logs
-from infra_libs import ts_mon
-
-
-class BaseApplication(object):
- """Encapsulates common boilerplate for setting up an application.
-
- Subclasses must implement the main() method, and will usually also implement
- add_argparse_options().
-
- By default this will initialise logging and timeseries monitoring (ts_mon)
- modules.
-
- Minimal example::
-
- import infra_libs
-
- class MyApplication(infra_libs.BaseApplication):
- def main(self, opts):
- # Do stuff.
-
- if __name__ == '__main__':
- MyApplication().run()
-
- Class variables (override these in your class definition):
- PROG_NAME: The program name to display in the --help message. Defaults to
- sys.argv[0]. Passed to argparse.ArgumentParser.
- DESCRIPTION: Text to display in the --help message. Passed to
- argparse.ArgumentParser.
- USES_STANDARD_LOGGING: Whether to configure the standard logging libraries.
- Defaults to True.
- USES_TS_MON: Whether to configure timeseries monitoring. Defaults to True.
-
- Instance variables (use these in your application):
- opts: The argparse.Namespace containing parsed commandline arguments.
- """
-
- PROG_NAME = None
- DESCRIPTION = None
- USES_STANDARD_LOGGING = True
- USES_TS_MON = True
-
- def __init__(self):
- self.opts = None
- self.parser = None
-
- def add_argparse_options(self, parser):
- """Register any arguments used by this application.
-
- Override this method and call parser.add_argument().
-
- Args:
- parser: An argparse.ArgumentParser object.
- """
-
- if self.USES_STANDARD_LOGGING:
- logs.add_argparse_options(parser)
- if self.USES_TS_MON:
- ts_mon.add_argparse_options(parser)
-
- def process_argparse_options(self, options):
- """Process any commandline arguments.
-
- Args:
- options: An argparse.Namespace object.
- """
-
- if self.USES_STANDARD_LOGGING:
- logs.process_argparse_options(options)
- if self.USES_TS_MON:
- ts_mon.process_argparse_options(options)
-
- def main(self, opts):
- """Your application's main method.
-
- Do the work of your application here. When this method returns the
- application will exit.
-
- Args:
- opts: An argparse.Namespace containing parsed commandline options. This
- is passed as an argument for convenience but is also accessible as an
- instance variable (self.opts).
-
- Return:
- An integer exit status, or None to use an exit status of 0.
- """
- raise NotImplementedError
-
- def run(self, args=None):
- """Main application entry point."""
-
- if args is None: # pragma: no cover
- args = sys.argv
-
- # Add and parse commandline args.
- self.parser = argparse.ArgumentParser(
- description=self.DESCRIPTION,
- prog=self.PROG_NAME or args[0],
- formatter_class=argparse.RawTextHelpFormatter)
-
- self.add_argparse_options(self.parser)
- self.opts = self.parser.parse_args(args[1:])
- self.process_argparse_options(self.opts)
-
- # Print a startup log message.
- logging.info('Process started at %s', datetime.datetime.utcfromtimestamp(
- psutil.Process().create_time()).isoformat())
- logging.info('Command line arguments:')
- for index, arg in enumerate(sys.argv):
- logging.info('argv[%d]: %s', index, arg)
- logging.info('Process id %d', os.getpid())
- logging.info('Current working directory %s', os.getcwd())
-
- # Run the application's main function.
- try:
- status = self.main(self.opts)
- except Exception:
- logging.exception('Uncaught exception, exiting:')
- if self.USES_TS_MON:
- # Flushing ts_mon to try to report the exception.
- ts_mon.flush()
- status = 1
-
- sys.exit(status)
« bootstrap/deps.pyl ('K') | « infra_libs/__init__.py ('k') | infra_libs/authentication.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698