a )g@s|ddlmZmZmZeZddlmZddlm Z ddl m Z ddl m Z ddlmZdgZgdZe ZGd dde Zd S) )absolute_importdivisionprint_function) AnsibleError) string_types)RoleDefinition)Displayscm_archive_resourceRoleRequirement)namerolescmsrcversionc@s>eZdZdZddZeddZeddZedd d Zd S)r z Helper class for Galaxy, which is used to parse both dependencies specified in meta/main.yml and requirements.yml files. cCsdS)N)selfrrE/usr/lib/python3.9/site-packages/ansible/playbook/role/requirement.py__init__0szRoleRequirement.__init__cCshd|vrd|vr|S|dd}|dr8|dd}|drN|dd}d |vrd|d d }|S) Nz://@/z.git.tar.gzi,r)splitendswith)Zrepo_urlZ trailing_pathrrrrepo_url_to_role_name3s    z%RoleRequirement.repo_url_to_role_namecCst|trd}d}d}d}d|vrz|ddkrF|dd\}}q~|ddkrl|dd\}}}q~td|n|}|durt|}d|vr|dd\}}t||||dSd|vr|d}d|vrtd|n|d=||d <n| }d |vrd |d vrJd |d vrJd|d vrJ|d  d sJd|d |d <d|d vrt|d  d\|d<}|d <d |vrt|d |d <d|vrd|d<d|vrd|d<t | D]}|tvr||q|S)NrzEInvalid role line (%s). Proper format is 'role_name[,version[,name]]'+)r rrrr z&Invalid old style role requirement: %sr rz github.comhttprzgit+rr) isinstancercountstriprrr rdictcopyr partitionlistkeysVALID_SPEC_KEYSpop)r r rrrZdummykeyrrrrole_yaml_parseCsN    :    zRoleRequirement.role_yaml_parsegitNHEADFcCst|||||dS)N)rr r keep_scm_metar )rrr rr1rrrscm_archive_role}sz RoleRequirement.scm_archive_role)r/Nr0F) __name__ __module__ __qualname____doc__r staticmethodrr.r2rrrrr )s  9N)Z __future__rrrtypeZ __metaclass__Zansible.errorsrZansible.module_utils.sixrZ ansible.playbook.role.definitionrZansible.utils.displayrZansible.utils.galaxyr __all__r+Zdisplayr rrrrs