
    gj              
       h   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mZ  ed      Z	 ee	      Zd,dee
   d	eee
      d
efdZ e j                         d        Zej                         d        Zej!                          e j"                  dd       e j$                  d e j&                  ddg      d      dede
fd                     Zej!                          e j"                  d       e j$                  ddd       e j$                  ddd      de
ded efd!                            Zej!                         d"        Zej!                          e j$                  d#dd$       e j$                  d%dd&      d'ed(efd)                     Zej!                         d*        Zed+k(  r e        yy)-    N)List   )DocsManager)AsyncLoggerT)verboseheadersrowspaddingc                    t        | g| D cg c]  }t        d |D               c}ddj                  fdD              z   dz   }fd}t        j                  |       t        j                   ||              t        j                  |       |D ]  }t        j                   ||              t        j                  |       yc c}w )z+Print formatted table with headers and rowsc              3   D   K   | ]  }t        t        |              y w)N)lenstr).0cells     A/var/www/openai/venv/lib/python3.12/site-packages/crawl4ai/cli.py	<genexpr>zprint_table.<locals>.<genexpr>   s     1ST#c$i.Ss    +c              3   4   K   | ]  }d |dz  z   z    yw)-   N )r   wr
   s     r   r   zprint_table.<locals>.<genexpr>   s     DVC1q7{?3Vs   c                 X    ddj                  fdt        |       D              z   dz   S )N|c              3   Z   K   | ]"  \  }}d z   t        |      d| d z    $ yw) <N)r   )r   r   r   r
   s      r   r   z2print_table.<locals>.format_row.<locals>.<genexpr>   s?      >,<q "%wD	!A3/?gO,<s   (+)joinzip)rowr
   widthss    r   
format_rowzprint_table.<locals>.format_row   s9    SXX >,/V,<> > >@CD 	D    N)r   maxr   clickecho)r   r	   r
   colborderr"   r    r!   s     `    @r   print_tabler)      s    =@=P4=PQ=Pcc1S11=PQF388DVDDDsJFD 
JJv	JJz'"#	JJv

:c?# 	JJv Rs   Cc                       y)zCrawl4AI Command Line InterfaceNr   r   r#   r   clir+           	r#   c                       y)zDocumentation operationsNr   r   r#   r   docsr.       r,   r#   sections)nargsz--modeextended	condensed)typedefaultmodec                 <   	 t        j                  t        j                                t	        j
                  t        j                  | |             y# t        $ r?}t        j                  t        |      d       t        j                  d       Y d}~yd}~ww xY w)zCombine documentation sectionsERROR)tagr   N)asynciorundocs_managerensure_docs_existr%   r&   generate	Exceptionloggererrorr   sysexit)r/   r6   es      r   combinerE   %   sf    
L2245

<((489 SV)s   AA 	B5BBqueryz--top-kz-k   )r5   z--build-indexzBuild index if missing)is_flaghelptop_kbuild_indexc                    	 t         j                  | |      }|dk(  r^|st        j                  d      rGt	        j
                  t         j                  j                                t         j                  | |      }t        j                  |       y# t        $ rB}t        j                  dt        |       d       t        j                  d       Y d}~yd}~ww xY w)zSearch documentationz;No search index available. Call build_search_index() first.z$No search index found. Build it now?Error: Terrr   N)r<   searchr%   confirmr:   r;   llm_textgenerate_index_filesr&   r?   r   rB   rC   )rF   rJ   rK   resultrD   s        r   rP   rP   1   s    	$$UE2RRemm,RSL11FFHI%,,UE:

6 

WSVH%40s   BB 	C8CCc                     	 t        j                  t        j                                t	        j
                  d       y# t        $ rB} t	        j
                  dt        |        d       t        j                  d       Y d} ~ yd} ~ ww xY w)zUpdate docs from GitHubz"Documentation updated successfullyrM   TrN   r   N)
r:   r;   r<   
fetch_docsr%   r&   r?   r   rB   rC   )rD   s    r   updaterW   B   s_    L++-.

78 

WSVH%40s   <? 	B
8BB
z--force-factszForce regenerate fact filesz--clear-cachezClear BM25 cacheforce_factsclear_cachec                    	 t        j                  t        j                                t        j                  t        j                  j                  | |             t        j                  d       y# t        $ rB}t        j                  dt        |       d       t        j                  d       Y d}~yd}~ww xY w)zBuild or rebuild search indexes)force_generate_factsclear_bm25_cachez!Search indexes built successfullyrM   TrN   r   N)r:   r;   r<   r=   rR   rS   r%   r&   r?   r   rB   rC   )rX   rY   rD   s      r   indexr]   L   s    
	L2245L))>>!,( ? 
 	 	

67 

WSVH%40s   A0A3 3	B><8B99B>c                     	 t         j                         } t        dg| D cg c]  }|g c}       yc c}w # t        $ rB}t	        j
                  dt        |       d       t        j                  d       Y d}~yd}~ww xY w)z%List available documentation sectionsSectionsrM   TrN   r   N)	r<   listr)   r?   r%   r&   r   rB   rC   )r/   sectionrD   s      r   r`   r`   ]   sk    $$&ZLH"EHG9H"EF"E 

WSVH%40s!   8 
3
8 8 	B8A>>B__main__)r   )r%   rB   r:   typingr   r<   r   async_loggerr   r@   r   intr)   groupr+   r.   commandargumentoptionChoicetuplerE   boolrP   rW   r]   r`   __name__r   r#   r   <module>rn      s     
   % %	T	"6"c $tCy/ C   	 	 	 	 
"%h\U\\:{*CDjYe 3  Z &  iq)ot2JK# c   L *     ot2OPot2DEt $  F Q    zE r#   