mò
†gÏLc           @   s»   d  k  Z  d  k Z d  k Z d  k Z d  k Z d  k Z d  k Z d  k Z d  k Z d „  Z	 e
 d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d  S(   Nc         C   s8   t  i i |  d d d d d ƒ } t | ƒ i ƒ  i ƒ  S(   Nt   basedirt	   frameworkt   srct   playt   version(   t   ost   patht   joint   play_envt   play_version_filet   opent   readlinet   strip(   R   R	   (    (    tV   /afs/cs.wisc.edu/p/zhu/public/html/space2/dualist/play-1.1/framework/pym/play/utils.pyt   playVersion
   s    "c         C   s®   | p^ | i d d ƒ } | i d d ƒ } | i d d ƒ } | i d d ƒ } | i d	 d
 ƒ } n xB t i |  d d ƒD]+ } t i	 | | | ƒ } t
 i i | ƒ q{ Wd  S(   Ns   \s   \\t   $s   \$t   {s   \{t   }s   \}t   .s   \.t   inplacei   (   t   regexpt
   replaceExpt   replacet	   searchExpt	   fileinputt   inputt   filet   linet   ret   subt   syst   stdoutt   write(   R   R   R   R   R   (    (    R   t
   replaceAll   s     c         C   sD   t  } x7 t i |  ƒ D]& } | i | ƒ d j o
 t } q q W| S(   Niÿÿÿÿ(	   t   Falset   foundR   R   R   R   t   findR   t   True(   R   R   R#   R   (    (    R   t   fileHas   s     c          C   s7   d i  g  }  t d ƒ D] } |  t i d ƒ q ~  ƒ S(   Nt    i@   t>   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789(   R   t   _[1]t   ranget   it   randomt   choice(   R)   R+   (    (    R   t	   secretKey"   s    c         C   sb   t  | ƒ t  |  ƒ j  p t  | ƒ d j  o t Sn |  | j o t Sn t |  t i i | ƒ ƒ S(   Ni   (	   t   lent   path2t   path1R"   R%   t
   isParentOfR   R   t   dirname(   R1   R0   (    (    R   R2   %   s
    ,c         C   sM   t  | ƒ t  |  ƒ j  p t  | ƒ d j  o t Sn |  | j o t Sn d  S(   Ni   (   R/   R0   R1   R"   R%   (   R1   R0   (    (    R   R2   ,   s    ,c         C   s‰  g  } y\ t i |  d d d g ƒ \ }	 }
 x4 |	 D], \ } } | d j o | i d ƒ } q1 q1 WWn t i j
 o n Xg  } x| D]ù } d  } t i i | d d | ƒ } t i i | ƒ o t i i | ƒ o
 | } n” x t i t i i | d d ƒ ƒ D]l } t i i t i i | d d | ƒ ƒ o< | i d	 | ƒ d
 j o" t i i | d d | ƒ } PqqW| i | ƒ qˆ W| S(   NR'   s   with=s   name=s   --with=t   ,R    s
   modules/%st   moduless   %s-i    (   t   withModulest   getoptt   argst   optlistt   newargst   ot   at   splitt   GetoptErrort   mdt   mt   NoneR3   R   R   R   t   envt	   candidatet   existst   isdirt   listdirt   fR$   t   append(   R8   RB   R<   R?   RC   RG   R6   R@   R;   R9   R:   R3   (    (    R   t   getWithModules2   s.    !  &
# D	c         C   sD	  |  i ƒ  |  i ƒ  } |  i ƒ  } | p d GHd GHt i d ƒ n t i	 i
 | ƒ o> t i	 i
 t i	 i | d ƒ ƒ o d GHd GHt i d ƒ n t |  i	 | ƒ o d GHd GHt i d ƒ n d t i	 i | ƒ GHt i	 i
 | ƒ o t i | ƒ n t i	 i
 t i	 i |  i	 d ƒ ƒ o# t t i	 i |  i	 d ƒ | ƒ n t i | ƒ t i	 i
 t i	 i | d ƒ ƒ p  t i t i	 i | d ƒ ƒ n t i	 i
 t i	 i | d	 ƒ ƒ p6 t i t i	 i | d
 d ƒ t i	 i | d	 ƒ ƒ n |  i d ƒ } t t i	 i | d	 ƒ d | ƒ | d d j	 o' t t i	 i | d	 ƒ d | d ƒ n  t t i	 i | d	 ƒ d d ƒ t i	 i
 t i	 i | d ƒ ƒ o  t i t i	 i | d ƒ ƒ n t |  i	 t i	 i | d ƒ ƒ t i	 i
 t i	 i | d ƒ ƒ o  t i t i	 i | d ƒ ƒ n t i	 i
 t i	 i | d ƒ ƒ o  t i t i	 i | d ƒ ƒ n t t i	 i |  i	 d ƒ t i	 i | d ƒ ƒ t i	 i
 t i	 i | d ƒ ƒ o  t i t i	 i | d ƒ ƒ n t i t i	 i | d ƒ ƒ xk | D]c } | i d ƒ oM | i d ƒ d j o7 t i | t i	 i | d t i	 i | ƒ d ƒ ƒ qèqèWt i	 i
 t i	 i | d ƒ ƒ o  t i t i	 i | d ƒ ƒ n t i t i	 i | d ƒ ƒ t t i	 i | d
 d ƒ t i	 i | d ƒ ƒ xP| D]H} t i	 i | d t i	 i | ƒ ƒ } t | | ƒ t i	 i
 t i	 i | d ƒ ƒ o  t i t i	 i | d ƒ ƒ n t i	 i
 t i	 i | d  ƒ ƒ o  t i t i	 i | d  ƒ ƒ n t i	 i
 t i	 i | d! ƒ ƒ o  t i t i	 i | d! ƒ ƒ n t i	 i
 t i	 i | d" ƒ ƒ o  t i t i	 i | d" ƒ ƒ n t i	 i
 t i	 i | d# ƒ ƒ o  t i t i	 i | d# ƒ ƒ n t i	 i
 t i	 i | d$ ƒ ƒ o  t i t i	 i | d$ ƒ ƒ n t i	 i
 t i	 i | d% ƒ ƒ o  t i t i	 i | d% ƒ ƒ n t i	 i
 t i	 i | d& ƒ ƒ o  t i t i	 i | d& ƒ ƒ qãqãW|  i d' ƒ } xC | D]; } t i	 i | ƒ }	 t t i	 i | d( ƒ | d) |	 ƒ qEWt i	 i
 t i	 i | d* ƒ ƒ p  t i t i	 i | d* ƒ ƒ n t i t i	 i | d
 d+ ƒ t i	 i | d, ƒ ƒ | oAd- t i	 i | ƒ GHt i	 i
 | ƒ o t i | ƒ n t$ i% | d. t$ i& ƒ }
 t i	 i |  i	 d  ƒ } xÇ t i) | ƒ D]¶ \ } } } | | j o qxn | i d/ ƒ d j o qxn xs | D]k } | i d ƒ d j p | i. d0 ƒ o q¿n |
 i/ t i	 i | | ƒ t i	 i | t0 | ƒ | ƒ ƒ q¿WqxW|
 i1 ƒ  n d  S(1   NsX   ~ Oops. Please specify a path where to generate the WAR, using the -o or --output optiont   ~iÿÿÿÿs   WEB-INFs[   ~ Oops. The destination path already exists but does not seem to host a valid WAR structuresI   ~ Oops. Please specify a destination directory outside of the applicationsJ   ~ Packaging current version of the framework and the application to %s ...t   wars   WEB-INF/web.xmlR    s   resources/war/web.xmls   application.names   %APPLICATION_NAME%t   idR'   s	   %PLAY_ID%s   WEB-INF/applications   WEB-INF/application/wars   WEB-INF/application/logst   confs   WEB-INF/classess   WEB-INF/libs   .jars	   provided-s   WEB-INF/lib/%si   s   WEB-INF/frameworks   framework/templatess   WEB-INF/framework/templatess   WEB-INF/modules/%sR   t   dists   samples-and-testss	   build.xmls   commands.pyt   libt	   nbprojectt   documentations   module.s)   WEB-INF/application/conf/application.confs   ../modules/%ss   WEB-INF/resourcess   resources/messagess   WEB-INF/resources/messagess#   ~ Creating zipped archive to %s ...t   ws   /.R   (2   t   appt   checkR5   t   getClasspatht	   classpatht   war_pathR   t   exitR   R   RD   R   R2   t   normpatht   shutilt   rmtreet   copy_directoryt   mkdirt   copyfileRB   t   readConft   application_nameR!   t   jart   endswithR$   R=   t   modulet   basenamet   tot   removet	   readConfst   pmR@   t   nmt   war_zip_patht   zipfilet   ZipFilet
   ZIP_STOREDt   zipt   dist_dirt   walkt   dirpatht   dirnamest	   filenamesR   t
   startswithR    R/   t   close(   RS   RB   RW   Rj   R@   Rc   Ra   R   Rq   Ri   Rn   RV   Rr   Re   Rh   Rs   R5   R`   Ro   (    (    R   t   package_as_warI   s¾    
6 %#"  "6'"  " " ."   &;"  / %" " " " " " " "$ '"  2  &@c         C   sr   xk t  i |  ƒ D]Z } t  i i |  | ƒ } | | j o t | ƒ q t  i i	 | ƒ o t
 | | ƒ q q Wd  S(   N(   R   RF   t   rootRG   R   R   t   fullpathRs   t   deleteRE   t
   deleteFrom(   Rw   Rs   RG   Rx   (    (    R   Rz   ­   s     c         C   s5   t  i i |  ƒ o t i |  ƒ n t  i |  ƒ d  S(   N(   R   R   RE   t   filenameRZ   R[   Rf   (   R{   (    (    R   Ry   µ   s    c   	      C   s  t  i i | ƒ p t  i | ƒ n xï t  i |  ƒ D]Þ \ } } } xÌ | D]Ä } | i d ƒ d j o qJ n | i d ƒ d j p | i d ƒ o qJ n t  i i | | ƒ } | i |  | d ƒ } t  i i | ƒ d } t  i i | ƒ p t  i | ƒ n t i | | ƒ qJ Wq4 Wd  S(   Ns   /.iÿÿÿÿRJ   i    R   i   (   R   R   RD   t   targett   makedirsRp   t   sourceRw   t   dirst   filesR   R$   Rt   R   t   from_R   t   to_R=   t   to_directoryRZ   R^   (	   R~   R|   R   R€   Rƒ   Rw   R   R   R‚   (    (    R   R\   »   s       &(   R   R   t   os.pathR   R,   R   R7   RZ   Rk   R   R"   R!   R&   R.   R2   RI   Rv   Rz   Ry   R\   (   R.   RI   R&   R   R,   Rk   R   R   Rv   R!   R2   R   R\   R7   RZ   R   Rz   Ry   (    (    R   t   ?   s$   															d		