#!/usr/bin/env python3

import os
import envtpl
from mflog import get_logger
from mfplugin.manager import PluginsManager

MFMODULE_RUNTIME_HOME = os.environ["MFMODULE_RUNTIME_HOME"]
MFBASE_PLUGINS_HOME = os.path.join(MFMODULE_RUNTIME_HOME, "var", "plugins")
MFMODULE_HOME = os.environ["MFMODULE_HOME"]


LOGGER = get_logger("_make_circus_conf")
manager = PluginsManager(MFBASE_PLUGINS_HOME)


def get_conf(plugin, hot_swap_plugin=False):
    plugin.reload()
    return plugin


plugin_confs = []
plugins = list(manager.plugins.values())
for plugin in plugins:
    try:
        plugin.load_full()
    except Exception as e:
        LOGGER.warning("invalid plugin: %s (%s) => ignoring it ; details: %s" %
                       (plugin.name, plugin.home, e))
        continue
    with plugin.plugin_env_context():
        p = get_conf(plugin)
    if p is None:
        continue
    plugin_confs.append(p)

circus_ini_file = os.path.join(os.environ['MFMODULE_HOME'], 'config',
                               'circus.ini')

with open(circus_ini_file, "r") as f:
    extra_variables = {
        "PLUGINS": plugin_confs
    }
    content = envtpl.render_string(f.read(),
                                   extra_variables=extra_variables,
                                   keep_multi_blank_lines=False)

print(content)
