Source code for rse.main.config

"""

Copyright (C) 2020 Vanessa Sochat.

This Source Code Form is subject to the terms of the
Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed
with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

"""

import configparser
import logging
import os
import shutil
import sys

here = os.path.dirname(os.path.abspath(__file__))

bot = logging.getLogger("rse.main.config")


[docs]class Config: def __init__(self, config_file="rse.ini", load=True, generate=False): """Controller for an rse.ini config file.""" self.configfile = os.path.abspath(config_file) # If the config file doesn't exist, generate it if not os.path.exists(self.configfile): if generate: default_config = os.path.join(here, "config.ini") bot.info( "Generating configuration file %s" % os.path.basename(self.configfile) ) shutil.copyfile(default_config, self.configfile) else: sys.exit( "rse.ini not found, specify with --config_file or move to directory." ) # Load the config file if wanted if load and os.path.exists(self.configfile): self.read()
[docs] def get(self, section, key): """A wrapper to config.get to directly interact with the self.config""" return self.config.get(section, key)
[docs] def update(self, section, key, value, save=False): """update client secrets will update the data structure for a particular authentication. This should only be used for a (quasi permanent) token or similar. The secrets file, if found, is updated and saved by default. """ if section not in self.config: self.config[section] = {} self.config[section][key] = value # If save is true (to persist settings) if save: self.save()
[docs] def save(self): """save configuration back to it's original file""" with open(self.configfile, "w") as configfile: self.config.write(configfile)
[docs] def read(self, configfile=None): """read in configuration file. By default use self.configfile.""" configfile = configfile or self.configfile config = configparser.ConfigParser() config.read(configfile) self.config = config