ó
¼S]c           @@ s  d  Z  d d l m Z m Z d d l Z d d l Z d d l Z d d l m Z m	 Z	 d d l
 m Z m Z m Z d d l m Z d d l m Z m Z d d l m Z d d	 l m Z d d
 l m Z d d l Z d d l m Z d d l j j j Z d d l  j j j! Z! d d l" j j j# Z# d d l$ j j j% Z% d d l& j j j' Z' d d l( j j j) Z) d d l* j j j+ Z+ d d l, j j j- Z- d d l. j j j/ Z/ d d l0 j j j1 Z1 d d l2 j j j3 Z3 d d l4 j j j5 Z5 d d l6 j j j7 Z7 d „  Z8 d „  Z9 d „  Z: d S(   s4   The ``main`` function chooses and runs a subcommand.i    (   t   absolute_importt   print_functionN(   t   ArgumentParsert	   REMAINDER(   t   UI_MODE_TEXT_ASK_QUESTIONSt(   UI_MODE_TEXT_DEVELOPMENT_DEFAULTS_OR_ASKt   _all_ui_modes(   t   version(   t   push_verbose_loggert   pop_verbose_logger(   t   ALL_COMMAND_TYPES(   t   RequirementsRegistry(   t   _hash_algorithms(   t   handle_bugsc      
   @ s¾  t  d d d d ƒ } | j d d ƒ } | j d d d	 d
 d
 t ƒ| j d d	 d d t d d ƒd „  ‰  d „  ‰ t ‡  ‡ f d † } d „  } | j d d d ƒ} ˆ  | ƒ | j d d	 d d d d d  ƒ| j d d d	 d d d d d  ƒ| j d t	 j
 ƒ | j d d d ƒ} | | d t ƒ| j d d d  d d  d! d" d d# ƒ| j d$ d d% d d  d! t ƒ| j d t j
 ƒ | j d& d d' ƒ} | | ƒ | j d t j
 ƒ | j d( d d) ƒ} ˆ  | ƒ | j d t j
 ƒ t j s#| j d* d d+ ƒ} | | ƒ | j d t j
 ƒ n  | j d, d d- ƒ} ˆ  | ƒ | j d. d d/ ƒ| j d t j
 ƒ | j d0 d d1 ƒ} | j d. d d/ ƒ| j d2 d d3 d d  d! d" ƒ| j d t j
 ƒ | j d4 d d5 ƒ} ˆ  | ƒ | j d6 d7 d	 d d d8 d d  ƒ| j d9 d: d d; d d< ƒ| j d= d> d d? d d@ ƒ| j dA dB d dC d dD ƒ| j d t j
 ƒ | j dE d dF ƒ} ˆ | ƒ | j dG d dH d d  d! t ƒ| j dI d dJ d d  d dK ƒˆ  | ƒ | j d t j ƒ | j dL d dM ƒ} ˆ | ƒ ˆ  | ƒ | j dN d dO d d  d! t ƒ| j d t j ƒ | j dP d dQ ƒ} ˆ | ƒ ˆ  | ƒ | j d t j ƒ | j dR d dS ƒ} ˆ | ƒ | j dT d dU d d  d! t ƒˆ  | ƒ | j d t j ƒ | j dV d dW ƒ} ˆ | ƒ ˆ  | ƒ | j dX d dY d d  d! t ƒ| j d t j ƒ | j dZ d d[ ƒ} ˆ  | ƒ ˆ | ƒ | j d\ d d] d d  ƒ| j d^ d d_ d d  ƒ| j d` d da d d  ƒ| j db d dc d d  dd t ƒ| j de d df d d  ƒ| j d t j ƒ | j dg d dh ƒ} ˆ  | ƒ ˆ | ƒ | j d\ d d] d d  ƒ| j d t j ƒ | j di d dj ƒ} ˆ  | ƒ ˆ | ƒ | j d t j ƒ t ƒ  j ƒ  } t t  dk „  | ƒ ƒ } dl „  } | j dm d dn ƒ} ˆ  | ƒ ˆ | ƒ | | ƒ | j do d dp d d  dd | ƒ| j d t! j ƒ | j dq d dr ƒ} ˆ  | ƒ ˆ | ƒ | j ds d dt d d  ƒ| j d t! j ƒ | j du d dv ƒ} ˆ  | ƒ ˆ | ƒ | j d t! j ƒ dw „  }	 | j dx d dy ƒ} ˆ  | ƒ |	 | ƒ | | dz t ƒ| j d t" j ƒ | j d{ d d| ƒ} ˆ  | ƒ | | dz t ƒ| j d t" j ƒ | j d} d d~ ƒ} ˆ  | ƒ | j d t" j# ƒ | j d d d€ ƒ} ˆ  | ƒ | | dz t ƒ| j d. d d ƒ| j d t" j$ ƒ | j d‚ d dƒ ƒ} ˆ  | ƒ | | dz t ƒ| j d t" j% ƒ | j d„ d d… ƒ} ˆ  | ƒ | | dz t ƒ| j d t" j& ƒ | j d† d d‡ ƒ} ˆ  | ƒ | | dz t ƒ| j d t" j' ƒ | j dˆ d d‰ ƒ} ˆ  | ƒ ˆ | ƒ |	 | ƒ | j d t" j( ƒ | j dŠ d d‹ ƒ} ˆ  | ƒ ˆ | ƒ | j dŒ d d d d  d! dŽ ƒ| j d t" j) ƒ | j d d d ƒ} ˆ  | ƒ ˆ | ƒ | j d t" j* ƒ d‘ „  }
 | j d’ d d“ ƒ} ˆ  | ƒ ˆ | ƒ |
 | ƒ | j d t" j+ ƒ | j d” d d• ƒ} ˆ  | ƒ ˆ | ƒ |
 | ƒ | j d t" j, ƒ | j d– d d— ƒ} ˆ  | ƒ ˆ | ƒ | j d t" j- ƒ d˜ „  } | j d™ d dš ƒ} ˆ  | ƒ t t. ƒ d› g } | j/ dœ ƒ | j d d	 dž dd | d dŸ ƒ| | ƒ ˆ | ƒ | j d  d¡ d¢ d	 d d d£ ƒ| j d¤ d¡ d¢ d	 d¥ d d¦ ƒ| j d d d§ d d¨ ƒ| j d t0 j
 d¢ d  ƒ | j d© d dª ƒ} ˆ  | ƒ | | ƒ | j d t0 j ƒ | j d« d d¬ ƒ} ˆ  | ƒ | j d t0 j ƒ t1 |  ƒ d­ k  rÎt2 d® d¯ t3 j4 ƒ| j5 d¯ t3 j4 ƒ d­ Sy | j6 |  d° ƒ } Wn t7 k
 rþ} | j8 SX| j9 r\t: j; ƒ  d± d² ƒ } | j< t: j= ƒ t: j> d³ t3 j4 ƒ } | j? | ƒ t@ | ƒ n  zG d2 | k r•| jA d  k	 r•tB jC jD | jA ƒ | _A n  | j
 | ƒ SWd  | j9 r¹tE ƒ  n  Xd  S(´   Nt   progs   anaconda-projectt   descriptions(   Actions on projects (runnable projects).t   helps   Sub-commandss   -vs	   --versiont   actionR   s	   --verboset
   store_truet   defaults   show verbose debugging detailsc         S@ s#   |  j  d d d d d d d ƒd  S(   Ns   --directoryt   metavart   PROJECT_DIRR   t   .R   sQ   Project directory containing anaconda-project.yml (defaults to current directory)(   t   add_argument(   t   preset(    (    sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyt   add_directory_arg0   s
    c      
   S@ s)   |  j  d d d d d  d d d d ƒd  S(	   Ns
   --env-specR   t   ENVIRONMENT_SPEC_NAMER   R   t   storeR   s2   An environment spec name from anaconda-project.yml(   R   t   None(   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyt   add_env_spec_arg7   s    c         @ s—   ˆ  |  ƒ ˆ |  ƒ t  t ƒ } | j t ƒ |  j d d d d t d t d d d d	 d
 j t ƒ ƒ| r“ |  j d d d d d  d d d d ƒn  d  S(   Ns   --modeR   t   MODER   t   choicesR   R   R   s   One of s   , s	   --commandt   COMMAND_NAMEsQ   A command name from anaconda-project.yml (env spec for this command will be used)(   t   listR   t   removeR   R   R   t   joinR   (   R   t   include_commandt   all_supported_modes(   R   R   (    sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyt   add_prepare_args?   s$    

c         S@ s,   |  j  d d d d d | d d d d	 ƒd  S(
   Ns   -ns   --nameR   R   t   requiredR   R   R   s6   Name of the environment spec from anaconda-project.yml(   R   (   R   R'   (    (    sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyt   add_env_spec_name_argT   s    t   inits9   Initialize a directory with default project configurations   --empty-environments6   Do not add the default package set to the environment.s   -ys   --yess&   Assume yes to all confirmation promptst   maint   runs.   Run the project, setting up requirements firstR$   t   commandR   R    t   nargst   ?s(   A command name from anaconda-project.ymlt   extra_args_for_commandt   EXTRA_ARGS_FOR_COMMANDt   prepares=   Set up the project requirements, but does not run the projectt   cleansH   Removes generated state (stops services, deletes environment files, etc)t   activatesH   Set up the project and output shell export commands reflecting the setupt   archivesD   Create a .zip, .tar.gz, or .tar.bz2 archive with project files in itt   filenamet   ARCHIVE_FILENAMEt	   unarchivesD   Unpack a .zip, .tar.gz, or .tar.bz2 archive with project files in itt	   directoryt   DESTINATION_DIRECTORYt   uploads$   Upload the project to Anaconda Clouds   -ps	   --privates   Upload a private projects   -ss   --sitet   SITEs   Select site to uses   -ts   --tokent   TOKENs1   Auth token or a path to a file containing a tokens   -us   --usert   USERNAMEs*   User account, defaults to the current users   add-variables2   Add a required environment variable to the projectt   vars_to_addt   VARS_TO_ADDs	   --defaultt   DEFAULT_VALUEs.   Default value if environment variable is unsets   remove-variables/   Remove an environment variable from the projectt   vars_to_removet   VARS_TO_REMOVEs   list-variabless!   List all variables on the projects   set-variables?   Set an environment variable value in anaconda-project-local.ymlt   vars_and_valuest   VARS_AND_VALUESs   unset-variablesC   Unset an environment variable value from anaconda-project-local.ymlt   vars_to_unsett   VARS_TO_UNSETs   add-downloads2   Add a URL to be downloaded before running commandst   filename_variablet   ENV_VAR_FOR_FILENAMEt   download_urlt   DOWNLOAD_URLs
   --filenames5   The name to give the file/folder after downloading its   --hash-algorithms#   Defines which hash algorithm to useR   s   --hash-values1   The expected checksum hash of the downloaded files   remove-downloads:   Remove a download from the project and from the filesystems   list-downloadss!   List all downloads on the projectc         S@ s   |  j  S(   N(   t   name(   t   s(    (    sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyt   <lambda>Ê   t    c         S@ s   |  j  d d d d d  ƒd  S(   Ns
   --variableR   t   ENV_VAR_FOR_SERVICE_ADDRESSR   (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyt   add_service_variable_nameÌ   s    s   add-services5   Add a service to be available before running commandst   service_typet   SERVICE_TYPEs   remove-services!   Remove a service from the projectt   variablet   SERVICE_REFERENCEs   list-servicess$   List services present in the projectc      	   S@ sE   |  j  d d d d d d d d ƒ|  j  d	 d d
 d d  d t ƒd  S(   Ns   -cs	   --channelR   t   CHANNELR   t   appendR   s   Channel to search for packagest   packagest   PACKAGESR   R-   (   R   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyt   add_package_argsá   s    s   add-env-specs)   Add a new environment spec to the projectR'   s   remove-env-specs+   Remove an environment spec from the projects   list-env-specss*   List all environment specs for the projects   export-env-specs4   Save an environment spec as a conda environment filet   ENVIRONMENT_FILEt   locks+   Lock all packages at their current versionst   unlocks   Remove locked package versionst   updates,   Update all packages to their latest versionss   add-packagess/   Add packages to one or all project environmentss   remove-packagess4   Remove packages from one or all project environmentsRW   t   PACKAGE_NAMEt   +s   list-packagess/   List packages for an environment on the projectc         S@ s#   |  j  d d d d d  d d ƒd  S(   Nt	   platformsR   t   PLATFORM_NAMER   R-   R_   (   R   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyt   add_platforms_list  s    s   add-platformss0   Add platforms to one or all project environmentss   remove-platformss5   Remove platforms from one or all project environmentss   list-platformss0   List platforms for an environment on the projectc         S@ s   |  j  d d d d d ƒd  S(   NRK   R   t   NAMER   s   Command name used to invoke it(   R   (   R   (    (    sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyt   add_command_name_arg/  s    s   add-commands    Add a new command to the projectt   askt   conda_app_entrys   --typeR   s   Command type to adds   --supports-http-optionst   destt   supports_http_optionss2   The command supports project's HTTP server optionss   --no-supports-http-optionst   store_falses;    The command does not support project's HTTP server optionst   COMMANDs#   Command line or app filename to adds   remove-commands!   Remove a command from the projects   list-commandss    List the commands on the projecti   s   Must specify a subcommand.t   filei   RK   t   anaconda_project_verboset   stream(F   R   t   add_subparsersR   R   t   Falset   Truet
   add_parserR   t   set_defaultsR)   R*   R   R+   R1   R2   t   anaconda_projectt   _beta_test_modeR3   R4   R7   R:   t   variable_commandst   main_addt   main_removet	   main_listt   main_sett
   main_unsetR   t   download_commandsR   t   list_service_typesR!   t   mapt   service_commandst   environment_commandst   main_list_env_specst   main_exportt	   main_lockt   main_unlockt   main_updatet   main_add_packagest   main_remove_packagest   main_list_packagest   main_add_platformst   main_remove_platformst   main_list_platformsR
   R"   t   command_commandst   lent   printt   syst   stderrt   print_usaget
   parse_argst
   SystemExitt   codet   verboset   loggingt   getLoggerClasst   setLevelt   DEBUGt   StreamHandlert
   addHandlerR   R8   t   ost   patht   abspathR	   (   t   argvt   parsert
   subparsersR&   R(   R   t   service_typest   service_choicesRP   RY   Rb   Rd   t   command_choicest   argst   et   loggert   handler(    (   R   R   sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyt   _parse_args_and_run_subcommand(   s¾   				
"

	


"















	






	














	







	





		c           C@ s   t  j ƒ  t t j ƒ S(   N(   Rs   t   _enter_beta_test_modeR¨   RŽ   Rž   (    (    (    sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyt   _main_without_bug_handlerl  s    
c          C@ s#   i t  d 6}  t t d d d |  ƒS(   s   anaconda-project command line tool Conda-style entry point.

    Conda expects us to take no args and return an exit code.
    R   t   program_names   anaconda-projectt   details_dict(   R   R   Rª   (   t   details(    (    sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyR*   q  s    (;   t   __doc__t
   __future__R    R   R•   R›   RŽ   t   argparseR   R   t/   anaconda_project.internal.cli.prepare_with_modeR   R   R   t   anaconda_project.versionR   t   anaconda_project.verboseR   R	   t   anaconda_project.projectR
   t/   anaconda_project.requirements_registry.registryR   t<   anaconda_project.requirements_registry.requirements.downloadR   Rs   t)   anaconda_project.internal.cli.bug_handlerR   t"   anaconda_project.internal.cli.initt   internalt   cliR)   t!   anaconda_project.internal.cli.runR+   t%   anaconda_project.internal.cli.prepareR1   t#   anaconda_project.internal.cli.cleanR2   t%   anaconda_project.internal.cli.archiveR4   t'   anaconda_project.internal.cli.unarchiveR7   t$   anaconda_project.internal.cli.uploadR:   t&   anaconda_project.internal.cli.activateR3   t/   anaconda_project.internal.cli.variable_commandsRu   t/   anaconda_project.internal.cli.download_commandsR{   t.   anaconda_project.internal.cli.service_commandsR~   t2   anaconda_project.internal.cli.environment_commandsR   t.   anaconda_project.internal.cli.command_commandsR‹   R¨   Rª   R*   (    (    (    sA   lib/python2.7/site-packages/anaconda_project/internal/cli/main.pyt   <module>   s<   	ÿ E	