
    7j                     v   d dl Z d dlmZ d dlmZ d dlmZ  e j                  d      Z e j                  d      Z	 e j                  d      Z
 e j                  d      Z e j                  d	      Z e j                  d
      Zg dZd Zd Zd Zd Zd'dZ ej(                  ddded       ej(                  dddd       ej(                  dddd       ej(                  dd dd!g d"#       ej*                  d$ej,                  j.                  j0                  rdnd%      d&                                    Zy)(    N)cli)LICENSE_TEXTS)normpathz\(\[\{\<z\)\]\}\>z[\.,;:]+z^(\s|/|\*|#)+z(\s|/|\*|#|\\)+$z\s+)z.cz.hz.cppz.cxxz.hppz.hxxc                    | j                         j                  d      }|D cg c]  }t        j                  d|       }}|D cg c]  }t        j                  d|       }}|D cg c]  }t
        j                  d|       }}|D cg c]  }t        j                  d|       }}|D cg c]  }t        j                  d|       }}|D cg c]  }t        j                  d|       }}|D cg c]  }|j                          }}|D cg c]  }||dk7  s| }}dj                  |      S c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )N
  ())lowersplitPUNCTUATIONsubTRASH_PREFIXTRASH_SUFFIXSPACEL_PARENR_PARENstripjoin)inputlineslines      N/home/hanthebot/chat/keyboard/qmk_firmware/lib/python/qmk/cli/license_check.py_simplify_textr      s/   KKM%E3894[__R&9E949:D\b$':E:49:D\b$':E:.34dUYYsD!4E4056W[[d#6E6056W[[d#6E6&+,dTZZ\,E,#Gdt'7DBJTGEG88E? :::466,Gs;   D8D=*EE0EE6EEE!Ec                  t    t         D ]/  \  } }t        t        |            D ]  }t        ||         ||<    1 y N)r   rangelenr   )_long_licensesis      r   _preformat_license_textsr#      sG    ) @=s=)* 	@A-mA.>?M!	@@    c                     d }|}| ;t        |       dkD  r-| D cg c]  }|j                  d      sd| n| c}fd}|}|S c c}w )Nc                     | t         v S r   )SUFFIXES)ss    r   _default_suffix_conditionz>_determine_suffix_condition.<locals>._default_suffix_condition&   s    H}r$   r   .c                     | v S r    )r(   suffixess    r   _specific_suffix_conditionz?_determine_suffix_condition.<locals>._specific_suffix_condition.   s    = r$   )r   
startswith)
extensionsr)   conditionalr(   r.   r-   s        @r   _determine_suffix_conditionr2   %   s^     ,K#j/A"5EOP1<<#4asG!;P	! 1 Qs   Ac                    t               }| D ]  }|j                         rUt        |j                  d            D ]7  }|j	                         s ||j
                        s'|j                  |       9 h|j	                         sy ||j
                        s|j                  |        t        t        |            S )N*)setis_dirsortedrglobis_filesuffixaddlist)inputsr1   
check_listfilenamefiles        r   _determine_file_listrA   6   s    J )??x~~c23 )<<>k$++&>NN4() 8??+x() z"##r$   Fc           	         | j                  dd      }|rt        | j                               n
t        |       }d|v r|j                  d      }t	        j                  d|d   j                               d   j                         }d}t        D ],  \  }}	|j                         |j                         k(  s(|}d	} n |s5|rt        | d
       yt        j                  j                  d| d       y|rt        | d|        y	t        j                  j                  d| d| d       y	t        |      }
t        D ]N  \  }}|D ]D  }||
v s|rt        | d|          y	t        j                  j                  d| d| d         y	 P |rt        | d
       yt        j                  j                  d| d       y)Nzutf-8ignore)encodingerrorszSPDX-License-Identifier:z\s|//|\*   r   FTz UNKNOWNz	{fg_cyan}z6{fg_reset} -- unknown license, or no license detected!r	   z {fg_reset} -- license detected: z (SPDX License Identifier)z (Full text))	read_textstrabsoluter   rer   r   r   printr   logerrorinfor   )r?   rI   shortdatafilename_outreslicensefoundshort_licenser    simple_textr!   long_licenses                r   "_detect_license_from_file_contentsrX   D   s   wx@D/73x((*+S]L!T)jj34((;A7:@@B - 	M1}}-"5"5"77'		 h/0  L>9qrs\N!G9-.  GGLL;|n4VW^V__yz{ %T*,9 	 (M= -  ;.a?@   {<.@bcpbqq}%~ 	  \N(+,  GGMMK~5mnor$   r=   r4   Tz#List of input files or directories.)nargsarg_onlytypehelpz-sz--short
store_truezShort output.)actionr\   z-az
--absolutezPrint absolute paths.z-ez--extensionappendzUOverride list of extensions. Can be specified multiple times for multiple extensions.)rZ   r^   defaultr\   zFile license check.)hiddenc                 2   t                t        | j                  j                        }t	        | j                  j
                  |      }d}t        |      D ];  }t        || j                  j                  | j                  j                        r:d}= |ryy )NF)rI   rO   T)
r#   r2   args	extensionrA   r=   r7   rX   rI   rO   )r   r1   r>   failedr?   s        r   license_checkrf   r   s     -chh.@.@AK%chhoo{CJF:& 1(SXXEVEV^a^f^f^l^lmF  r$   )FF)rJ   milcr   qmk.constantsr   qmk.pathr   compiler   r   r   r   r   r   r'   r   r#   r2   rA   rX   argument
subcommandconfiguser	developerrf   r,   r$   r   <module>rp      sC   
  ' 
"**[
!
"**[
!bjj%rzz*+rzz-.

67
@"$+\ hcDxFkldIlIdL<STdMD2  Ul  m%szz7P7PeVZ[ \ m U J m
r$   