o
    Uhc                     @   s  d Z ddlZddlZddlZddlZddlZddlmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddlmZ erbddlmZ ddlmZ dddZdddZ G dd dZ!G dd de!Z"G dd de!Z#G dd de!Z$G dd de!Z%G dd de!Z&G d d! d!e!Z'G d"d# d#e!Z(G d$d% d%e!Z)G d&d' d'e!Z*G d(d) d)e!Z+G d*d+ d+e!Z,G d,d- d-e!Z-G d.d/ d/e!Z.G d0d1 d1e!Z/G d2d3 d3e!Z0G d4d5 d5e!Z1G d6d7 d7e!Z2G d8d9 d9e!Z3G d:d; d;e!Z4G d<d= d=e!Z5G d>d? d?e!Z6G d@dA dAe!Z7G dBdC dCe!Z8G dDdE dEe!Z9G dFdG dGe!Z:G dHdI dIe!Z;G dJdK dKe!Z<G dLdM dMe!Z=G dNdO dOe!Z>G dPdQ dQe!Z?G dRdS dSe!Z@G dTdU dUe!ZAG dVdW dWe!ZBG dXdY dYe!ZCG dZd[ d[e!ZDG d\d] d]e!ZEG d^d_ d_e!ZFG d`da daeFZGG dbdc dce!ZHG ddde dee!ZIG dfdg dgeFZJG dhdi die!ZKG djdk dke!ZLG dldm dme!ZMG dndo doe!ZNG dpdq dqe!ZOG drds dseFZPG dtdu due!ZQG dvdw dwe!ZRG dxdy dye!ZSi dze#d{e"d|eKd}eLd~e.de/de0deRde:de*de5de+de,de%de&de'de(i deSde-de)deQde@deAdeBde3deCdeDde=deGde8de9de6de$de4ePe?e2eJe7e1e>e;e<d	ZTdddZUdddZVeWdkreV  dS dS )zSimple command-line interface to Dulwich>.

This is a very simple command-line wrapper for Dulwich. It is by
no means intended to be a full-blown Git command-line interface but just
a way to test Dulwich.
    N)getopt)TYPE_CHECKINGClassVarOptional)	porcelain   )GitProtocolErrorget_transport_and_path)ApplyDeltaError)Index)parse_commit)Pack
sha_to_hex)Repo)ObjectID)Refreturnc                 C      t d d S )Nr   )sysexit)signalframe r   _/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/dulwich/cli.py
signal_int5      r   c                 C   s   dd l }|  d S )Nr   )pdb	set_trace)r   r   r   r   r   r   signal_quit9   s   r   c                   @   s"   e Zd ZdZdee fddZdS )CommandzA Dulwich subcommand.r   c                 C   s
   t | j)zRun the command.)NotImplementedErrorrunselfargsr   r   r   r!   B   s   
zCommand.runN)__name__
__module____qualname____doc__r   intr!   r   r   r   r   r   ?   s    r   c                   @      e Zd ZdddZdS )cmd_archiver   Nc                 C   s   t  }|jdtdd |jdtdd ||}|jr3t|j\}}|j||jt	j
jt	jjd d S tjd|jt	j
jt	jd	 d S )
Nz--remotez+Retrieve archive from specified remote repo)typehelp
committish?r,   nargs)write_error.)	outstream	errstream)argparseArgumentParseradd_argumentstr
parse_argsremoter	   archiver.   r   stdoutwritestderrr   buffer)r#   r$   parserclientpathr   r   r   r!   H   s&   


