|
25 | 25 | from garf_io import reader |
26 | 26 |
|
27 | 27 | import garf_executors |
28 | | -from garf_executors import exceptions |
| 28 | +from garf_executors import config, exceptions |
29 | 29 | from garf_executors.entrypoints import utils |
30 | 30 |
|
31 | 31 |
|
32 | 32 | def main(): |
33 | 33 | parser = argparse.ArgumentParser() |
34 | 34 | parser.add_argument('query', nargs='*') |
35 | | - parser.add_argument('-c', '--config', dest='garf_config', default=None) |
| 35 | + parser.add_argument('-c', '--config', dest='config', default=None) |
36 | 36 | parser.add_argument('--source', dest='source', default=None) |
37 | 37 | parser.add_argument('--output', dest='output', default='console') |
38 | 38 | parser.add_argument('--input', dest='input', default='file') |
@@ -64,34 +64,39 @@ def main(): |
64 | 64 | raise exceptions.GarfExecutorError( |
65 | 65 | 'Please provide one or more queries to run' |
66 | 66 | ) |
67 | | - config = utils.ConfigBuilder('garf').build(vars(args), kwargs) |
68 | | - logger.debug('config: %s', config) |
69 | | - |
70 | | - if config.params: |
71 | | - config = utils.initialize_runtime_parameters(config) |
72 | | - logger.debug('initialized config: %s', config) |
73 | | - |
74 | | - extra_parameters = utils.ParamsParser(['source']).parse(kwargs) |
75 | | - source_parameters = extra_parameters.get('source', {}) |
76 | 67 | reader_client = reader.create_reader(args.input) |
77 | | - |
78 | | - context = garf_executors.api_executor.ApiExecutionContext( |
79 | | - query_parameters=config.params, |
80 | | - writer=args.output, |
81 | | - writer_parameters=config.writer_params, |
82 | | - fetcher_parameters=source_parameters, |
83 | | - ) |
84 | | - query_executor = garf_executors.setup_executor( |
85 | | - args.source, context.fetcher_parameters |
86 | | - ) |
87 | | - if args.parallel_queries: |
88 | | - logger.info('Running queries in parallel') |
| 68 | + if config_file := args.config: |
| 69 | + execution_config = config.Config.from_file(config_file) |
| 70 | + if not (context := execution_config.sources.get(args.source)): |
| 71 | + raise exceptions.GarfExecutorError('Missing context') |
| 72 | + query_executor = garf_executors.setup_executor( |
| 73 | + args.source, context.fetcher_parameters |
| 74 | + ) |
89 | 75 | batch = {query: reader_client.read(query) for query in args.query} |
90 | 76 | query_executor.execute_batch(batch, context, args.parallel_queries) |
91 | 77 | else: |
92 | | - logger.info('Running queries sequentially') |
93 | | - for query in args.query: |
94 | | - query_executor.execute(reader_client.read(query), query, context) |
| 78 | + extra_parameters = utils.ParamsParser( |
| 79 | + ['source', args.writer, 'macro', 'template'] |
| 80 | + ).parse(kwargs) |
| 81 | + source_parameters = extra_parameters.get('source', {}) |
| 82 | + |
| 83 | + context = garf_executors.api_executor.ApiExecutionContext( |
| 84 | + query_parameters=config.params, |
| 85 | + writer=args.output, |
| 86 | + writer_parameters=config.writer_params, |
| 87 | + fetcher_parameters=source_parameters, |
| 88 | + ) |
| 89 | + query_executor = garf_executors.setup_executor( |
| 90 | + args.source, context.fetcher_parameters |
| 91 | + ) |
| 92 | + if args.parallel_queries: |
| 93 | + logger.info('Running queries in parallel') |
| 94 | + batch = {query: reader_client.read(query) for query in args.query} |
| 95 | + query_executor.execute_batch(batch, context, args.parallel_queries) |
| 96 | + else: |
| 97 | + logger.info('Running queries sequentially') |
| 98 | + for query in args.query: |
| 99 | + query_executor.execute(reader_client.read(query), query, context) |
95 | 100 |
|
96 | 101 |
|
97 | 102 | if __name__ == '__main__': |
|
0 commit comments