ó
Ý\†Rc           @   sß   d  d l  Z  d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l Z d  d l Z d  d l Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z e j d ƒ Z e j d ƒ Z d e j f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   command(   t   create_distros   ^[^a-z]*s
   [^a-z0-9_]t   BazstartCommandc           B   s  e  Z d  Z e j d ƒ j Z e j d ƒ j Z d Z d Z e j	 ƒ  d Z
 d e Z d Z dD Z dD Z dD Z dD Z dD Z dD Z dD Z d Z e Z e Z d j d „  e d	 ƒ Dƒ ƒ Z d Z dD Z dD Z dD Z d
 Z  d Z! g  Z" g  Z# d g Z$ dD Z% e Z& dD Z' e( j) j* d e+ ƒ Z, e- j. d d d d e ƒ Z, e, j/ d d d d d d ƒe, j/ d d d d d d d d d e ƒe, j/ d d d d  d d! ƒe, j/ d" d# d d$ d d% ƒe, j/ d& d' d d( d d) ƒe, j/ d* d+ d d, d d- ƒe, j/ d. d d/ d d0 ƒe, j/ d1 d d2 d d3 ƒe, j/ d4 d d5 d d6 ƒe, j/ d7 d d8 d9 d: d d; ƒe, j/ d< d= d d> d9 d: d d? ƒe, j/ d@ d dA d9 d: d dB ƒdC „  Z( RS(E   sƒ   Create a new Bazki project.

Create a new Bazki project with this command.

Example usage::

    $ paster bazstart yourproject
    t   Bazkit   turbogears2i   i    s   
t   bazkit    c         c   s!   |  ] } t  j t j ƒ Vq d  S(   N(   t   randomt   choicet   stringt	   lowercase(   t   .0t   x(    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazstart/quickstart.pys	   <genexpr>,   s    i   s   Object/User/Admint   Admint   quiett   usages)   %prog quickstart [options] [project name]t   versions   %prog s   -ps	   --packaget   helps   package name for the codet   destt   packages   -rs   --svn-repositoryt   metavart   REPOSs&   create project in given SVN repositoryt   svn_repositoryt   defaults   -ds   --dburls   specify URL for database usedt   dburls   -us
   --usernames'   specify username for initial admin usert   usernames   -es	   --elmnames*   specify element name for inital admin usert   elmnames   -Ps
   --passwords'   specify password for initial admin usert   passwords   --urlprefixs*   specify the public urlprefix for this sitet	   urlprefixs   --custom-dbsC   specify a tree of extra custom database yaml files (used for tests)t	   custom_dbs   --remove-dbs;   specify a path in the initial db to remove (used for tests)t	   remove_dbs	   --dry-runs$   dry run (don't actually do anything)t   actiont
   store_truet   dry_runs   -qs   --quiets   suppress outputt   suppress_outputs	   --noinputs"   no input (don't ask any questions)t   no_inputc         C   s³  xD |  j  j D]6 } |  j  j | d k	 r |  j  j | |  j | <q q W|  j rc |  j d |  _ n  x |  j s t d ƒ |  _ qf W|  j d k r|  j j ƒ  } t j	 d | ƒ } t
 j	 d | ƒ } | rß |  j rß | |  _ qd |  _ x/ |  j st d | ƒ j ƒ  p| |  _ që Wn  |  j d k r˜d t j ƒ  |  j t j j d ƒ f } |  j rf| |  _ q˜x/ |  j s”t d | ƒ j ƒ  p‹| |  _ qiWn  |  j d k rt j t j ƒ  ƒ d } |  j rÕ| |  _ qx/ |  j st d | ƒ j ƒ  pú| |  _ qØWn  |  j d k r{|  j d j ƒ  |  j d	 } |  j rI| |  _ q{x/ |  j swt d
 | ƒ j ƒ  pn| |  _ qLWn  |  j d k rÝ|  j r¸d j d „  t d ƒ Dƒ ƒ |  _ qÝx" |  j sÙt j d ƒ |  _ q»Wn  |  j d k rLd t j ƒ  |  j f } |  j r| |  _ qLx/ |  j sHt d | ƒ j ƒ  p?| |  _ qWn  t j |  j ƒ |  _ t j ƒ  } |  j j ƒ  | k r®d |  j Gx | |  j D] } | GHd SWn  d d l  }	 y& |	 j! |  j ƒ rßd |  j GHd SWn t" k
 rón Xt j j# |  j ƒ rd |  j GHd St$ j% d ƒ }
 g  } x( |  j& j' ƒ  D] } | j( d | ƒ q>W|  j) ry| j( d |  j) ƒ n  |  j* rŸ| j( d ƒ | j( d ƒ n  |  j+ r¸| j( d ƒ n  | j( |  j ƒ | j( d |  j ƒ | j( d |  j, ƒ | j( d |  j- ƒ | j( d |  j ƒ | j( d |  j ƒ | j( d |  j ƒ | j( d  |  j ƒ | j( d! |  j. ƒ | j( d" t j j/ |  j ƒ ƒ | j( d# |  j0 ƒ | j( d$ |  j1 ƒ | j( d% d& j |  j2 ƒ ƒ | j( d' d& j |  j3 ƒ ƒ | j( d( d& j |  j4 ƒ ƒ | j( d) |  j ƒ d d l5 } t6 | d* ƒ rXt7 j8 d+ I| j9 IJ| j9 } n d } | j( d, | ƒ |
 j: | ƒ |  j* s¯t j; |  j ƒ xX d- d. d/ d0 g D]D } t j j# | ƒ r¨t j< | ƒ j= } t j> | | t< j? Bƒ q¨q¨Wd1 d2 g t7 _@ d d l  }	 |	 jA d3 |	 j! d3 d4 g ƒ Œ x\ t jB d5 ƒ D]K \ } } } x9 | D]1 } | d6 k rPt jC t j j | | ƒ ƒ qPqPWq:Wt jD t j j d7 |  j d8 ƒ t j j d9 d: ƒ ƒ t j jE t j jE t j j/ tF ƒ ƒ ƒ } xB |  j4 D]7 } t jD t j j | | d; ƒ t j j d9 | ƒ ƒ qñWd	 d< lG mH } | jH |  j |  j |  j+ |  j |  j |  j |  j0 |  jI |  jJ |  jK r“|  jK j' d= ƒ n g  |  jL |  j |  jM ƒ n  d S(>   s   Quickstarts the new project.i    s   Enter project name: R   s   Enter package name [%s]: s.   mysql://sql.mit.edu/%s+%s?read_default_file=%ss	   ~/.my.cnfsZ   Enter database URL, of the form mysql://hostname/dbname?read_default_file=~/.my.cnf [%s]: s,   Enter username for initial admin user [%s]: i   s0   Enter element name for initial admin user [%s]: c         s   s!   |  ] } t  j t j ƒ Vq d  S(   N(   R   R   R	   R
   (   R   R   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazstart/quickstart.pys	   <genexpr>›   s   i   sL   Enter password for initial admin user (visible to anyone with edit access): s   http://%s.scripts.mit.edu/%ss   Enter public URL prefix [%s]: s"   The name "%s" is already in use byNiÿÿÿÿs'   The package name "%s" is already in uses0   A directory called "%s" already exists. Exiting.t   creates   --template=%ss   --svn-repository=%ss
   --simulates   -qs
   package=%ss   bazversion=%ss   tgversion=%ss   dburl=%ss   username=%ss
   elmname=%ss   password=%ss	   secret=%ss   projectroot=%ss   bazkitype=%ss   admin=%ss   extra_imports=%st   ;s   extra_controllers=%ss
   statics=%ss   urlprefix=%st   __paster_sitedir__s   Using sitedir:s
   sitedir=%ss   precommit.pys   clear-database.pys   prod.pys   webroot/dispatch.fcgis   setup.pyt   egg_infot   setupt   .s   ./t   emptys   ..t   publict   webroott   __publict   static(   t	   bootstrapt   :(N   t   optionst   __dict__t   Nonet   argst   namet	   raw_inputR   t   lowert   beginning_lettert   subt
   valid_onlyR#   t   stripR   t   getpasst   getusert   ost   patht
   expanduserR   t   pwdt   getpwuidt   getuidR   t   upperR   t   joint   xrangeR   t   pkg_resourcest	   safe_namet   Environmentt   impt   find_modulet   ImportErrort   existsR   t   CreateDistroCommandt	   templatest   splitt   appendR   R!   R"   R   t	   tgversiont   secrett   abspatht	   bazkitypet   admint   extra_importst   extra_controllerst   staticst   __main__t   hasattrt   syst   stderrR&   t   runt   chdirt   statt   st_modet   chmodt   S_IXUSRt   argvt   load_modulet   walkt   removet   symlinkt   dirnamet   __file__R   R/   t   extra_dbR   R   t
   admin_patht   repo(   t   selft   kR   R   R   R   R   t   envt   distRJ   R    t   cmd_argst   templateRZ   t   sitedirR?   t   oldmodet   baset   filest   filet   bazlibt   sR/   (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazstart/quickstart.pyR    f   s   		#	#	#	#		#			 			
		'N(0   t   __name__t
   __module__t   __doc__RG   t   get_distributionR   RR   t   max_argst   min_argst
   splitlinest   summaryR   t
   group_nameR3   R5   R   R   R   R   R   R   RO   t   FalseR!   R#   RE   RF   RS   RU   Rk   R   R   Rl   RV   RW   RX   RY   R   R"   Rm   R    t   Commandt   standard_parsert   Truet   parsert   optparset   OptionParsert
   add_option(    (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazstart/quickstart.pyR      s”   
		(   RG   t   reR‰   t   paste.scriptR    R   R>   RA   R\   R`   R	   R   t   readlineR<   t   compileR8   R:   R…   R   (    (    (    sJ   /afs/athena.mit.edu/user/x/a/xavid/Public/bazki/lib/bazstart/quickstart.pyt   <module>   s   $