zcmd_archive.runr   Nr%   r&   r'   r!   r   r   r   r   r+   G       r+   c                   @   r*   )cmd_addr   Nc                 C   $   t  }||}tjd|d d S Nr3   )paths)r6   r7   r:   r   addr#   argvrA   r$   r   r   r   r!   `      
zcmd_add.runrD   rE   r   r   r   r   rG   _   rF   rG   c                   @   r*   )cmd_rmr   Nc                 C   rH   rI   )r6   r7   r:   r   rmrL   r   r   r   r!   h   rN   z
cmd_rm.runrD   rE   r   r   r   r   rO   g   rF   rO   c                   @   r*   )cmd_fetch_packr   Nc                    s   t  }|jddd |jddtd |jddtd || t j\}}td	 jr3j	j
}n	 ddtttf d
tt dtt f fdd}||| d S )N--all
store_trueactionlocationr/   )r1   r,   refs*r3   depthr   c                    s   fdd j D S )Nc                    s    g | ]}| j vr|d qS )zutf-8)object_storeencode).0y)rr   r   
<listcomp>   s     z?cmd_fetch_pack.run.<locals>.determine_wants.<locals>.<listcomp>)rW   )rW   rY   r$   r^   r   r   determine_wants|   s   z+cmd_fetch_pack.run.<locals>.determine_wantsN)r6   r7   r8   r9   r:   r	   rV   r   allrZ   determine_wants_alldictr   r   r   r)   listfetch)r#   rM   rA   rB   rC   ra   r   r`   r   r!   p   s$   


zcmd_fetch_pack.runrD   rE   r   r   r   r   rQ   o   rF   rQ   c                   @   r*   )	cmd_fetchr   Nc           	      C   s|   t |dg \}}t| t|d\}}td}dtdd fdd}|j|||d}td	 | D ]	}td
j	|  q2d S )N r   r3   msgr   c                 S   s   t jj|  d S rb   )r   r=   r@   r>   )rj   r   r   r   progress   s   zcmd_fetch.run.<locals>.progress)rk   zRemote refs:z{} -> {})
r   re   r	   popr   bytesrg   printitemsformat)	r#   r$   optsrB   rC   r^   rk   rW   itemr   r   r   r!      s   zcmd_fetch.runrD   rE   r   r   r   r   rh      rF   rh   c                   @   r*   )cmd_for_each_refr   Nc                 C   sd   t  }|jdtdd ||}td|jD ]\}}}t|	  d|	  d|	   qd S )Npatternr/   r0   r3    	)
r6   r7   r8   r9   r:   r   for_each_refrt   rn   decode)r#   r$   rA   shaobject_typerefr   r   r   r!      s   
&zcmd_for_each_ref.runrD   rE   r   r   r   r   rs      rF   rs   c                   @   r*   )cmd_fsckr   Nc                 C   sB   t |dg \}}t| tdD ]\}}t| d|  qd S )Nri   r3   : )r   re   r   fsckrn   )r#   r$   rq   objrj   r   r   r   r!      s
   zcmd_fsck.runrD   rE   r   r   r   r   r|      rF   r|   c                   @   r*   )cmd_logr   Nc                 C   sX   t  }|jddddd |jddddd ||\}}tjd	||j|jtj	d
 d S )Nz	--reversereverserS   z*Reverse order in which entries are printeddestrU   r-   z--name-statusname_statusz'Print name/status for each changed filer3   )rJ   r   r   r4   )
optparseOptionParser
add_optionr:   r   logr   r   r   r=   r#   r$   rA   optionsr   r   r   r!      s*   
zcmd_log.runrD   rE   r   r   r   r   r      rF   r   c                   @   r*   )cmd_diffr   Nc                 C   sd   t |dg \}}td}|g krd}n|d }t||}||jd  }tj||j|jtjj	d d S )Nri   r3   s   HEADr   )r4   )
r   r   r   parentsr   	diff_treetreer   r=   r@   )r#   r$   rq   r^   	commit_idcommitparent_commitr   r   r   r!      s   

zcmd_diff.runrD   rE   r   r   r   r   r      rF   r   c                   @   r*   )cmd_dump_packr   Nc           	      C   s  t |dg \}}|g krtd td tj|d \}}t|}td|   tdt	|
   |  tdt|  |D ]D}ztd||   W qF tyo } ztd| d	|  W Y d }~qFd }~w ty } ztd| d
