Total Complexity | 2 |
Total Lines | 42 |
Duplicated Lines | 0 % |
Coverage | 75% |
Changes | 0 |
1 | """ |
||
2 | weitersager.cli |
||
3 | ~~~~~~~~~~~~~~~ |
||
4 | |||
5 | Command line entry point |
||
6 | |||
7 | :Copyright: 2007-2021 Jochen Kupperschmidt |
||
8 | :License: MIT, see LICENSE for details. |
||
9 | """ |
||
10 | |||
11 | 1 | from argparse import ArgumentParser, Namespace |
|
12 | 1 | from pathlib import Path |
|
13 | 1 | import sys |
|
14 | 1 | from typing import List |
|
15 | |||
16 | 1 | from . import VERSION |
|
17 | 1 | from .config import load_config |
|
18 | 1 | from .processor import start |
|
19 | 1 | from .util import configure_logging |
|
20 | |||
21 | |||
22 | 1 | def parse_args(args: List[str]) -> Namespace: |
|
23 | """Parse command line arguments.""" |
||
24 | 1 | parser = ArgumentParser() |
|
25 | 1 | parser.add_argument( |
|
26 | '--version', action='version', version=f'Weitersager {VERSION}' |
||
27 | ) |
||
28 | 1 | parser.add_argument('config_filename', type=Path) |
|
29 | 1 | return parser.parse_args(args) |
|
30 | |||
31 | |||
32 | 1 | def main() -> None: |
|
33 | """Load the configuration file, start the IRC bot and HTTP listen server.""" |
||
34 | namespace = parse_args(sys.argv[1:]) |
||
35 | config = load_config(namespace.config_filename) |
||
36 | configure_logging(config.log_level) |
||
37 | start(config) |
||
38 | |||
39 | |||
40 | 1 | if __name__ == '__main__': |
|
41 | main() |
||
42 |