Source code for watchme.config

'''

Copyright (C) 2019 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/.

'''

from watchme.logger import bot
from watchme.defaults import ( 
    WATCHME_WATCHER, 
    WATCHME_BASE_DIR,
    WATCHME_DEFAULT_TYPE
)
from watchme.utils import ( 
    get_installdir, 
    read_file 
)
import configparser
import getpass
import shutil
import os


# CONFIG TEMPLATES #############################################################

[docs]def get_configfile_template(): '''return the full path to the default configuration file ''' return _get_config('watchme.cfg')
def _get_config(name): '''shared function to return a file in the config directory ''' return os.path.abspath(os.path.join(get_installdir(), 'config', name)) # ACTIVE CONFIG FILES ##########################################################
[docs]def get_configfile(name, base=None): '''return the full path to a specific watcher configuration ''' if base is None: base = WATCHME_BASE_DIR configfile = os.path.join(base, name, 'watchme.cfg') check_exists(configfile) return configfile
# CONFIG IO ####################################################################
[docs]def write_config(filename, config, mode="w"): '''use configparser to write a config object to filename ''' with open(filename, mode) as filey: config.write(filey) return filename
[docs]def read_config(filename): '''use configparser to write a config object to filename ''' check_exists(filename) config = configparser.ConfigParser() config.read(filename) return config
# WATCHER CONFIG ###############################################################
[docs]def generate_watcher_config(path, watcher_type=None): '''generate a watcher config, meaning a watcher folder in the watchme base folder. Parameters ========== path: the path to the watcher repository ''' check_exists(path) configfile = get_configfile_template() watcher_config = os.path.join(path, 'watchme.cfg') if not os.path.exists(watcher_config): bot.info('Generating watcher config %s' % watcher_config) shutil.copyfile(configfile, watcher_config) # Complete generation includes the watcher type if watcher_type is None: watcher_type = WATCHME_DEFAULT_TYPE # The template config has the section, but just in case config = read_config(configfile) if 'watcher' not in config.sections(): config.add_section('watcher') config['watcher']['type'] = watcher_type # Save to file write_config(watcher_config, config)
# CONFIG HELPERS ###############################################################
[docs]def check_exists(filename): '''a general helper function to check for existence, and exit if not found. ''' if not os.path.exists(filename): bot.exit('Cannot find %s' % filename)