
    VhM                    ~    d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ dgZg dZ e	       Z G d	 de      Zy
)    )annotations)AnsibleError)string_types)RoleDefinition)Displayscm_archive_resourceRoleRequirement)namerolescmsrcversionc                  H    e Zd ZdZd Zed        Zed        Zedd       Zy)r
   z
    Helper class for Galaxy, which is used to parse both dependencies
    specified in meta/main.yml and requirements.yml files.
    c                     y )N )selfs    Q/home/dcms/DCMS/lib/python3.12/site-packages/ansible/playbook/role/requirement.py__init__zRoleRequirement.__init__.   s        c                    d| vrd| vr| S | j                  d      d   }|j                  d      r|d d }|j                  d      r|d d }d	|v r|j                  d	      d
   }|S )Nz://@/z.git.tar.gzi,r   )splitendswith)repo_urltrailing_paths     r   repo_url_to_role_namez%RoleRequirement.repo_url_to_role_name1   s    
  S%8O s+B/!!&))#2.M!!),)#2.M-)//4Q7Mr   c                   t        | t              rd }d }d }d }d| v r| j                  d      dk(  r$| j                         j	                  dd      \  }}nI| j                  d      dk(  r%| j                         j	                  dd      \  }}}nt        d| z        | }|t        j                  |      }d|v r|j	                  dd      \  }}t        ||||      S d| v r | d   }d|v rt        d|z        | d= || d	<   n| j                         } d
| v rxd| d
   v r-d| d
   v r&d| d
   vr| d
   j                  d      sd| d
   z   | d
<   d| d
   v r| d
   j                  d      \  | d<   }| d
<   d	| vrt        j                  | d
         | d	<   d| vrd| d<   d| vrd | d<   t        | j                               D ]  }|t        vs| j                  |        | S )Nr         zEInvalid role line (%s). Proper format is 'role_name[,version[,name]]'+)r   r   r   r   r   z&Invalid old style role requirement: %sr   r   z
github.comhttpr   zgit+r   r    )
isinstancer   countstripr   r   r
   r"   dictcopyr   	partitionlistkeysVALID_SPEC_KEYSpop)r   r   r   r   r   dummykeys          r   role_yaml_parsezRoleRequirement.role_yaml_parseA   s'    dL)DCCGd{::c?a'%)ZZ\%7%7Q%?NS'ZZ_)+/::<+=+=c1+E(S'4&'nqu'uvv|&<<SAcz YYsA.
cTsWEET><Dd{"#Kd#RSSL#V99;D}4;.6T%[3HSX\]bXcMclpqvlw  mA  mA  BK  mL"(4;"6DK$u+%6:5k6K6KC6P3DKU%#2#H#He#UDL$"$YD "U		$ 	C/)	 r   Nc                "    t        | ||||      S )N)r   r   r   keep_scm_metar   )r   r   r   r   r7   s        r   scm_archive_rolez RoleRequirement.scm_archive_role{   s     $CStW\ijjr   )gitNHEADF)	__name__
__module____qualname____doc__r   staticmethodr"   r5   r8   r   r   r   r
   r
   '   sK    
   7 7r k kr   N)
__future__r   ansible.errorsr   ansible.module_utils.sixr    ansible.playbook.role.definitionr   ansible.utils.displayr   ansible.utils.galaxyr	   __all__r1   displayr
   r   r   r   <module>rH      sA   $ # ' 1 ; ) 5
 )Wkn Wkr   