ó
d‘`c           @   sA  d  d l  m Z m Z y d  d l m Z Wn d  d l m Z n Xd  d l m Z d  d l Z d  d l	 m
 Z
 m Z d  d l m Z d  d l m Z d  d l m Z d	 „  Z d
 „  Z e e d „ Z d „  Z e e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d e f d „  ƒ  YZ d „  Z d „  Z  d S(   iÿÿÿÿ(   t   stdoutt   stderr(   t   getstatusoutput(   t   DecimalN(   t   existst   getmtime(   t   time(   t   datetime(   t   Dbgc         C   sŽ   d  } t |  ƒ t k r„ t |  ƒ t k r? |  j d d ƒ } qŠ t |  ƒ t k r` t |  ƒ } qŠ t |  ƒ t k rŠ t |  ƒ } qŠ n |  } | S(   Nt   asciit   ignore(   t   Nonet   typet   strt   unicodet   encodeR   t   int(   t   objt   retval(    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   o2ascii   s    c         C   s!   t  |  ƒ s d  St ƒ  t |  ƒ S(   N(   R   R   R   R   (   t   filename(    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   fileage$   s    c         C   s~   d } d } | sZ t  |  ƒ \ } } t d |  | ƒ t d | | ƒ t d | | ƒ n t d |  t ƒ | | j d ƒ f S(   s•   
        Run a command in the shell, returning status and the output.
        prints a message if there's an error, and raises an exception.
        t    s        cmd: '%s'
s     status: '%d'
s     result: '%s'
s   run_command: '%s'
s   
(   R   t   debugt   Truet   split(   t   cmdt   dbgt   dry_runt   statust   result(    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   run_command.   s    c         C   s   t  j d |  ƒ t  j ƒ  d  S(   Ns   
 ** Error: %s
(   R   t   writet   flush(   t   out(    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   errorC   s    c         C   s*   | r& | r t  d ƒ n  t  |  ƒ n  d  S(   Ns   debug: (   t   stdo(   R"   R   t   prefix(    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyR   K   s    c         C   s9   t  j d ƒ t  j d |  ƒ t  j d ƒ t  j ƒ  d  S(   Ns   
s     ** Error: %s(   R   R    R!   (   t   emsg(    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   eoutV   s    c         C   s   t  j |  ƒ t  j ƒ  d  S(   N(   R    R    R!   (   t   ostr(    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyR$   a   s    
c         C   s   t  j |  ƒ t  j ƒ  d  S(   N(   R   R    R!   (   R(   (    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   stdef   s    
c         C   s-   t  t j |  d t d d ƒƒ t  d ƒ d  S(   Nt	   sort_keyst   indenti   s   
(   R$   t   jsont   dumpsR   (   R   (    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   dumpk   s    c         C   s   |  d k r d S|  j d ƒ S(   ss   
    Return a standard, string representation of the date given. It is assumed that the
    date is UTC based.
    R   s   %A, %d. %B %Y %H:%M UTCN(   R   t   strftime(   t   date(    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   date_to_stringq   s    c         C   s   t  j |  d ƒ S(   sN   
    Return a datetime object based on the string in a well known format.
    s   %A, %d. %B %Y %H:%M UTC(   R   t   strptime(   R0   (    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   string_to_datez   s    t   FileDoesntExistc           B   s&   e  Z d  d „ Z d „  Z d „  Z RS(   R   c         C   s   | |  _  d  S(   N(   t	   file_name(   t   selfR5   (    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   __init__ƒ   s    c         C   s   t  d |  j ƒ d  S(   Ns   The file (%s) does not exist.
(   R#   R5   (   R6   (    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   print_std_error†   s    c         C   s   t  d |  j ƒ d  S(   Ns*   ** Warning: The file (%s) does not exist.
(   R)   R5   (   R6   (    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   print_std_warning‰   s    (   t   __name__t
   __module__R7   R8   R9   (    (    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyR4   ‚   s   	c         C   sf   t  j d ƒ d } t |  ƒ rI t |  d ƒ  } t j | ƒ } Wd QXn t |  ƒ ‚ t  j d ƒ | S(   sL   
    Load the indicated json format file, returning the created object.
    t	   json_loadt   rN(	   R   t   enterR   R   t   openR,   t   loadR4   t   leave(   R5   R   t   f(    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyR<   Ž   s    c         C   sc   t  j d ƒ d } t |  ƒ rF t |  d ƒ  } | j ƒ  } Wd QXn t |  ƒ ‚ t  j d ƒ | S(   sF   
    Load the indicated file into a string and return the string.
    t	   file_loadR=   N(   R   R>   R   R   R?   t   readR4   RA   (   R5   R   RB   (    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyRC       s    (!   t   sysR    R   t   commandsR   t
   subprocesst   decimalR   R,   t   os.pathR   R   R   R   t   ktl.dbgR   R   R   t   FalseR   R#   R   R   R'   R$   R)   R.   R1   R3   t	   ExceptionR4   R<   RC   (    (    (    s)   /srv/kernel/kteam-tools/libs/ktl/utils.pyt   <module>   s0   		
									