U
    jP^o                     @   sp   d dl Z d dlZd dlZd dlZd dlZdd Zdd Zdd Zdd	 Z	d
d Z
dd Zedkrlee  dS )    Nc                 C   sV   zt t| dW S  tjk
r<   td| Y n tk
rP   Y d S X d S )Nzpbr.jsonzPackage {0} not installed)jsonloadspkg_resourcesget_distributionZget_metadataZDistributionNotFound	Exceptionformat)Zpackage_name r   ./usr/lib/python3/dist-packages/pbr/cmd/main.py_get_metadata   s    r
   c                 C   s   t | jd }|rt| d S )Nsha)	_get_infonameprint)argsr   r   r   r	   get_sha$   s    r   c                 C   s8   | j rtdjf t| j ntdjf t| j d S )Nz	{version}z!{name}	{version}	{released}	{sha})Zshortr   r   r   r   )r   r   r   r	   get_info*   s
    r   c                 C   s   t | }t| j}|r4|d r&d}nd}|d }nL|d}|d drb|d dd  }d}nd	}d}|D ]}| snd}qnt| |||d
S )NZ
is_releasereleasedzpre-releaseZgit_version.g    )r   versionr   r   )r
   r   r   r   split
startswithisdigitdict)r   Zmetadatar   r   r   Zversion_partspartr   r   r	   r   2   s"    

r   c                 C   sV   t tjdd d}|D ]:}t|j}djf |}|d rH|djf |7 }t| qd S )Nc                 S   s
   | j  S )N)project_namelower)distr   r   r	   <lambda>K       zfreeze.<locals>.<lambda>)keyz{name}=={version}r   z  # git sha {sha})sortedr   Zworking_setr   r   r   r   )r   Zsorted_distsr    infooutputr   r   r	   freezeI   s    
r'   c               
   C   s  t jdd} | jdddttjdd | jdd	d
dd}d|_|j	ddd}|j
td |jddd |j	ddd}|j
td |jddd |jddddd |j	ddd}|j
td |  }z|| W n* tk
r } zt| W 5 d }~X Y nX d S )Nz pbr: Python Build Reasonableness)descriptionz-vz	--versionr   pbr)actionr   Zcommandszvalid commandszadditional helpcmd)titler(   helpdestTr   zprint sha of package)r-   )funcr   zpackage to print sha ofr%   zprint version info for packagezpackage to print info ofz-sz--short
store_truezonly display package version)r*   r-   r'   z-print version info for all installed packages)argparseArgumentParseradd_argumentstrr)   r   ZVersionInfoZadd_subparsersZrequiredZ
add_parserZset_defaultsr   r   r'   
parse_argsr/   r   r   )parserZ
subparsersZcmd_shaZcmd_infoZ
cmd_freezer   er   r   r	   mainT   sL         
 r8   __main__)r1   r   sysr   Zpbr.versionr)   r
   r   r   r   r'   r8   __name__exitr   r   r   r	   <module>   s   "