o
    hj                  
   @   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mZ eddZ	ee	Zd5d	ee
 d
eee
  defddZe  dd Ze dd Ze e jddde jde ddgdddede
fddZe e de jdddd e jd!dd"d#de
d$ed%efd&d'Ze d(d) Ze e jd*dd+d#e jd,dd-d#d.ed/efd0d1Ze d2d3 Zed4kre  dS dS )6    N)List   )DocsManager)AsyncLoggerT)verbose   headersrowspaddingc                    s   dd t | g|R  D dd fddD  d } fdd}t| t||  t| |D ]	}t|| q7t| dS )	z+Print formatted table with headers and rowsc                 S   s   g | ]}t d d |D qS )c                 s   s    | ]	}t t|V  qd S )N)lenstr).0cell r   I/var/www/Befach/backend/venv/lib/python3.10/site-packages/crawl4ai/cli.py	<genexpr>   s    z)print_table.<locals>.<listcomp>.<genexpr>)max)r   colr   r   r   
<listcomp>   s    zprint_table.<locals>.<listcomp>+c                 3   s     | ]}d |d    V  qdS )-r   Nr   )r   wr
   r   r   r      s    zprint_table.<locals>.<genexpr>c                    s&   dd  fddt| D  d S )N|c                 3   s8    | ]\}}d    t |d| d    V  qdS ) <N)r   )r   r   r   r   r   r   r      s    ,z2print_table.<locals>.format_row.<locals>.<genexpr>)joinzip)rowr
   widthsr   r   
format_row   s
   zprint_table.<locals>.format_rowN)r   r   clickecho)r   r	   r
   borderr!   r   r   r   r   print_table   s    

r%   c                   C      dS )zCrawl4AI Command Line InterfaceNr   r   r   r   r   cli      r'   c                   C   r&   )zDocumentation operationsNr   r   r   r   r   docs    r(   r)   sections)nargsz--modeextended	condensed)typedefaultmodec              
   C   sj   zt t  tt| | W dS  ty4 } ztj	t
|dd td W Y d}~dS d}~ww )zCombine documentation sectionsERROR)tagr   N)asynciorundocs_managerensure_docs_existr"   r#   generate	Exceptionloggererrorr   sysexit)r*   r1   er   r   r   combine%   s   r?   queryz--top-kz-k   )r0   z--build-indexzBuild index if missing)is_flaghelptop_kbuild_indexc              
   C   s   z't | |}|dkr |stdr tt j  t | |}t| W dS  t	yK } ztjdt
| dd td W Y d}~dS d}~w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)r6   searchr"   confirmr4   r5   llm_textgenerate_index_filesr#   r9   r   r<   r=   )r@   rD   rE   resultr>   r   r   r   rI   1   s   rI   c               
   C   sh   zt t  td W dS  ty3 }  ztjdt|  dd t	d W Y d} ~ dS d} ~ ww )zUpdate docs from GitHubz"Documentation updated successfullyrF   TrG   r   N)
r4   r5   r6   
fetch_docsr"   r#   r9   r   r<   r=   )r>   r   r   r   updateB   s   rO   z--force-factszForce regenerate fact filesz--clear-cachezClear BM25 cacheforce_factsclear_cachec              
   C   s~   zt t  t tjj| |d td W dS  ty> } ztjdt	| dd t
d W Y d}~dS d}~ww )zBuild or rebuild search indexes)force_generate_factsclear_bm25_cachez!Search indexes built successfullyrF   TrG   r   N)r4   r5   r6   r7   rK   rL   r"   r#   r9   r   r<   r=   )rP   rQ   r>   r   r   r   indexL   s   
rT   c               
   C   sn   zt  } tdgdd | D  W dS  ty6 } ztjdt| dd td W Y d}~dS d}~ww )	z%List available documentation sectionsSectionsc                 S   s   g | ]}|gqS r   r   )r   sectionr   r   r   r   b   s    zlist.<locals>.<listcomp>rF   TrG   r   N)	r6   listr%   r9   r"   r#   r   r<   r=   )r*   r>   r   r   r   rW   ]   s   rW   __main__)r   )r"   r<   r4   typingr   r6   r   async_loggerr   r:   r   intr%   groupr'   r)   commandargumentoptionChoicetupler?   boolrI   rO   rT   rW   __name__r   r   r   r   <module>   sB    
$

	
	


