|
| 1 | +"""Package entrypoint.""" |
1 | 2 | import argparse |
2 | | -import logging |
3 | 3 | import json |
| 4 | +import logging |
4 | 5 | from pathlib import Path |
5 | 6 |
|
6 | 7 | from ruamel.yaml import YAML |
|
11 | 12 |
|
12 | 13 |
|
13 | 14 | def main() -> None: |
| 15 | + """Start the bot.""" |
14 | 16 | # Read args |
15 | 17 | parser = argparse.ArgumentParser(prog=config.PACKAGE_NAME, description="IRC URL title posting bot") |
16 | | - parser.add_argument('--config-path', required=True, help='Configuration file path, e.g. /some/dir/config.yaml') |
| 18 | + parser.add_argument("--config-path", required=True, help="Configuration file path, e.g. /some/dir/config.yaml") |
17 | 19 | instance_config_path = Path(parser.parse_args().config_path) |
18 | 20 |
|
19 | 21 | # Read user config |
20 | | - log.debug('Reading instance configuration file %s', instance_config_path) |
| 22 | + log.debug("Reading instance configuration file %s", instance_config_path) |
21 | 23 | instance_config = YAML().load(instance_config_path) |
22 | 24 | instance_config = json.loads(json.dumps(instance_config)) # Recursively use a dict as the data structure. |
23 | 25 |
|
24 | 26 | # Log user config |
25 | 27 | logged_instance_config = instance_config.copy() |
26 | | - if 'sites' in logged_instance_config: |
27 | | - del logged_instance_config['sites'] |
28 | | - log.info('Read user configuration file %s having excerpted configuration: %s', |
29 | | - instance_config_path, logged_instance_config) |
30 | | - for site, site_config in instance_config.get('sites', {}).items(): |
31 | | - log.info('User configuration for site %s is: %s', site, site_config) |
| 28 | + if "sites" in logged_instance_config: |
| 29 | + del logged_instance_config["sites"] |
| 30 | + log.info( |
| 31 | + "Read user configuration file %s having excerpted configuration: %s", |
| 32 | + instance_config_path, |
| 33 | + logged_instance_config, |
| 34 | + ) |
| 35 | + for site, site_config in instance_config.get("sites", {}).items(): |
| 36 | + log.info("User configuration for site %s is: %s", site, site_config) |
32 | 37 |
|
33 | 38 | # Set alerts channel |
34 | | - if 'alerts_channel' not in instance_config: |
35 | | - instance_config['alerts_channel'] = config.ALERTS_CHANNEL_FORMAT_DEFAULT |
36 | | - instance_config['alerts_channel'] = instance_config['alerts_channel'].format(nick=instance_config['nick']) |
37 | | - if instance_config['alerts_channel'] not in instance_config['channels']: |
38 | | - instance_config['channels'].append(instance_config['alerts_channel']) |
| 39 | + if "alerts_channel" not in instance_config: |
| 40 | + instance_config["alerts_channel"] = config.ALERTS_CHANNEL_FORMAT_DEFAULT |
| 41 | + instance_config["alerts_channel"] = instance_config["alerts_channel"].format(nick=instance_config["nick"]) |
| 42 | + if instance_config["alerts_channel"] not in instance_config["channels"]: |
| 43 | + instance_config["channels"].append(instance_config["alerts_channel"]) |
39 | 44 |
|
40 | 45 | # Process user config |
41 | | - instance_config['nick:casefold'] = instance_config['nick'].casefold() |
42 | | - instance_config['channels:casefold'] = [channel.casefold() for channel in instance_config['channels']] |
43 | | - instance_config['ignores:casefold'] = [ignore.casefold() for ignore in instance_config.get('ignores', [])] |
| 46 | + instance_config["nick:casefold"] = instance_config["nick"].casefold() |
| 47 | + instance_config["channels:casefold"] = [channel.casefold() for channel in instance_config["channels"]] |
| 48 | + instance_config["ignores:casefold"] = [ignore.casefold() for ignore in instance_config.get("ignores", [])] |
44 | 49 |
|
45 | 50 | # Process blacklist |
46 | | - blacklists = instance_config['blacklist'] = instance_config.get('blacklist', {}) |
47 | | - blacklists['title'] = set(blacklists.get('title', set())) |
48 | | - blacklists['title'] = {entry.casefold() for entry in blacklists['title']} |
49 | | - blacklists['url'] = set(blacklists.get('url', set())) |
| 51 | + blacklists = instance_config["blacklist"] = instance_config.get("blacklist", {}) |
| 52 | + blacklists["title"] = set(blacklists.get("title", set())) |
| 53 | + blacklists["title"] = {entry.casefold() for entry in blacklists["title"]} |
| 54 | + blacklists["url"] = set(blacklists.get("url", set())) |
50 | 55 |
|
51 | 56 | config.INSTANCE = instance_config |
52 | 57 |
|
53 | 58 | # Start bot |
54 | 59 | Bot() |
55 | 60 |
|
56 | 61 |
|
57 | | -if __name__ == '__main__': |
| 62 | +if __name__ == "__main__": |
58 | 63 | main() |
0 commit comments