ó
bøcc           @   s‘   d  Z  d d l m Z d d l Z d d l m Z m Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z e d k r e ƒ  n  d S(   s   Main runner for chironiÿÿÿÿ(   t   OptionParserNi   (   t   enginet   fetchersc          C   s$   t  j ƒ  }  t |  ƒ t |  ƒ |  S(   s<   Create a MatchEngine and setup default fetchers and matchers(   R   t   MatchEnginet   add_default_fetcherst   add_default_matchers(   t   match_engine(    (    sV   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/main.pyt   init_match_engine
   s    

c      !   C   sq   |  j  d d d d d d d d d	 d
 d d d d d d d d d d d d d d d d d d d d d d  g  ƒ d! S("   s)   Add default zephyr classes to MatchEngines   broder-tests   geofft-tests   adehnert-testt   linervat	   debathenat   undebathenat   consultt   sipbs	   sipb-autot   scriptst   barnowls
   zephyr-devt   xvmt   chiront   mirrorst   geofftt   lizdenyst   jdreedt   axst   adehnertt   achernyat   leeet   kcrt   jesust   nelhaget   csvosst   shulinyet   assassint   shankt   remitt   asat   espN(   t   add_classes(   R   (    (    sV   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/main.pyt   add_default_classes   s    	c         C   sŒ  |  j  i t j d 6t j d 6t j d 6t j d ƒ d 6t j d 6t j d d ƒ d	 6t j d d
 ƒ d
 6t j d d ƒ d 6t j d d ƒ d 6t j d d ƒ d 6t j d ƒ d 6t j d d ƒ d 6t j d d ƒ d 6t j	 d 6t j d d ƒ d 6t j
 d 6t j d 6t j d 6t j d ƒ d  6t j d! 6t j d" 6t j d# 6t j d$ 6t j d% 6t j d& 6t j d' 6t j d( 6t j d) d* ƒ d+ 6ƒ d, S(-   s1   Add default fetchers (bugtrackers) to MatchEnginet   RFCt   CVEt	   Launchpads   http://bugs.debian.orgt   Debiant   DSAR   R   t   Chiront   zcommitR   s   Barnowl Githubs	   zephyr-imt   zephyrt   Zephyrt   zulipt   Zulips   https://bugzilla.redhat.comt   RHBZs
   pag-screent   keithwt   mosht   Moshs   Scripts FAQs   learning-unlimiteds   ESP-Websitet   ESPt   Pokedexs	   MIT Classt   whatst   nivs	   NIV Biblet   XKCDt   Unicodes   Unicode Charactert   Airportt   Assassint   SCIENCEs   Debothena Testt   Undebathenat   mysteryhunts   puzzle-editings   Puzzle EditingN(   t   add_fetchersR   t	   fetch_rfct	   fetch_cvet   fetch_launchpadt   fetch_debbugst	   fetch_dsat   fetch_githubt   fetch_bugzillat   fetch_scripts_faqt   fetch_pokemont   fetch_mit_classt   fetch_whatst   fetch_ibiblest
   fetch_xkcdt   fetch_unicodet   fetch_unicode_chart   fetch_airportt   deal_with_assassint   invoke_sciencet   invoke_debothenat   undebathena_fun(   R   (    (    sV   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/main.pyR      s:    	















c         C   sr  |  j  d d ƒ |  j  d d ƒ |  j  d d ƒ |  j  d d ƒ |  j  d	 d
 ƒ |  j  d d ƒ |  j  d d ƒ |  j  d d d d g ƒ|  j  d d d d g ƒ|  j  d d d d g ƒ|  j  d d ƒ |  j  d d ƒ |  j  d d ƒ |  j  d d ƒ |  j  d d  ƒ |  j  d d! d d" g ƒ|  j  d# d$ d d% g ƒ|  j  d# d& ƒ |  j  d' d( ƒ |  j  d' d) d d* g ƒ|  j  d+ d, ƒ |  j  d+ d- ƒ |  j  d+ d. d/ d0 „  ƒ|  j  d1 d2 ƒ |  j  d3 d4 t j j ƒ |  j  d5 d6 ƒ |  j  d7 d8 ƒ |  j  d9 d: ƒ |  j  d; d< d= d> ƒ|  j  d? d@ d dA g ƒ|  j  d? dB d dA g ƒ|  j  dC dD d dE g ƒ|  j  dF dG ƒ |  j  dH d$ d dI g ƒ|  j  dH dJ ƒ |  j  dK dL ƒ |  j dM dN d g  ƒ|  j dO dP d dQ dR g ƒ|  j dS dP d dT g ƒ|  j dU dV ƒ |  j dW dX ƒ |  j dY dZ ƒ |  j d[ d\ ƒ |  j d] d^ ƒ |  j d_ d` ƒ |  j da db ƒ dc S(d   s7   Add default matchers (regexes) and Tracs to MatchEngineR%   s   \bRFC[-\s:]*#?([0-9]{2,5})\bR&   s   \b(CVE-[0-9]{4}-[0-9]{4,7})\bR'   s   \blp[-\s:]*#([0-9]{4,8})\bR(   s   \bdebian[-\s:]#([0-9]{4,6})\bR)   s   \b(DSA-[0-9-]{4,10})\bR*   s   \bchiron[-\s:]*#([0-9]{1,5})\bR+   s   \bzcommit[-\s:]*#([0-9]{1,5})\bs   Barnowl Githubs   \bGithub[-\s:]*#([0-9]{1,6})\bt   classesR   s   \bPR[-\s:]*#([0-9]{1,6})\bR-   s   \bzephyr[-\s:]*#([0-9]{1,5})\bs
   zephyr-devR/   s   \bZulip[-\s:]*#([0-9]{1,6})\bR0   s   \bRHBZ[-\s:]#([0-9]{4,7})\bs
   pag-screens"   \bpag-screen[-\s:]*#([0-9]{1,5})\bR3   s   \bmosh[-\s:]*#([0-9]{1,5})\bs   Scripts FAQs$   \bscripts\sfaq[-\s:]*#([0-9]{1,5})\bs   \bfaq[-\s:]*#([0-9]{1,5})\bR   R4   s   #([0-9]{2,5})\b(?!-Ubuntu)R"   s   \besp[-\s:]*#([0-9]{1,5})\bR5   s   \bpokemon[-\s:]*#([0-9]{1,3})\bs   #([0-9]{1,3})\bR   s	   MIT Classs(   class\s([0-9a-z]{1,3}[.][0-9a-z]{1,4})\bs+   what's\s([0-9a-z]{1,3}[.][0-9a-z]{1,4})\?\bs   ([0-9a-z]{1,3}[.][0-9]{1,4})\bt   condc         S   s
   |  j  ƒ  S(   N(   t   is_personal(   t   m(    (    sV   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/main.pyt   <lambda>X   s    R6   s   whats ([0-9a-z,:;-]{2,10})\bs	   NIV Bibles   Bible\((%s)\)R8   s   \bxkcd[-\s:]#([0-9]{1,5})\bR9   s   \bu\+([0-9a-fA-F]{2,6})\bs   Unicode Characters   \bunicode\((.)\)R:   s3   \b([0-9A-Z]{3,4}(?:[.](?:IATA|FAA))?)\s[Aa]irport\bt   flagsi    R;   s   \b(combo)\bR   s   \b(combination)\bR<   s   ^(science)$R   s   Debothena Tests&   \bdebothena test[-\s:]*#([0-9]{1,5})\bR=   R
   s#   \bundebathena[-\s:]*#([0-9]{1,5})\bs   Puzzle Editings)   \bpuzzle[ -]editing[-\s:]*#([0-9]{1,5})\bt   Djangos   https://code.djangoproject.comt	   Debathenas   https://athena10.mit.edu/tracR	   R   t   LinervaR   t   Scriptss   https://scripts.mit.edu/tract   XVMs    https://xvm.scripts.mit.edu/tract   Barnowls   https://barnowl.mit.edut   SIPBs   https://sipb.mit.edu/tract   Remits"   https://remit.scripts.mit.edu/tracs   etherpad.mit.edus%   https://etherpad.scripts.mit.edu/tract   ASAs    https://asa.scripts.mit.edu/tracN(   t   add_matcherR   t   BIBLE_REt   patternt   add_trac(   R   (    (    sV   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/main.pyR   ?   s\    c          C   sÉ  d d d d d d }  t  d |  ƒ } | j d d	 d
 d t d d d d ƒ| j d d d	 d d d ƒ| j d d	 d d d& ƒ| j d d d& ƒ| j d d	 d d t d d d d ƒ| j d d d	 d d g  d d d d ƒ| j ƒ  \ } } | r| j d t | ƒ f ƒ n  | j d' k rA| j d" | j f ƒ n  | j ri| j d  k ri| j d# ƒ n  | j	 r‘| j d! k r‘| j d$ ƒ n  | j d k rÅ| j
 s²| j rÅ| j d% ƒ qÅn  | S((   s   Parse argumentss   usage: %progs    [--no-personals]s    [--protocol=zephyr|zulip]s    [--zulip-rc]s    [--default-classes]s    [--class=class ...]t   usages   --no-personalst   destt   no_personalst   defaultt   actiont
   store_truet   helps   Disable replying to personalss   -ps
   --protocolt   protocolR,   s
   --zulip-rct   zuliprcs   --hangouts-tokens   --default-classest   default_classess   Sub to a default set of classess   -cs   --classRT   t   appends   Sub to additional classess   got %d arguments; expected noneR.   t   hangoutssC   the only supported protocols are zephyr and zulip; you requested %ss3   Protocol must be "zulip" if --zulip-rc is provided.s<   Protocol must be "hangouts" if --hangouts-token is provided.sF   Protocol must be "zephyr" if --default-classes or --class is provided.N(   s   zephyrs   zulipRr   (   R    t
   add_optiont   Falset   Nonet
   parse_argst   errort   lenRn   Ro   t   hangouts_tokenRp   RT   (   Rg   t   parsert   optionst   args(    (    sV   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/main.pyRv   s   s8    	c         C   sâ   t  ƒ  } | j |  _ | j r+ t |  ƒ n  | j rG |  j | j ƒ n  | j d k rh d d l j	 } nf | j d k r‰ d d l
 j } nE | j d k rÈ t j j d k s¶ t d ƒ ‚ d d l j } n t ‚ | j |  | ƒ d S(   s!   Run Chiron with given MatchEngineR,   iÿÿÿÿNR.   Rr   i   s   Hangouts requires Python 3(   Rv   Ri   t   ignore_personalsRp   R$   RT   R#   Rn   t   chiron_bot.chiron_zephyrt   chiron_zephyrt   chiron_bot.chiron_zulipt   chiron_zulipt   syst   version_infot   majort   AssertionErrort   chiron_bot.chiron_hangoutst   chiron_hangoutst
   ValueErrort   main(   R   R{   t   chiron_protocol(    (    sV   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/main.pyt   run_with_args—   s    			c          C   s   t  ƒ  }  t |  ƒ d S(   s   Chiron main functionN(   R   R‹   (   R   (    (    sV   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/main.pyR‰   ®   s    	t   __main__(   t   __doc__t   optparseR    R‚   t    R   R   R   R$   R   R   Rv   R‹   R‰   t   __name__(    (    (    sV   /afs/sipb.mit.edu/project/chiron/chiron-scripts-venv/src/chiron-bot/chiron_bot/main.pyt   <module>   s   			!	4	$		