Source code for tcpnetlock.cli.common

import argparse
import logging

logger = logging.getLogger(__name__)


[docs]class BaseMain: def __init__(self): self.parser = argparse.ArgumentParser() self.args = None
[docs] def add_logging_arguments(self): self.parser.add_argument( "--debug", default=False, action='store_true') self.parser.add_argument( "--info", default=False, action='store_true')
[docs] def add_app_arguments(self): raise NotImplementedError()
[docs] def create_parser(self): self.add_app_arguments() self.add_logging_arguments()
[docs] def create_args(self, args): assert self.parser self.args = self.parser.parse_args(args)
[docs] def setup_logging(self): assert self.args if self.args.debug: logging.basicConfig(level=logging.DEBUG) elif self.args.info: logging.basicConfig(level=logging.INFO) else: logging.basicConfig(level=logging.WARNING)
[docs] def run(self, args): self.create_parser() self.create_args(args) self.setup_logging() self.main()
[docs] def main(self): raise NotImplementedError()
[docs]class PositiveInteger: def __init__(self, allow_zero=True): self.allow_zero = allow_zero def __call__(self, value): int_value = int(value) if self.allow_zero: if int_value < 0: raise argparse.ArgumentTypeError("{value} is an invalid positive int value".format(value=int_value)) else: if int_value <= 0: raise argparse.ArgumentTypeError("{value} is an invalid positive int value".format(value=int_value)) return int_value
""" Example: class Main(utils.BaseMain): def add_app_arguments(self): parser = self.parser parser.add_argument("--host", default='localhost') parser.add_argument("--port", default=server.TCPServer.DEFAULT_PORT, type=int) def main(self): pass def main(): Main().run(args=sys.argv[1:]) if __name__ == '__main__': main() """