ó
Ě	g]c           @   s   d  d l  m Z d  d l  m Z d d l m Z d d l m Z d  d l Z d  d l Z d e	 f d     YZ
 d	 d d
     YZ d S(   i˙˙˙˙(   t   path(   t   _exiti   (   t   Dbg(   t   dumpNt   CfgErrorc           B   s   e  Z d    Z d   Z RS(   c         C   s   | |  _  d  S(   N(   t   msg(   t   selft   error(    (    s'   /srv/kernel/kteam-tools/libs/ktl/cfg.pyt   __init__   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s'   /srv/kernel/kteam-tools/libs/ktl/cfg.pyt   __str__   s    (   t   __name__t
   __module__R   R	   (    (    (    s'   /srv/kernel/kteam-tools/libs/ktl/cfg.pyR      s   	t   Cfgc           B   s&   e  Z e d     Z e d    Z RS(   c      	   C   s˘   t  j d  i  } t j |  r t | d  [ } y t j |  } Wn- t k
 rv | j d  t	 j
 |  } n Xt  j d |  Wd QXn  t  j d  | S(   sN   
        Load the passed in file as a json format configuration file.
        s   utils.load_user_configt   ri    s   user config file (%s) loaded
N(   R   t   enterR    t   existst   opent   jsont   loadt
   ValueErrort   seekt   yamlt	   safe_loadt   verboset   leave(   t   clst   fnamet   user_configt   f(    (    s'   /srv/kernel/kteam-tools/libs/ktl/cfg.pyt   load_user_config   s    c         C   sş  t  j d  i  } x | D] } | | | | <q Wd } d | k rU | d | d <n* d | k rr | d | d <n t  j d  d | k rt  j d | d  d | d k rÖ | d j d t j d   | d <n  |  j | d  } x | D] } | | | | <qđ Wn  x | D] } | | | | <qWd t  j k rŠt  j d  t  j d  x3 | D]+ } d	 | } t  j d
 | | | f  qZWd | d k rŠt	 d  qŠn  t  j
 d  | S(   sĐ   
        Merge the application options together into a final options dictionary. Options
        are taken from application defaults, an optional configuration file and from the
        command line.
        s   utils.merge_config_optionst   configuration_files'   No configuration_file option specified
s)   configuration_file option specified (%s)
t   ~t   cfgs   Configuration:
s2   -------------------------------------------------
s   %ss       %-25s = "%s"
t   exitt   debugi    N(   R   R   t   NoneR   t   replaceR    t
   expanduserR   t   levelsR   R   (   R   t   defaultst   cmdline_optionsR    t   kt	   cfg_fnamet   cfg_file_optionst   str(    (    s'   /srv/kernel/kteam-tools/libs/ktl/cfg.pyt   merge_options2   s:    &
 (   R
   R   t   classmethodR   R-   (    (    (    s'   /srv/kernel/kteam-tools/libs/ktl/cfg.pyR      s   (    (   t   osR    R   t   dbgR   t   utilsR   R   R   t	   ExceptionR   R   (    (    (    s'   /srv/kernel/kteam-tools/libs/ktl/cfg.pyt   <module>   s   