
    ~i                         d Z ddlZddlZddlZej                  j                  ej                  j                  e            Zej                  j                  e      Z	ej                  j                  e	ddd      Zej                  j                  e	ddd      Zg dZded	efd
Zdededed	efdZedk(  rg Z ed        ed        ed       e eded      z  Z e         ed        ed        ed       e eded      z  Z e        erO ed ee       dej.                         eD ]  Z ede ej.                           ej2                  d       y ed        ej2                  d       yy)uH  
dry-run 검증 스크립트: .github/workflows/guard.yml 및 ci.yml의
task_id 추출 regex가 task-N+M 형식을 올바르게 매칭하는지 확인한다.

사용법:
    python3 scripts/verify_workflow_taskid_regex.py

모두 PASS면 stdout에 PASS 출력 + exit 0.
잘림 발생 시 stderr에 명확한 메시지 + exit 1.
    Nz.github	workflowsz	guard.ymlzci.yml))task-2472+1r   )task-2467+3r   )	task-2483r   )	task-2472r   )ztask/task-2472+1-dev1r   )ztask/task-2467+3-dev2r   )ztask/task-2483-dev3r   )ztask/task-2472-dev1r   yml_pathreturnc                     g }t        | d      5 }t        |d      D ]G  \  }}t        j                  d|      }|s|j	                  d      }d|v s5|j                  ||f       I 	 ddd       |S # 1 sw Y   |S xY w)uS   yml 파일에서 grep -oE '...' 형태의 ERE 패턴(task- 포함)을 추출한다.zutf-8)encoding   zgrep\s+-oE\s+'([^']+)'ztask-N)open	enumerateresearchgroupappend)r   patternsflinenolinemeres          W/home/jay/workspace/.worktrees/task-2487+1-dev2/scripts/verify_workflow_taskid_regex.pyextract_ere_patternsr   &   s    H	h	) 3Q%aO 	3LFD		3T:Aggajc>OOVSM2	33 O3 Os   +A2A2A22A<labelmin_patternsc                    g }t         j                  j                  |      s6d|  d| }t        |t        j
                         |j                  |       |S t        |      }t        d|  dt        |       dt        j                         |D ]&  \  }}t        d| d| t        j                         ( t        |      |k  rCd|  d	t        |       d
| d}t        |t        j
                         |j                  |       |S |D ]  \  }}t        j                  |      }t        D ]  \  }	}
|j                  |	      }|?d|  d| d| d|	 d|
 d}t        |t        j
                         |j                  |       X|j                  d      }||
k7  rBd|  d| d| d|	 d| d|
 d}t        |t        j
                         |j                  |       t        d| d|	 d| dt        j                           |S )u   
    yml 파일의 패턴들에 대해 전체 샘플을 검증한다.
    실패 목록을 반환하고, 실패 시 stderr에 메시지를 출력한다.
    z[FAIL] u   : 파일 미존재 — file[u   ] 추출된 패턴 u   건:z  line z: u   : 패턴이 u   건 — 최소 u!   건 필요. 수정 누락 의심.z line u    | 패턴='u   ' | 입력='u   ' → 매칭 없음 (기대: 'z')r   u   ' → 실제='u   ', 기대='u    ' — 잘림(truncation) 감지!z  PASS  line z | 'u   ' → '')ospathexistsprintsysstderrr   r   lenstdoutr   compileSAMPLESr   r   )r   r   r   failuresmsgr   r   r   compiled	input_strexpectedmatchactuals                r   verify_filer3   3   s*   
 H77>>(#w5hZ@c

##H-H	AeW'Hd
;#**M :xr#'cjj9: 8}|#eWLX|n U$ % 	 	c

# ::c?#* 	IxOOI.E}eWF6(+cU C(k)GzQSU  c

+$QX%!%vhk# G##,+^F8;xj Y9: 
 #CJJ/OOC('xtI;gfXQO ZZ)	6 O    __main__z<============================================================u   guard.yml 검증   )r   u   ci.yml 검증   zFAIL: u   건의 검증 실패r   z  - r   PASS)__doc__r   r"   r&   r#   dirnameabspath__file___SCRIPT_DIR
_REPO_ROOTjoin
_GUARD_YML_CI_YMLr+   strlistr   intr3   __name__all_failuresr%   r(   r'   r   exit r4   r   <module>rI      s  	 
 	 
 ggoobggooh78WW__[)
WW\\*ikJ

'',,z9k8
D

3 
4 
6s 6c 6 6 6r zL	(O	
	(OKZaHHL	G	(O	/	(OK'BBL	Gs<())=>SZZP 	/AD*3::.	/f- r4   