�
:�d�4 � �� � d dl T d dlmZ d dlmZ d dlmZ d dlZd dlZd dlZd dl m
Z
d dlZd dlZd dl
Z
defd�Zdefd �Zdd
�Zd� Zdefd�Zdedefd�Zdedefd�Zdefd�Zededefd�� � ZdS )� )�*)�
AutoReload)�sleep)�systemN)� webdriver�selfc
�� � d}|� d� � }|D �]N}t j � |� � s|d dk rdnd}|� d� � � d� � }|dk r�at j � |� � sTt j � |� � s5t
t j � d|� � � � d |� d
�� � ��| j
D ]0}||v s||v r&t
t j � d|� d |� d�� � d
} n�1|rd}��| j
� |� � t
t j
� d|� d |� d�� � ��Pd S )NF� ����/�path�file�.� z "z" does not exist!z The z" is already being ignored!Tz
Ignoring z".)�split�osr
�isdir�removeprefix�isfile�print�
msgHeaders�FAIL�
capitalize� ignoreArr�WARNING�append�INFO)r �string�exists�resr �type�ignorings �A/home/pc/Belgeler/AutoReloadScript/AutoReloader/commandhandler.py�fignorer$ s� � �
�F�
�,�,�s�
�
�C�� @� @������t�,�,�K��R��C���v�v�V��� � ��%�%�2�2�3�7�7���2�:�:���w�~�~�d�#�#� �B�G�M�M�$�,?�,?� ��Z�_�U�U�t���'8�'8�U�U�T�U�U�U�V�V�V���� � �H��4���4�8�#3�#3���+�]�]�$�]�]�4�]�]�]�^�^�^����� $4� � ��F������d�#�#�#�
���>�>�D�>�>�T�>�>�>�?�?�?�?�#@� @� c � � t j d�� � }|� ddd�� � |� d� � }|� dd d
�� � |� dd
d�� � |� d� � }|� ddd�� � |� ddd�� � |� dddd�� � |� d� � }|� ddd�� � |� ddd�� � |� dd d!�� � |� d"d#d$�� � |� � � }|j so|j s|j r|� d%� � |j r|j | _
|j rd&| _ |j
rd&| _ |j rt | |j � � n�d'\ }}}} |j r|� d(� � |j r|j }|j | _
|j r|j }|j r|j }|j r|j } t% j � � | _ | j � ||| |�)� � |j r3d*|j vs d+|j vr|� d,� � |j | _
|j r|j | _ |j
r d&| _ d S d S )-Nz
Auto Reloader)�descriptionz--Server�
store_truez*Sets a PHP Sever. Default is localhost:80/)�action�helpzReloader Starting Argumentsz-rz--rootz>sets the url (this argument can't be used while Server is set))r* z-sz--start_pagezsets the start pagezReloader Utility Argumentsz-iz--ignorezAignores provided files or paths. instead reloads the current pagez
--ignore_htmlzIignores changes happened in html files. instead reloads the current page.�-lz--logzprints log to stdoutzPHP Server Argumentsz-az --addresszsets server address�-pz--portzsets server portz-Pz
--php_pathzsets php executable pathz-tz--targetz sets php server target directoryz4--allow flag is required to use restricted argumentsT)r r r r z2This argument can not be used while Server is set!)�_root�ip_addr�port�php_path�http://zhttps://z2Please enter a valid URL! ie: https://localhost:80)�argparse�ArgumentParser�add_argument�add_argument_group�
parse_args�Server�address�target�error�rootr- �ignore_html�ignore�logr r$ r0 r/ � phpserver�_Server�startServer�
start_page�_start_page)
r �parser�reloader_group�reloader_util_group�server_group�argsr8 r9 r0 r/ s
r# �
handleArgsrI # s: � �
�
$��
A�
A�
A�F�
���
�<�>j��k�k�k��.�.�/L�M�M�N�����h�5u��v�v�v�����n�;P��Q�Q�Q� �3�3�4P�Q�Q���$�$�T�:�<�$� A� A� A��$�$�_�L� P[�$� \� \� \��$�$�T�7�<�Nd�$�e�e�e��,�,�-C�D�D�L����d�K�6K��L�L�L����d�H�3E��F�F�F����d�L�7Q��R�R�R����d�J�5W��X�X�X������D� �;� ^��<� Q�4�;� Q��L�L�O�P�P�P��9� #���D�J��� ��D�K��8� ��D�J��;� '��D�$�+�&�&�&�� +9�'����4��9� O��L�L�M�N�N�N��<� &��l�G���D�J��;� !��[�F��=� %��}�H��9� ��9�D� �'�)�)����� � �v�w�T�T\� �]�]�]�
�y� ��D�I�%�%�Z�4�9�-D�-D��L�L�M�N�N�N��Y��
��� +��?����x� ���
�
�
�� r% r �� Fc � � t j dk r6| dk rd} t d| � d|� d�|sdndz |dk rdnd |� d
�z � � d S | dk rd} t d|sdnd
z d| � d|� �z |dk rdnd|� �z � � d S )N�ntr zC:\xampp\apache\logs\error.logzpowershell.exe "Get-Content z -tail r
z-wait�"z| Select-String 'z'"z/opt/lampp/logs/error_log�tailz-fz -n z | grep )r �namer )�log_path� row_count�hint�lives r# �get_logsrT d s � � �w�$����r�>�>�;�H��L�x�L�L� �L�L�L�Z^�Pk�PR�PR�dk�l�x|� AC� yC� yC�pt�pt� If� ]a� If� If� If� g� h� h� h����2�~�~�.��
�6�t�-�R�R��.�1N�X�1N�1N�9�1N�1N�N�X\�`b�Xb�Xb�RT�RT�hy�sw�hy�hy�z�{�{�{�{�{r% c �n � t d� � t d� � t d� � t d� � t d� � t d� � t d� � t d� � t d � � t d
� � t d� � t d� � d S )
Nz(
help : Prints this message. its changedz�log [keys] <values> : As default prints last 1000 lines of the apache error log file. Use -n to specify row count, -h to search a text/hint, -l to follow file changes, -p to set log path. Example usage: log -n 10 -h error -p /path/to/logFilez�sys(<command>) : will use the python's system function to run commands. Be careful with this one. IT HAS DIRECT ACCESS TO YOUR SHELL AND WILL EXECUTE EVERY COMMAND EVEN IF THEY ARE DANGEROUS. DO NOT RUN THIS SCRIPT AS ROOT OR SU IF YOU WANT TO BE SAFE!z�ignore <keyword(s)> : Ignores changes happened at file paths contains the keyword. Reloads the current page instead. (Use "ignore html" to ignore changes happened in html files. Reusing will stop ignoring.)zexit : Closes the scriptzvdriver <keyword>: Will get ChromeDriver's status and can close or start it. Keywords: start | restart | close | statusz!cls: Will clear terminal's outputz?clearfetch : will clear terminal output then execute "neofetch"z�<file path> : If you solely enter a file path script will check for the file and if it exist it will direct you to that file. If you want to redirect a page that isn't a file in the folder use "page <pageName>" instead.z2get <url> : Directs ChromeDriver to specified URL.zMpage <pageName> : Direct ChromeDriver to specified page on the specified URL.zCclear ignore : Clears ignore list that's been specified by the user)r � r% r# �helpcommandrW o s� � � �
5�6�6�6� � ~� � � � � I� J� J� J� � ]� ^� ^� ^� �
$�%�%�%� � C� D� D� D� �
-�.�.�.� �
M�N�N�N� � j� k� k� k� �
>�?�?�?� �
Y�Z�Z�Z� �
O�P�P�P�P�Pr% c �8 � t j | j �� � | _ t j | j j | j | j z f�� � }|� � � t j | j
�� � | _ | j � � � d S )N)�options)r9 rH �r9 )r �Chrome�opt�driver� threading�Thread�getr- rC �start�continuousCheck�checkT)r �driverTs r# �driverStartre ~ s~ � ��"�4�8�4�4�4�D�K���d�k�o�T�Z�$�JZ�=Z�<]�^�^�^�G��M�M�O�O�O��"�$�*>�?�?�?�D�K��K�������r% �commandc �F � |dk ret | d� � r| j � � � st t j � d�� � dS t t j � d�� � dS |dk �rt | d� � rS| j � � � r:t t j � d�� � t t j � d�� � dS t | d� � st j � � | _ | j �
� � t | j j � � � | j _
| j j
� � � t t j � d
�� � dS |dk r�t | d� � r| j � � � st t j � d�� � dS | j � � � | j j
� � � dS |d
k r�t | d� � r�| j � � � rst | d� � sd| _ | j r$| j � t&