| W Y d }~qFd }~ww d S )Nri   z!Usage: dulwich dump-pack FILENAMEr   r   zObject names checksum: z
Checksum: zLength: rv   z: Unable to resolve base z: Unable to apply delta: )r   rn   r   r   osrC   splitextr   namer   get_stored_checksumchecklenKeyErrorr
   )	r#   r$   rq   basename_xr   ker   r   r   r!      s*   
  zcmd_dump_pack.runrD   rE   r   r   r   r   r      rF   r   c                   @   r*   )cmd_dump_indexr   Nc                 C   sV   t |dg \}}|g krtd td |d }t|}|D ]	}t|||  qd S )Nri   z"Usage: dulwich dump-index FILENAMEr   r   )r   rn   r   r   r   )r#   r$   rq   filenameidxor   r   r   r!      s   
zcmd_dump_index.runrD   rE   r   r   r   r   r      rF   r   c                   @   r*   )cmd_initr   Nc                 C   sJ   t |ddg\}}t|}|g krt }n|d }tj|d|v d d S )Nri   barer   --bare)r   )r   re   r   getcwdr   init)r#   r$   rq   kwoptsrC   r   r   r   r!      s   
zcmd_init.runrD   rE   r   r   r   r   r      rF   r   c                   @   r*   )	cmd_cloner   Nc              
   C   s$  t  }|jddddd |jddtdd	 |jd
ddtdd	 |jddtddd |jddtdd	 |jddtdd	 ||\}}|g krPtd td |	d}t
|dkra|	d}nd }ztj|||j|j|j|j|j|jd W d S  ty } zt|  W Y d }~d S d }~ww )Nr   r   z$Whether to create a bare repository.rS   )r   r-   rU   z--depthrY   zDepth at which to fetch)r   r,   r-   z-bz--branchbranchz<Check out branch instead of branch pointed to by remote HEADz	--refspecrefspeczReferences to fetchappend)r   r,   r-   rU   --filterfilter_specz git-rev-list-style object filter
--protocolprotocolzGit protocol version to usez%usage: dulwich clone host:path [PATH]r   r   )r   rY   r   r   r   protocol_version)r   r   r   r)   r9   r:   rn   r   r   rl   r   r   cloner   rY   r   r   r   r   r   )r#   r$   rA   r   sourcetargetr   r   r   r   r!     sp   


zcmd_clone.runrD   rE   r   r   r   r   r     rF   r   c                   @   r*   )
cmd_commitr   Nc                 C   s0   t |ddg\}}t|}tjd|d d d S )Nri   messager3   	--message)r   )r   re   r   r   r#   r$   rq   r   r   r   r   r!   A  s   zcmd_commit.runrD   rE   r   r   r   r   r   @  rF   r   c                   @   r*   )cmd_commit_treer   Nc                 C   sP   t |ddg\}}|g krtd td t|}tjd|d |d d d S )	Nri   r   zusage: dulwich commit-tree treer   r3   r   r   )r   r   )r   rn   r   r   re   r   commit_treer   r   r   r   r!   H  s   
zcmd_commit_tree.runrD   rE   r   r   r   r   r   G  rF   r   c                   @   r*   )cmd_update_server_infor   Nc                 C   r   Nr3   )r   update_server_infor"   r   r   r   r!   R  r   zcmd_update_server_info.runrD   rE   r   r   r   r   r   Q  rF   r   c                   @   r*   )cmd_symbolic_refr   Nc                 C   sL   t |dddg\}}|std td |d}tjd|d|v d	 d S )
Nri   zref-nameforcez.Usage: dulwich symbolic-ref REF_NAME [--force]r   r   r3   --force)ref_namer   )r   rn   r   r   rl   r   symbolic_ref)r#   r$   rq   r   r   r   r   r!   W  s   

zcmd_symbolic_ref.runrD   rE   r   r   r   r   r   V  rF   r   c                   @   r*   )cmd_pack_refsr   Nc                 C   sB   t  }|jddd |jddd ||}tjd|jd d S )NrR   rS   rT   z
--no-pruner3   )rc   )r6   r7   r8   r:   r   	pack_refsrc   rL   r   r   r   r!   b  s
   
