o
    z,h                     @   sR   d Z ddlZddlZddlmZ ddlZddlmZ dd Zdd Z	dd	d
Z
dS )ae  Module that contains the command line app.

Why does this file exist, and why not put this in __main__?
  You might be tempted to import things from __main__ later, but that will
  cause problems: the code will get executed twice:
  - When you run `python -m sqlparse` python will execute
    ``__main__.py`` as a script. That means there won't be any
    ``sqlparse.__main__`` in ``sys.modules``.
  - When you import __main__ it will get executed again (as a module) because
    there's no ``sqlparse.__main__`` in ``sys.modules``.
  Also see (1) from http://click.pocoo.org/5/setuptools/#setuptools-integration
    N)TextIOWrapper)SQLParseErrorc                  C   s  g d} t jdddd}|d |jddd	d
dd |jddtjd |d}|jdddd| dddd | D d |jdddd| dddd | D d |jdd d!d"d#d$gd%d |jd&d'd(d)d*d+ |jd,d-d.d(d)d/d+ |jd0d1d2td3d4 |jd5d6d(d)d7d+ |jd8d9d(d)d:d+ |jd;d<d(d)d=d> |jd?d@d(d)dAd> |jdBdCdDtdEd4 |jdFdGd)t	dHd4 |jdIdJd)t	dKd4 |jdLdMdNdOdP |S )QN)upperlower
capitalize	sqlformatzEFormat FILE according to OPTIONS. Use "-" as FILE to read from stdin.z%(prog)s  [OPTIONS] FILE, ...)progdescriptionusagefilenamez-oz	--outfileoutfileFILEz)write output to FILE (defaults to stdout))destmetavarhelpz	--versionversion)actionr   zFormatting Optionsz-kz
--keywordsCHOICEkeyword_casez,change case of keywords, CHOICE is one of {}z, c                 s       | ]}d  |V  qdS z"{}"Nformat.0x r   B/var/www/html/rh/venv/lib/python3.10/site-packages/sqlparse/cli.py	<genexpr>?       z create_parser.<locals>.<genexpr>)r   r   choicesr   z-iz--identifiersidentifier_casez/change case of identifiers, CHOICE is one of {}c                 s   r   r   r   r   r   r   r   r   G   r   z-lz
--languageLANGoutput_formatpythonphpzJoutput a snippet in programming language LANG, choices are "python", "php"z--strip-commentsstrip_comments
store_trueFzremove comments)r   r   defaultr   z-rz
--reindentreindentzreindent statementsz--indent_widthindent_width   z(indentation width (defaults to 2 spaces))r   r(   typer   z--indent_after_firstindent_after_firstz2indent after first line of statement (e.g. SELECT)z--indent_columnsindent_columnsz<indent all columns by indent_width instead of keyword lengthz-az--reindent_alignedz%reindent statements to aligned format)r   r(   r   z-sz--use_space_around_operatorsz*place spaces around mathematical operatorsz--wrap_after
wrap_afterr   z*Column after which lists should be wrappedz--comma_firstcomma_firstz-Insert linebreak before comma (default False)z	--compactcompactz2Try to produce more compact output (default False)z
--encodingencodingzutf-8z*Specify the input encoding (default utf-8))r   r(   r   )
argparseArgumentParseradd_argumentsqlparse__version__add_argument_groupr   joinintbool)_CASE_CHOICESparsergroupr   r   r   create_parser    s   

r?   c                 C   s   t jd|  dS )z5Print msg and optionally exit with return code exit_.z[ERROR] {}
   )sysstderrwriter   )msgr   r   r   _error   s   rE   c           
   
   C   s  t  }|| } | jdkr&ttjj| jd}z
| }W |	  nB|	  w z!t
| j| jd}d| }W d    n1 sAw   Y  W n tyb } ztd| j|W  Y d }~S d }~ww d}| jrzt
| jd| jd}d}W n ty } ztd| j|W  Y d }~S d }~ww tj}t| }ztj|}W n ty } ztd	|W  Y d }~S d }~ww tj|fi |}	||	 |  |r|  d
S )N-)r2    zFailed to read {}: {}FwTzFailed to open {}: {}zInvalid options: {}r   )r?   
parse_argsr   r   rA   stdinbufferr2   readdetachopenr9   	readlinesOSErrorrE   r   r   stdoutvarsr6   	formattervalidate_optionsr   rC   flushclose)
argsr=   wrapperdatafeclose_streamstreamformatter_optssr   r   r   main   sR   



r`   )N)__doc__r3   rA   ior   r6   sqlparse.exceptionsr   r?   rE   r`   r   r   r   r   <module>   s   ~