o
    svXj  ã                   @   sn   d Z ddlZddlZddlmZ ddlmZmZ ddlZddl	m
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)ÚopenÚ	getreader)ÚPY2)Ú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dIdJdKdLdM� |S )NN)Ú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 {0}z, c                 s   ó   � | ]}d   |¡V  qdS ©z"{0}"N©Úformat©Ú.0Úx© r   úI/var/www/html/myproject/venv/lib/python3.10/site-packages/sqlparse/cli.pyÚ	<genexpr>B   ó   € z create_parser.<locals>.<genexpr>)r   r   Úchoicesr   z-iz--identifiersÚidentifier_casez0change case of identifiers, CHOICE is one of {0}c                 s   r   r   r   r   r   r   r    r!   J   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
--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à   ü
üý
ÿûÿûûûûûûûüüûûürA   c                 C   s   t j d | ¡¡ dS )z5Print msg and optionally exit with return code exit_.z[ERROR] {0}
é   )ÚsysÚstderrÚwriter   )Úmsgr   r   r    Ú_errorš   s   rG   c           
   
   C   sÀ  t ƒ }| | ¡} | jdkr3trt| jƒtjƒ ¡ }nVt	tjj
| jd�}z
| ¡ }W | ¡  nB| ¡  w z!t| jd| jƒ�}d | ¡ ¡}W d   ƒ n1 sNw   Y  W n tyo } ztd | j|¡ƒW  Y d }~S d }~ww d}| jr�zt| jd| jƒ}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ú-)r4   ÚrÚ zFailed to read {0}: {1}FÚwTzFailed to open {0}: {1}zInvalid options: {0}r   )rA   Ú
parse_argsr   r   r   r4   rC   ÚstdinÚreadr   ÚbufferÚdetachr   r;   Ú	readlinesÚIOErrorrG   r   r   ÚstdoutÚvarsr8   Ú	formatterÚvalidate_optionsr   rE   ÚflushÚclose)
Úargsr?   ÚdataÚwrapperÚfÚeÚclose_streamÚstreamÚformatter_optsÚsr   r   r    Úmain    sV   


ÿ€ÿ€ÿ€ÿ€ÿ
rb   )N)Ú__doc__r5   rC   Úior   Úcodecsr   r   r8   Úsqlparse.compatr   Úsqlparse.exceptionsr   rA   rG   rb   r   r   r   r    Ú<module>   s   	w