diff --git a/janine/janine.py b/janine/janine.py index 62ff9ec..38b9a11 100644 --- a/janine/janine.py +++ b/janine/janine.py @@ -22,6 +22,7 @@ import configparser import logging import asyncio from collections import namedtuple +from optparse import OptionParser import aioxmpp from aioxmpp.structs import PresenceShow @@ -104,7 +105,7 @@ class WarningBot: This class represents the actual bot. The only things to be done is call connect() after creating an instance. ''' - def __init__(self): + def __init__(self, config_file): self._warnings0 = [] self._warnings1 = [] self._client = None @@ -116,7 +117,7 @@ class WarningBot: self._client_store = '' self._warning_store = '' - self._load_config() + self._load_config(config_file) async def connect(self): ''' @@ -126,12 +127,13 @@ class WarningBot: self._jid, aioxmpp.make_security_layer(self._password)) + log.debug('Connecting to server') async with self._client.connected(): log.info('Client connected to server') # In case you want a nice avatar if self._avatar: - log.info('Setting avatar') + log.debug('Setting avatar') with open(self._avatar, 'rb') as avatar_file: image_data = avatar_file.read() @@ -139,6 +141,7 @@ class WarningBot: avatar_set.add_avatar_image('image/png', image_bytes=image_data) await (self._client.summon(aioxmpp.avatar.AvatarService) .publish_avatar_set(avatar_set)) + log.info('Avatar set') # Set some presence information self._client.set_presence( @@ -311,27 +314,27 @@ help - Gebe diese Hilfe aus''' msg.body[None] = body await self._client.send(msg) - def _load_config(self): + def _load_config(self, config_file): # Load config - config_path = sys.argv[1] if len(sys.argv) == 2 else '/etc/janine/janine.conf' config = configparser.ConfigParser() - config.read(config_path) + config.read(config_file) # Configure sources self._sources = sources_from_config(config) - self._data_dir = config['General'].get('DataDir', '/etc/janine') + self._data_dir = config['General'].get('DataDir', '/etc/janine/data') self._recipients = config['General']['Recipients'].split(',') self._refresh_timeout = int(config['General']['Timeout']) self._same_domain = config['General'].get('SameDomain', 'True') == 'True' # Persistent data - # Subscribed clients + ## Subscribed clients self._client_store = os.path.join(self._data_dir, 'clients.json') if os.path.exists(self._client_store): with open(self._client_store, 'r') as clients_file: self._warn_clients = json.loads(clients_file.read()) log.info('Clients read from disk') - + + ## Warnings self._warnings_file = os.path.join(self._data_dir, 'warnings.json') if os.path.exists(self._warnings_file): with open(self._warnings_file, 'r') as warnings_file: @@ -339,9 +342,8 @@ help - Gebe diese Hilfe aus''' json.loads(warnings_file.read()))) log.info('Warnings read from disk') - # Landkreise + ## Landkreise self._channels = [] - channels = {} self._channel_file = os.path.join(self._data_dir, 'channels.json') if not os.path.exists(self._channel_file): log.info('Requesting search channels') @@ -371,7 +373,19 @@ def main(): ''' Main function. ''' - bot = WarningBot() + parser = OptionParser() + parser.add_option('-d', '--debug', action='store_true', dest='debug', default=False) + (options, args) = parser.parse_args() + + if options.debug: + log.setLevel(logging.DEBUG) + + if len(args) != 0: + config_file = args[0] + else: + config_file = '/etc/janine/janine.conf' + + bot = WarningBot(config_file) loop = asyncio.get_event_loop() loop.run_until_complete(bot.connect()) loop.close()