Ñò
3Nc           @   sß   d  d k  Z  d  d k Z d  d k Z d  d k l Z d  d k l Z d  d k Z d  d k Z d  d k Z d  d k	 Z	 d  d k
 Z
 d  d k Z d  d k Z d  d k Z e i d ƒ Z e i d ƒ Z d e i 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 i d ƒ i Z e i d ƒ i Z d Z d Z e i	 ƒ  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 i d „  e d	 ƒ Dƒ ƒ Z d Z dD Z dD Z dD Z d
 Z  d Z! g  Z" d g Z# dD Z$ e Z% e& i' i( d e) ƒ Z* e+ i, d d d d e ƒ Z* e* i- d d d d d d ƒe* i- d d d d d d d d d e ƒe* i- d d d d  d d! ƒe* i- d" d# d d$ d d% ƒe* i- d& d' d d( d d) ƒe* i- d* d+ d d, d d- ƒe* i- d. d d/ d d0 ƒe* i- d1 d d2 d d3 ƒe* i- d4 d d5 d d6 ƒe* i- d7 d d8 d9 d: d d; ƒe* i- d< d= d d> d9 d: d d? ƒe* i- 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%   x |  ] } t  i t i ƒ Vq Wd  S(   N(   t   randomt   choicet   stringt	   lowercase(   t   .0t   x(    (    sC   /afs/sipb.mit.edu/project/bazki/Checkout/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
   --hostnames)   specify the public hostname for this sitet   hostnames   --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¶  xF |  i  i D]8 } |  i  i | d j	 o |  i  i | |  i | <q q W|  i o |  i d |  _ n x |  i p t d ƒ |  _ qj W|  i d j o |  i i ƒ  } t i	 d | ƒ } t
 i	 d | ƒ } | o |  i o | |  _ q(d |  _ x3 |  i p$ t d | ƒ i ƒ  p | |  _ qõ Wn |  i d j ou d t i ƒ  |  i t i i d ƒ f } |  i o | |  _ q­x3 |  i p$ t d | ƒ i ƒ  p | |  _ qzWn |  i d j of t i t i ƒ  ƒ d } |  i o | |  _ q#x3 |  i p$ t d | ƒ i ƒ  p | |  _ qðWn |  i d j ok |  i d i ƒ  |  i d	 } |  i o | |  _ qžx3 |  i p$ t d
 | ƒ i ƒ  p | |  _ qkWn |  i d j oX |  i o& d i d „  t d ƒ Dƒ ƒ |  _ qx% |  i p t i d ƒ |  _ qáWn |  i d j o] d t i ƒ  } |  i o | |  _ qsx3 |  i p$ t d | ƒ i ƒ  p | |  _ q@Wn t i |  i ƒ |  _ t i ƒ  } |  i i ƒ  | j o- d |  i Gx | |  i D] } | GHd SWn d d k  }	 y( |	 i! |  i ƒ o d |  i GHd SWn t" j
 o n Xt i i# |  i ƒ o d |  i GHd St$ i% d ƒ }
 g  } x( |  i& i' ƒ  D] } | i( d | ƒ qmW|  i) o | i( d |  i) ƒ n |  i* o | i( d ƒ | i( d ƒ n |  i+ o | i( d ƒ n | i( |  i ƒ | i( d |  i ƒ | i( d |  i, ƒ | i( d |  i- ƒ | i( d |  i ƒ | i( d |  i ƒ | i( d |  i ƒ | i( d  |  i ƒ | i( d! |  i. ƒ | i( d" t i i/ |  i ƒ ƒ | i( d# |  i0 ƒ | i( d$ |  i1 ƒ | i( d% d& i |  i2 ƒ ƒ | i( d' d& i |  i3 ƒ ƒ | i( d( |  i ƒ d d k4 } t5 | d) ƒ o | i6 } n d } | i( d* | ƒ |
 i7 | ƒ |  i* p(t i8 |  i ƒ xW d+ d, d- g D]F } t i i# | ƒ o- t i9 | ƒ i: } t i; | | t9 i< Bƒ qªqªWd. d/ g t= _> d d k  }	 |	 i? d0 |	 i! d0 d1 g ƒ Œ x^ t i@ d2 ƒ D]M \ } } } x; | D]3 } | d3 j o  t iA t i i | | ƒ ƒ qTqTWq>Wt iB t i i d4 |  i d5 ƒ t i i d6 d7 ƒ ƒ t i iC t i iC t i i/ tD ƒ ƒ ƒ } xB |  i3 D]7 } t iB t i i | | d8 ƒ t i i d6 | ƒ ƒ q÷Wd	 d9 kE lF } | iF |  i |  i |  i+ |  i |  i |  i |  i0 |  iG |  iH |  iI o |  iI i' d: ƒ n g  |  iJ |  i ƒ 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%   x |  ] } t  i t i ƒ Vq Wd  S(   N(   R   R   R	   R
   (   R   R   (    (    sC   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazstart/quickstart.pys	   <genexpr>™   s   	i   sL   Enter password for initial admin user (visible to anyone with edit access): s   %s.scripts.mit.edus   Enter public hostname [%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_controllers=%st   ;s
   statics=%ss   hostname=%st   __paster_sitedir__s
   sitedir=%ss   precommit.pys   clear-database.pys   webroot/dispatch.fcgis   setup.pyt   egg_infot   setupt   .s   ./t   emptys   ..t   publict   webroott   __publict   static(   t	   bootstrapt   :(K   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_controllerst   staticst   __main__t   hasattrR&   t   runt   chdirt   statt   st_modet   chmodt   S_IXUSRt   syst   argvt   load_modulet   walkt   removet   symlinkt   dirnamet   __file__R   R/   t   extra_dbR   R   t
   admin_path(   t   selft   kR   R   R   R   R   t   envt   distRJ   R    t   cmd_argst   templateRY   t   sitedirR?   t   oldmodet   baset   filest   filet   bazlibt   sR/   (    (    sC   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazstart/quickstart.pyR    d   s,    
 
	 
&
 
&
 
&
 
&
 

 
& 		 


 		

	 	  (
 N(.   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   Ri   R   R   Rj   RV   RW   RX   R   R"   R    t   Commandt   standard_parsert   Truet   parsert   optparset   OptionParsert
   add_option(    (    (    sC   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazstart/quickstart.pyR      s   
		(   RG   t   reR†   t   paste.scriptR    R   R>   RA   Ra   R]   R	   R   t   readlineR<   t   compileR8   R:   R‚   R   (    (    (    sC   /afs/sipb.mit.edu/project/bazki/Checkout/lib/bazstart/quickstart.pyt   <module>   s   $