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): |