# -*- coding: utf-8 mode: python -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8

"""Module permettant d'importer automatiquement le contenu de tous les modules
de 'ulib.base'.

Ce module doit être utilisé de cette manière:

    from ulib.all import *
"""


__all__ = []

# Liste des modules à importer automatiquement
try:
    from ULIB_CONFIG import MODULES
except ImportError:
    MODULES = ('encoding', 'base', 'env', 'uio',
               'output', 'input', 'encdetect',
               'procs', 'paths', 'htmlentities', 'dates', 'times', 'words',
               'tmpfiles', 'lines', 'files', 'config', 'editor', 'pager',
               'getopt', 'optparse', 'args', 'control',
               'functions', 'json', 'web', 'url',
               'flock',
               'password',
               )
MODULES = list(MODULES)
def __has_module_and_remove(m, remove=True):
    if m in MODULES:
        if remove: MODULES.remove(m)
        return True
    return False

from ulib.base.pversion import VersionMismatchError
from ulib.base.base import import__module__, import__all__

# Modules pour gérer les options
if __has_module_and_remove('getopt'):
    __all__.extend(import__all__('getopt', globals(), locals(), 'getopt'))
if __has_module_and_remove('optparse'):
    __all__.extend(import__module__('ulib.optparse', globals(), locals()))
    __all__.extend(import__all__('ulib.optparse', globals(), locals(), 'OptionParser'))
if __has_module_and_remove('json'):
    __all__.extend(import__module__('ulib.json', globals(), locals()))
if __has_module_and_remove('web'):
    try: __all__.extend(import__module__('ulib.web', globals(), locals()))
    except VersionMismatchError: pass

# Autres modules à importer en entier
for name in MODULES:
    module_name = 'ulib.base.%s' % name
    try: __all__.extend(import__all__(module_name, globals(), locals()))
    except VersionMismatchError: continue

# Module control
if __has_module_and_remove('control', False):
    import ulib.base.control
    ulib.base.control.enable_exit_control()

# Cleanup
__all__ = tuple(__all__)
del __has_module_and_remove
del VersionMismatchError
del import__module__
del import__all__
del name
