# -*- mode: python -*-
# -*- coding: utf-8 -*-

"""Chargement de la configuration locale
"""
import os
import sys

from app.scodoc.notes_log import log
from app.scodoc import sco_config

# scodoc_local defines a CONFIG object
# here we check if there is a local config file


def load_local_configuration(scodoc_cfg_dir):
    """Load local configuration file (if exists)
    and merge it with CONFIG.
    """
    # this path should be synced with upgrade.sh
    LOCAL_CONFIG_FILENAME = os.path.join(scodoc_cfg_dir, "scodoc_local.py")
    LOCAL_CONFIG = None
    if os.path.exists(LOCAL_CONFIG_FILENAME):
        if not scodoc_cfg_dir in sys.path:
            sys.path.insert(1, scodoc_cfg_dir)
        try:
            from scodoc_local import CONFIG as LOCAL_CONFIG

            log("imported %s" % LOCAL_CONFIG_FILENAME)
        except ImportError:
            log("Error: can't import %s" % LOCAL_CONFIG_FILENAME)
        del sys.path[1]
    if LOCAL_CONFIG is None:
        return
    # Now merges local config in our CONFIG
    for x in [x for x in dir(LOCAL_CONFIG) if x[0] != "_"]:
        v = getattr(LOCAL_CONFIG, x)
        if not v in sco_config.CONFIG:
            log("Warning: local config setting unused parameter %s (skipped)" % x)
        else:
            if v != sco_config.CONFIG[x]:
                log("Setting parameter %s from %s" % (x, LOCAL_CONFIG_FILENAME))
                sco_config.CONFIG[x] = v