zcmd_pack_refs.runrD   rE   r   r   r   r   r   a  rF   r   c                   @   r*   )cmd_showr   Nc                 C   s8   t  }|jdtdd ||}td|jpd  d S )N	objectishrX   r0   r3   )r6   r7   r8   r9   r:   r   showr   rL   r   r   r   r!   n  s   
zcmd_show.runrD   rE   r   r   r   r   r   m  rF   r   c                   @   r*   )cmd_diff_treer   Nc                 C   sH   t |dg \}}t|dk rtd td td|d |d  d S )Nri      z*Usage: dulwich diff-tree OLD-TREE NEW-TREEr   r3   r   )r   r   rn   r   r   r   r   r#   r$   rq   r   r   r   r!   v  s
   
zcmd_diff_tree.runrD   rE   r   r   r   r   r   u  rF   r   c                   @   r*   )cmd_rev_listr   Nc                 C   s>   t |dg \}}t|dk rtd td td| d S )Nri   r   z#Usage: dulwich rev-list COMMITID...r3   )r   r   rn   r   r   r   rev_listr   r   r   r   r!     s
   
zcmd_rev_list.runrD   rE   r   r   r   r   r   ~  rF   r   c                   @   r*   )cmd_tagr   Nc                 C   sX   t  }|jddddd |jddddd ||\}}tjd	|d
 |j|jd d S )N-az--annotatedzCreate an annotated tag.rS   )r-   rU   z-sz--signzSign the annotated tag.r3   r   )	annotatedsign)r   r   r   r:   r   
tag_creater   r   r   r   r   r   r!     s   
zcmd_tag.runrD   rE   r   r   r   r   r     rF   r   c                   @   r*   )
cmd_repackr   Nc                 C   s&   t |dg \}}t| td d S )Nri   r3   )r   re   r   repackr   r   r   r   r!     s   zcmd_repack.runrD   rE   r   r   r   r   r     rF   r   c                   @   r*   )	cmd_resetr   Nc                 C   sZ   t |dg d\}}t|}d}d|v rd}nd|v rd}nd|v r$d}tjd	|d
 d S )Nri   )hardsoftmixedz--hardr   z--softr   z--mixedr   r3   )mode)r   re   r   reset)r#   r$   rq   r   r   r   r   r   r!     s   zcmd_reset.runrD   rE   r   r   r   r   r     rF   r   c                   @   r*   )
cmd_daemonr   Nc                 C   s   ddl m} ddlm} t }|jddddd	d
 |jdddt|dd ||\}}|	  t
|dkr;|d }nd}tj||j|jd d S )Nr   	log_utilsr   )TCP_GIT_PORT-l--listen_addresslisten_address	localhostBinding IP address.r   defaultr-   -p--portportBinding TCP port.r   r,   r   r-   r3   addressr   )dulwichr   r   r   r   r   r   r)   r:   default_logging_configr   r   daemonr   r   )r#   r$   r   r   rA   r   gitdirr   r   r   r!     s0   
zcmd_daemon.runrD   rE   r   r   r   r   r     rF   r   c                   @   r*   )cmd_web_daemonr   Nc                 C   s   ddl m} t }|jdddddd |jd	d
dtddd ||\}}|  t|dkr5|d }nd}t	j
||j|jd d S )Nr   r   r   r   r   ri   r   r   r   r   r   i@  r   r   r   r3   r   )r   r   r   r   r   r)   r:   r   r   r   
web_daemonr   r   )r#   r$   r   rA   r   r   r   r   r   r!     s.   
zcmd_web_daemon.runrD   rE   r   r   r   r   r     rF   r   c                   @   r*   )cmd_write_treer   Nc                 C   s2   t  }||\}}tjdtd d S )Nz{}
r3   )	r   r   r:   r   r=   r>   rp   r   
write_treer   r   r   r   r!     s   zcmd_write_tree.runrD   rE   r   r   r   r   r     rF   r   c                   @   r*   )cmd_receive_packr   Nc                 C   >   t  }||\}}t|dkr|d }nd}t| d S Nr   r   r3   )r   r   r:   r   r   receive_packr#   r$   rA   r   r   r   r   r   r!        
zcmd_receive_pack.runrD   rE   r   r   r   r   r     rF   r   c                   @   r*   )cmd_upload_packr   Nc                 C   r   r   )r   r   r:   r   r   upload_packr   r   r   r   r!     r   zcmd_upload_pack.runrD   rE   r   r   r   r   r      rF   r   c                   @   r*   )
cmd_statusr   Nc           	      C   s:  t  }||\}}t|dkr|d }nd}t|}tdd |j D rVt	j
d |j D ]\}}|D ]}t	j
d| d|t	  d	 q:q4t	j
d	 |jrzt	j
d
 |jD ]}t	j
