# Source code for watchme.defaults

    '''

    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/.

    The watcher is actually a connection to crontab. This is what helps to schedule
    the watched to check for changes at some frequency, and update the files.

    '''

    from watchme.logger import bot
    from watchme.utils import get_userhome
    import os
    import sys

    ################################################################################
    # environment / options
    ################################################################################

    def getenv(variable_key, default=None, required=False, silent=True):
        ''' attempt to get an environment variable. If the variable
            is not found, None is returned.

            Parameters
            ==========
            variable_key: the variable name
            required: exit with error if not found
            silent: Do not print debugging information for variable
        '''
        variable = os.environ.get(variable_key, default)
        if variable is None and required:
            bot.error("Cannot find environment variable %s, exiting." % variable_key)
            sys.exit(1)

        if not silent and variable is not None:
            bot.verbose("%s found as %s" %(variable_key,variable))

        return variable

    ################################################################################
    # Helpme

    USERHOME = get_userhome()

    WATCHME_WATCHER = getenv('WATCHME_WATCHER', 'watcher')
    _config = os.path.join(USERHOME, ".watchme")
    WATCHME_BASE_DIR = getenv('WATCHME_BASE_DIR', _config)
    WATCHME_WORKERS = int(getenv('WATCHME_WORKERS', 9))

    # The types of valid watchers (currently only urls). Corresponds with
    # a folder under "main/watchers"
    WATCHME_TASK_TYPES = ['urls', 'url', 'gpu', 'psutils', 'results']
    WATCHME_DEFAULT_TYPE = "urls"

    # Parameters not allowed for task clients, set by TaskBase
    WATCHME_NOTALLOWED_PARAMS = ['type', 'active']