
    j"j                       S r SSKJr  SSKrSSKrSSKrSSKrSSKrSSK	J
r
  \
" \5      R                  5       R                  S   r\S-  S-  r\S-  S	-  r\S
-  S-  r\S-  rSS jrSS jrSS jrSS jr\S:X  a  \" \" 5       5      eg)z>Build a curated offline skill pack for dev/ops/test workflows.    )annotationsN)Path   configz#devops-testing-skill-selection.jsonzseed-skillszdevops-testingreportsz#devops-testing-skill-pack-report.md	artifactsc                H    [         R                  " U R                  SS95      $ )Nutf-8encoding)jsonloads	read_text)paths    *scripts/build-devops-testing-skill-pack.py	read_jsonr      s    ::dnngn677    c                    [        U S-  5      nUR                  S5      =(       d    U R                  UR                  S5      =(       d    SUR                  S5      =(       d    SUR                  S5      =(       d    SUR                  S	5      S
.$ )Npackage.jsonnameversionz0.1.0description licenseUNKNOWNsource)r   r   r   r   r   )r   getr   )	skill_dirpackages     r   package_metar       so    	N23GF#5y~~;;y)4W{{=17R;;y)6Y++h' r   c                |   U R                  5       (       d  [        SU  35      eU S-  R                  5       (       d  [        SU  35      eU S-  R                  5       (       d  [        SU  35      eUR                  5       (       a  [        R
                  " U5        [        R                  " X5        [        U5      nU$ )NzMissing skill directory: r   zMissing package.json: zskill.mdzMissing skill.md: )is_dirFileNotFoundErroris_fileexistsshutilrmtreecopytreer    )srcdstmetas      r   
copy_skillr,   $   s    ::<<";C5 ABB. ))++"8 >??*%%''"4SE :;;
zz||c
OOCDKr   c                 8	   [        [        5      n [        R                  5       (       a  [        R
                  " [        5        [        R                  SS9  [        R                  R                  SSS9  [        R                  SSS9  / n/ nSSS[        R                  R                  [        R                  R                  5      R                  5        3SSSSS	S/	nS
nU S    GH  nUS   nUS   n[        U-  nUR                  SS9  / n	US    H  n
[         U
-  nXR"                  -  n[%        X5      nUUS   US   US   US   U
UR'                  [         5      R)                  5       S.nUR+                  S5      (       a  US   US'   UR-                  U5        U	R-                  U5        US-  nM     UR-                  UU[/        U	5      US   S.5        UR-                  SU SU S[/        U	5       S35        GM     [        S-  R1                  [2        R4                  " USSS9S-   SS9  [        S -  R1                  [2        R4                  " USSS9S-   SS9  UR7                  SS!SS"U 3SS#S/5        U H&  nUR-                  SUS    S$US    S%US    35        M(     [        R1                  SR9                  U5      S-   SS9  [        R                  R                  [        R                  R                  5      R;                  S&5      n[        S'U S(3-  n[<        R>                  " US)5       nURA                  [        [        R'                  [         5      R)                  5       S*9  URA                  [        [        R'                  [         5      R)                  5       S*9  URA                  [        [        R'                  [         5      R)                  5       S*9  S S S 5        S
S K!nURE                  URG                  5       5      RI                  5       n[        UR"                   S+3-  R1                  U S,UR"                   S3SS9  [K        S-U 35        [K        S-U S+35        [K        S.U 35        [K        S/[         35        g
! , (       d  f       N= f)0NT)parents)r.   exist_okz!# Dev/Ops/Test Offline Skill Packr   zGenerated at: zjThis pack is curated for development, operations, testing, API, database, security, and release workflows.zxIt intentionally excludes imported skills that already matched simple static risk patterns in the GitHub import catalog.z
## Sourcesr   sourcesr   	namespacepathsr   r   r   r   )r1   r   r   r   r   source_pathpackage_dirr   )r   r1   skill_count	selectionz- `z` from `z`: z skillsz_sources.json   )ensure_asciiindent
r
   r   z_catalog.jsonz## Totalz
- Skills: z	## Skills/z` - z%Y%m%dzdevops-testing-skills-offline-z.tar.gzzw:gz)arcnamez.sha256z  zCreated zSkills: zReport: )&r   CONFIGOUT_ROOTr%   r&   r'   mkdirREPORTparent	ARTIFACTSdtdatetimenowtimezoneutc	isoformatROOTr   r,   relative_toas_posixr   appendlen
write_textr   dumpsextendjoinstrftimetarfileopenaddhashlibsha256
read_bytes	hexdigestprint)r   sources_jsoncatalogreport_linestotalr   source_namer1   
source_outsource_catalogrel_pathr)   r*   r+   item
date_stampartifacttfrV   digests                       r   mainrh   3   s;   vFhNN4N 
MMt4OOD4O0LG+

9CCEFG
t 	C


L E#X&;'	+
&wH/Cxx'Cc'D&V	?#M2	?'"t4==?D xx!!!%hXNN4 !!$'QJE# (& 	%&">2#G_		
 	c)H[MSEXDYY`abE $H ++DJJ|RV_`,adh,hsz+{++DJJwTZ[,\_c,cnu+vx"
5'.BBUWXYc${"3!4Ad6l^4]H[G\]^ 
dii-4wG1::8DJ;J<wOOH	h	'2
vv11$7@@BC
vv11$7@@BC
x!5!5d!;!D!D!FG 
(
 ^^H//12<<>FHMM?'**66&HMM?RT7U`g6h	HXJ
 	HXJg
&'	HUG
	HVH
 
(	's   4B,R
R__main__)r   r   returndict)r   r   rj   rk   )r)   r   r*   r   rj   rk   )rj   int)__doc__
__future__r   rD   rC   r   r&   sysrS   pathlibr   __file__resolver.   rI   r=   r>   r@   rB   r   r    r,   rh   __name__
SystemExit r   r   <module>rv      s    D "    
   H~''*	@	@-"22			A	A;	8Tn z
TV
 r   