pgtoolkit/toolbase.py
changeset 102 fda45bdfd68d
parent 101 2a2d0d5df03b
equal deleted inserted replaced
101:2a2d0d5df03b 102:fda45bdfd68d
    41 
    41 
    42     def specify_args(self):
    42     def specify_args(self):
    43         self.config.add_option('databases', dict)
    43         self.config.add_option('databases', dict)
    44         self.config.add_option('meta_db')
    44         self.config.add_option('meta_db')
    45         self.config.add_option('meta_query')
    45         self.config.add_option('meta_query')
    46         self.parser.add_argument('-Q', dest='queries', action='store_true',
    46         self.parser.add_argument('-Q', dest='show_queries', action='store_true',
    47             help='Print database queries.')
    47             help='Print database queries.')
    48 
    48         self.parser.add_argument('-C', dest='config_file', type=str,
    49     def load_args(self, args=None, config_file=None):
    49             help='Additional config file (besides pgtoolkit.conf).')
    50         self.config.load(config_file or 'pgtoolkit.conf')
    50 
       
    51     def load_args(self, args=None, config_file=None):
       
    52         # Parse command line arguments
    51         self.args = self.parser.parse_args(args)
    53         self.args = self.parser.parse_args(args)
       
    54         # Load global config
       
    55         self.config.load('/etc/pgtoolkit.conf', must_exist=False)
       
    56         # Load local config
       
    57         self.config.load(config_file or 'pgtoolkit.conf', must_exist=False)
       
    58         # Load additional config
       
    59         if self.args.config_file:
       
    60             self.config.load(self.args.config_file)
    52 
    61 
    53     def init_logging(self):
    62     def init_logging(self):
    54         # logging
    63         # logging
    55         format = ColoredFormatter(highlight(1,7,0)+'%(asctime)s %(levelname)-5s'+highlight(0)+' %(message)s', '%H:%M:%S')
    64         format = ColoredFormatter(highlight(1,7,0)+'%(asctime)s %(levelname)-5s'+highlight(0)+' %(message)s', '%H:%M:%S')
    56         handler = logging.StreamHandler()
    65         handler = logging.StreamHandler()
    62 
    71 
    63         log_notices = logging.getLogger('pgmanager_notices')
    72         log_notices = logging.getLogger('pgmanager_notices')
    64         log_notices.addHandler(handler)
    73         log_notices.addHandler(handler)
    65         log_notices.setLevel(logging.DEBUG)
    74         log_notices.setLevel(logging.DEBUG)
    66 
    75 
    67         if self.args.queries:
    76         if self.args.show_queries:
    68             log_sql = logging.getLogger('pgmanager_sql')
    77             log_sql = logging.getLogger('pgmanager_sql')
    69             log_sql.addHandler(handler)
    78             log_sql.addHandler(handler)
    70             log_sql.setLevel(logging.DEBUG)
    79             log_sql.setLevel(logging.DEBUG)
    71 
    80 
    72     def prepare_conn_from_metadb(self, name, lookup_name):
    81     def prepare_conn_from_metadb(self, name, lookup_name):
   121     def __init__(self, name, desc=None, **kwargs):
   130     def __init__(self, name, desc=None, **kwargs):
   122         ToolBase.__init__(self, name, desc, **kwargs)
   131         ToolBase.__init__(self, name, desc, **kwargs)
   123 
   132 
   124     def specify_args(self):
   133     def specify_args(self):
   125         ToolBase.specify_args(self)
   134         ToolBase.specify_args(self)
   126         self.parser.add_argument('target', metavar='target', type=str, help='Target database')
   135         self.config.add_option('target', type=str, default=None)
       
   136         self.parser.add_argument('target', nargs='?', type=str, help='Target database')
       
   137 
       
   138     def load_args(self, args=None, config_file=None):
       
   139         ToolBase.load_args(self, args, config_file)
       
   140         self.target = self.args.target or self.config.target or 'default'
   127 
   141 
   128     def setup(self, args=None):
   142     def setup(self, args=None):
   129         ToolBase.setup(self, args)
   143         ToolBase.setup(self, args)
   130         self.prepare_conns(target=self.args.target)
   144         self.prepare_conns(target=self.target)
   131 
   145 
   132 
   146 
   133 class SrcDstTool(ToolBase):
   147 class SrcDstTool(ToolBase):
   134 
   148 
   135     def __init__(self, name, desc=None, *, allow_reverse=False, force_reverse=False, **kwargs):
   149     def __init__(self, name, desc=None, *, allow_reverse=False, force_reverse=False, **kwargs):