d|t	  d	 qbt	j
d	 |jrt	j
d |jD ]}t	j
d| d	 qt	j
d	 d S d S )Nr   r   r3   c                 s   s    | ]\}}|V  qd S rb   r   )r\   kindnamesr   r   r   	<genexpr>  s    z!cmd_status.run.<locals>.<genexpr>zChanges to be committed:

rv   r}   
z Changes not staged for commit:

zUntracked files:

)r   r   r:   r   r   statusanystagedro   r   r=   r>   rx   getfilesystemencodingunstaged	untracked)	r#   r$   rA   r   r   r  r   r   r   r   r   r   r!     s4   


 
zcmd_status.runrD   rE   r   r   r   r   r     rF   r   c                   @   r*   )cmd_ls_remoter   Nc                 C   sj   t |dg \}}t|dk rtd td t|d }t|D ]}tj	| d||  d q"d S )Nri   r   zUsage: dulwich ls-remote URLr   rv   r   )
r   r   rn   r   r   r   	ls_remotesortedr=   r>   )r#   r$   rq   rW   r{   r   r   r   r!   )  s   
zcmd_ls_remote.runrD   rE   r   r   r   r   r  (  rF   r  c                   @   r*   )cmd_ls_treer   Nc                 C   s|   t  }|jddddd |jdddd ||\}}z|d}W n ty.   d }Y nw tjd	|tj	|j
|jd
 d S )Nz-rz--recursiverS   zRecursively list tree contents.rU   r-   z--name-onlyzOnly display name.r   r3   )r4   	recursive	name_only)r   r   r   r:   rl   
IndexErrorr   ls_treer   r=   r  r  )r#   r$   rA   r   treeishr   r   r   r!   4  s*   
zcmd_ls_tree.runrD   rE   r   r   r   r   r
  3  rF   r
  c                   @   r*   )cmd_pack_objectsr   Nc                 C   s   d}d}t |dg d\}}t|}t|dk r'd| vr'td td dd	 tj D }d
| v r9d}d| v rAd}d| v rTt	tj
dtj
}d }g }	n|d }
t|
d d}t|
d d}||g}	tjd|||||d |	D ]}|  qwd S )NFTri   )r=   deltifyzno-reuse-deltasr   z--stdoutz$Usage: dulwich pack-objects basenamec                 S   s   g | ]}|  qS r   )strip)r\   liner   r   r   r_   T  s    z(cmd_pack_objects.run.<locals>.<listcomp>z	--deltifyz--no-reuse-deltasr@   r   z.packwbz.idxr3   )r  reuse_deltas)r   re   r   keysrn   r   r   stdin	readlinesgetattrr=   openr   pack_objectsclose)r#   r$   r  r  rq   r   
object_idspackfidxfr  r   fr   r   r   r!   L  s4   

