o
    f÷§i  ã                   @   s   d dl Z d dlZd dlmZmZ d dlZd dlmZmZm	Z	m
Z
mZmZmZ ddgZdZG dd„ dƒZG d	d
„ d
ƒZG dd„ dƒZde jfdd„Zd$de jfdd„Zddœdedee ddfdd„Zdeddfdd„Zdeddfdd„Zd%dd„Zd$dejdee dejfd d!„Zd%d"d#„ZdS )&é    N)ÚMappingÚOptional)Ú_get_and_apply_versionÚ_get_configÚ_get_override_versionÚ_get_pyproject_pathÚ_get_versionÚ_stateÚ_validate_configzpoetry-core>=1.0.0z'poetry-dynamic-versioning>=1.0.0,<2.0.0z!poetry_dynamic_versioning.backendc                   @   s8   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdS )ÚKeyÚtoolzpoetry-dynamic-versioningÚenablezbuild-systemÚrequireszbuild-backendÚprojectÚpoetryÚdynamicÚversionÚnameN)Ú__name__Ú
__module__Ú__qualname__r   Úpdvr   Úbuild_systemr   Úbuild_backendr   r   r   r   r   © r   r   úQ/home/ubuntu/.local/lib/python3.10/site-packages/poetry_dynamic_versioning/cli.pyr      s    r   c                   @   s0   e Zd ZdZdZdZd ee¡Zd ee¡ZdS )ÚCommandzdynamic-versioningr   Úshowz{} {}N)	r   r   r   Údvr   r   ÚformatÚ	dv_enableÚdv_showr   r   r   r   r   &   s    r   c                   @   s   e Zd ZdZdZdZdS )ÚHelpzäApply the dynamic version to all relevant files and leave the changes in-place. This allows you to activate the plugin behavior on demand and inspect the result. Your configuration will be detected from pyproject.toml as normal.z„Update pyproject.toml to enable the plugin using a typical configuration. The output may not be suitable for more complex use cases.z-Print the version without changing any files.N)r   r   r   Úmainr   r   r   r   r   r   r"   .   s    ÿÿr"   Úreturnc                  C   sD   t jtjd} | jddd}|jtjtjd |jtjtjd | S )N)ÚdescriptionÚcmdÚsubcommands)ÚdestÚtitle)Úhelp)	ÚargparseÚArgumentParserr"   r#   Úadd_subparsersÚ
add_parserr   r   r   )ÚparserÚ
subparsersr   r   r   Ú
get_parser;   s
   r1   c                 C   s   t ƒ  | ¡S ©N)r1   Ú
parse_args)Úargvr   r   r   r3   E   s   r3   )ÚconfigÚ
standaloner5   c                 C   sT   t |ƒ}|r&| rtdtjd ntdtjd |D ]}td |¡tjd qd S d S )NzConfiguration issues:©Úfilez/poetry-dynamic-versioning configuration issues:ú  - {})r
   ÚprintÚsysÚstderrr   )r6   r5   ÚerrorsÚerrorr   r   r   ÚvalidateI   s   úr?   c                 C   s6   t | d tddd}|stdƒ‚| rt|ƒ d S d S )N)r6   T)ÚretainÚforcez%Unable to determine a dynamic version)r?   r   ÚRuntimeErrorÚreport_apply)r6   r   r   r   r   ÚapplyT   s   
ÿrD   r   c                 C   sr   t d tj|  j¡tjd tj|  jr0t dtjd tj|  jD ]}t d |¡tjd q!d S t dtjd d S )NzVersion: {}r7   zFiles with substitutions:r9   zFiles with substitutions: none)r:   r   r	   Úprojectsr   r;   r<   Úsubstitutions)r   Ú	file_namer   r   r   rC   _   s   ÿrC   c                  C   sL   t ƒ } | d u rtdƒ‚t |  ¡  d¡¡}t|ƒ}|  t |¡ 	d¡¡ d S )NúUnable to find pyproject.tomlúutf-8)
r   rB   ÚtomlkitÚparseÚ
read_bytesÚdecodeÚ_enable_in_docÚwrite_bytesÚdumpsÚencode)Úpyproject_pathr5   r   r   r   r   i   s   r   ÚdocÚenvc                 C   s
  |   tji ¡  tj¡p|   tji ¡  tji ¡  tj¡}t||ƒp!d}t ¡  	tj
d¡}t ¡  	tj|¡}|   tj¡d u rB|| tj< n| tj   tj¡d u rV|| tj tj< n| tj tj  |¡ t ¡  	tjt¡ 	tjt¡}|   tj¡d u r}|| tj< n| tj  |¡ |   tj¡d ur| tj   tj¡d ur | tj tj= | tj   tj¡d u r¶tjg| tj tj< ntj| tj tj vrÍ| tj tj  tj¡ | tj   tj¡d u rét ¡  	tj|¡| tj tj< | S | tj tj   tj¡d u r|| tj tj tj< | S )Nz0.0.0T)Úgetr   r   r   r   r   r   rJ   ÚtableÚaddr   r   Úupdater   Ú_DEFAULT_REQUIRESr   Ú_DEFAULT_BUILD_BACKENDr   r   r   Úappend)rS   rT   r   Úplaceholder_versionÚ	pdv_tableÚ
tool_tableÚbuild_system_tabler   r   r   rN   s   s6   6ÿýrN   c                  C   sJ   t ƒ } | d u rtdƒ‚t |  ¡  d¡¡}t|ƒ}t|ƒ}t|d ƒ d S )NrH   rI   r   )	r   rB   rJ   rK   rL   rM   r   r   r:   )rR   Ú	pyprojectr5   r   r   r   r   r   œ   s   r   r2   )r$   N) r+   r;   Útypingr   r   rJ   Úpoetry_dynamic_versioningr   r   r   r   r   r	   r
   rY   rZ   r   r   r"   r,   r1   Ú	Namespacer3   Úboolr?   rD   ÚstrrC   r   ÚTOMLDocumentrN   r   r   r   r   r   Ú<module>   s$    $

 

 
)