zcmd_pack_objects.runrD   rE   r   r   r   r   r  K  rF   r  c                   @   r*   )cmd_pullr   Nc                 C   s|   t  }|jdtd |jdtdd |jdtdd |jdtdd ||}tjd	|jp/d |j	p3d |j
|jp9d d
 d S )Nfrom_locationr,   r   rX   r0   r   r   r   r3   )r   r   )r6   r7   r8   r9   r)   r:   r   pullr#  r   filterr   )r#   r$   rA   r   r   r   r!   j  s   

zcmd_pull.runrD   rE   r   r   r   r   r"  i  rF   r"  c                   @   s   e Zd Zdee fddZdS )cmd_pushr   c                 C   s   t  }|jddddd |jdtd |jdtd	d
 ||}ztjd|j|jp+d |j	d W d S  tj
yC   tjd Y dS w )Nz-fr   rS   Forcer  to_locationr$  r   rX   r0   r3   )r   z.Diverged branches; specify --force to overrider   )r6   r7   r8   r9   r:   r   pushr)  r   r   DivergedBranchesr   r?   r>   rL   r   r   r   r!   {  s   
zcmd_push.runN)r%   r&   r'   r   r)   r!   r   r   r   r   r'  z  s    r'  c                   @   r*   )cmd_remote_addr   Nc                 C   s0   t  }||\}}td|d |d  d S )Nr3   r   r   )r   r   r:   r   
remote_addr   r   r   r   r!     s   zcmd_remote_add.runrD   rE   r   r   r   r   r,    rF   r,  c                   @   sJ   e Zd ZU i Zeeeee f  e	d< dZ
eeee   e	d< dd ZdS )SuperCommandsubcommandsNdefault_commandc                 C   sz   |s| j stdd| j  dS |d }z| j| }W n ty2   td|d   Y dS w | |dd  S )NzSupported subcommands: {}z, Fr   No such subcommand: r   )r0  rn   rp   joinr/  r  r   r!   )r#   r$   cmdcmd_klsr   r   r   r!     s   
zSuperCommand.run)r%   r&   r'   r/  r   re   r9   r,   r   __annotations__r0  r   r!   r   r   r   r   r.    s   
 r.  c                   @   s.   e Zd ZU deiZeeeee	 f  e
d< dS )
cmd_remoterK   r/  N)r%   r&   r'   r,  r/  r   re   r9   r,   r   r5  r   r   r   r   r6    s   
  r6  c                   @   r*   )cmd_submodule_listr   Nc                 C   sD   t  }|| tdD ]\}}tjd| d| d qd S )Nr3   ru   r   )r6   r7   r:   r   submodule_listr   r=   r>   )r#   rM   rA   rC   ry   r   r   r   r!     s
   
zcmd_submodule_list.runrD   rE   r   r   r   r   r7    rF   r7  c                   @   r*   )cmd_submodule_initr   Nc                 C   s    t  }|| td d S r   )r6   r7   r:   r   submodule_init)r#   rM   rA   r   r   r   r!     s   
zcmd_submodule_init.runrD   rE   r   r   r   r   r9    rF   r9  c                   @   s2   e Zd ZU deiZeeeee	 f  e
d< eZdS )cmd_submoduler   r/  N)r%   r&   r'   r9  r/  r   re   r9   r,   r   r5  r0  r   r   r   r   r;    s   
 r;  c                   @   s   e Zd Zdd ZdS )cmd_check_ignorec                 C   s<   t  }||\}}d}td|D ]}t| d}q|S )Nr   r3   r   )r   r   r:   r   check_ignorern   )r#   r$   rA   r   retrC   r   r   r   r!     s   zcmd_check_ignore.runNrE   r   r   r   r   r<    s    r<  c                   @   r*   )cmd_check_mailmapr   Nc                 C   s8   t  }||\}}|D ]}td|}t| qd S r   )r   r   r:   r   check_mailmaprn   )r#   r$   rA   r   argcanonical_identityr   r   r   r!     s   
zcmd_check_mailmap.runrD   rE   r   r   r   r   r?    rF   r?  c                   @   r*   )cmd_stash_listr   Nc                 C   sF   t  }||\}}tdD ]\}}td||jd qd S )Nr3   zstash@{{{}}}: {}r   )	r   r   r:   r   
stash_listrn   rp   r   rstrip)r#   r$   rA   r   ientryr   r   r   r!     s
   zcmd_stash_list.runrD   rE   r   r   r   r   rC    rF   rC  c                   @   r*   )cmd_stash_pushr   Nc                 C   ,   t  }||\}}td td d S )Nr3   z'Saved working directory and index state)r   r   r:   r   
stash_pushrn   r   r   r   r   r!        
zcmd_stash_push.runrD   rE   r   r   r   r   rH    rF   rH  c                   @   r*   )cmd_stash_popr   Nc                 C   rI  )Nr3   z*Restored working directory and index state)r   r   r:   r   	stash_poprn   r   r   r   r   r!     rK  zcmd_stash_pop.runrD   rE   r   r   r   r   rL    rF   rL  c                   @   s2   e Zd ZU eeedZeee	e
e f  ed< dS )	cmd_stash)rf   rl   r*  r/  N)r%   r&   r'   rC  rL  rH  r/  r   re   r9   r,   r   r5  r   r   r   r   rN    s
   
 "rN  c                   @   r*   )cmd_ls_filesr   Nc                 C   s2   t  }||\}}tdD ]}t| qd S r   )r   r   r:   r   ls_filesrn   )r#   r$   rA   r   r   r   r   r   r!     s
   
zcmd_ls_files.runrD   rE   r   r   r   r   rO    rF   rO  c                   @   r*   )cmd_describer   Nc                 C   s(   t  }||\}}ttd d S r   )r   r   r:   rn   r   describer   r   r   r   r!      s   zcmd_describe.runrD   rE   r   r   r   r   rQ    rF   rQ  c                   @   r*   )cmd_helpr   Nc                 C   sd   t  }|jdddddd ||\}}|jr,td ttD ]	}td|  q d S td	 d S )
Nr   rR   rc   rS   zList all commands.r   zAvailable commands:z  zThe dulwich command line tool is currently a very basic frontend for the
Dulwich python module. For full functionality, please see the API reference.

For a list of supported commands, see 'dulwich help -a'.
)r   r   r   r:   rc   rn   r	  commands)r#   r$   rA   r   r3  r   r   r   r!     s"   zcmd_help.runrD   rE   r   r   r   r   rS    rF   rS  rK   r<   zcheck-ignorezcheck-mailmapr   r   zcommit-treerR  r   diffz	diff-treez	dump-packz
dump-indexz
fetch-packrg   zfor-each-refr~   r-   r   r   zls-filesz	ls-remotezls-treezpack-objectsz	pack-refsr%  r*  zreceive-packr;   r   r   zrev-listrP   r   )	stashr  zsymbolic-ref	submoduletagzupdate-server-infozupload-packz
web-daemonz
write-treec                 C   s   | d u rt jdd  } t| dk rtddt  dS | d }zt| }W n ty:   td|  Y dS w | 	| dd  S )Nr   z Usage: dulwich <{}> [OPTIONS...]|r   r1  )
r   rM   r   rn   rp   r2  rT  r  r   r!   )rM   r3  r4  r   r   r   mainP  s   rZ  c                   C   sB   dt jv rttdd rttjt ttjt t	t
  d S )NDULWICH_PDBSIGQUIT)r   environr  r   r\  r   SIGINTr   r   r   rZ  r   r   r   r   _mainb  s   r_  __main__rD   rb   )Xr(   r6   r   r   r   r   r   typingr   r   r   r   r   rB   r   r	   errorsr
   indexr   
objectspecr   packr   r   repor   objectsr   rW   r   r   r   r   r+   rG   rO   rQ   rh   rs   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r"  r'  r,  r.  r6  r7  r9  r;  r<  r?  rC  rH  rL  rN  rO  rQ  rS  rT  rZ  r_  r%   r   r   r   r   <module>   s6  

	>
		!		
 !"#
/


