ctx-tui 2.0.4

Manage repo-scoped work contexts: fresh checkouts wrapped in terminal multiplexer sessions
Documentation
�

"�j�	�\�SSKrSSKrSSKrSSKJr SSKJr SSKJrJ	r	 S\S\
S\4SjrS\S\\
4S	jr
S
\
S\
4SjrS\S
\
SS4SjrSS\S
\
S\
S-S\
4SjjrS\S\
SS4SjrS\S\4SjrS\S\
S-4SjrS\S\
S-SS4SjrS\S\
SS4SjrS\S\
S\
4SjrS\S\
S\
4Sjrg)�N)�Path)�Config)�git�	git_async�cfg�name�returnc�&�URUS3-$)N�.git��	repos_dir�rrs  �C/Users/michael/dev/contexts/ctx/rewrite-it-in-rust/src/ctx/repos.py�	repo_pathr
s���=�=�d�V�4�=�(�(�c��URR5(d/$[SURRS555$)Nc3�V# �UHoRRS5v� M! g7f)rN)r�removesuffix)�.0�ps  r�	<genexpr>�repo_names.<locals>.<genexpr>s"���S�7R�!�&�&�%�%�f�-�-�7R�s�')z*.git)r
�is_dir�sorted�glob�rs r�
repo_namesrs:���=�=���!�!��	��S�s�}�}�7I�7I�'�7R�S�S�Sr�urlc�h�URS5RSS5SRS5$)N�/������r)�rstrip�rsplitr)rs r�
name_from_urlr%s-���:�:�c�?�!�!�#�q�)�"�-�:�:�6�B�Br�path�branchc��# �[SSSUSSSUS9IShv�N [S	S
SXS9IShv�N gN![Ra gf=fN!7f)z�Populate a mirror's LFS store, which bare fetches leave empty.

Clones smudge against the mirror, so a missing object there fails every
checkout. The .gitattributes probe keeps repos without LFS away from the
lfs command, which may not even be installed.
�grepz--quietz
filter=lfsz--z.gitattributesz*/.gitattributes��cwdN�lfs�fetch�origin)r�
subprocess�CalledProcessError)r&r's  r�
_fetch_lfsr1sl�������������	
�		
�		
��E�7�H�f�
?�?�?�		
���(�(�����?�s;�A�3�1�3�A�A
�A�3�A
�A�	A
�
Ac	��V# �U=(d [U5n[X5nUR5(a[SUSU35eURRSSS9 [
SSSU[U55IShv�N [
SS	S
US9IShv�Nn[
SS
SUSU3US9IShv�N [X45IShv�N URU-RSSS9 U$NdNRN:N)![R[R4a [R"USS9 ef=f7f)N�repo 'z' already registered at T)�parents�exist_ok�clonez--barez--single-branch�symbolic-ref�--short�HEADr*�configzremote.origin.fetch�+refs/heads/�:refs/heads/)�
ignore_errors)r%r�exists�FileExistsErrorr
�mkdirr�strr1�asyncio�CancelledErrorr/r0�shutil�rmtree�contexts_dir)rrrr&r's     r�add_reporG/s/����%�=��%�D��S��D��{�{�}�}���t�f�,D�T�F�K�L�L��M�M����t��4�����+<�c�3�t�9�M�M�M� ���F��M�M����+�|�F�8�<�PV�x�-X�^b�
�	
�	
���&�&�&�	�����#�#�D�4�#�@��K�	N�M�	
�	'���"�"�J�$A�$A�B���
�
�d�$�/�
��sf�A D)�#C+�>C#�?C+�C%�C+�,C'�-C+�?C)�C+�D)�#C+�%C+�'C+�)C+�+;D&�&D)c���[X5nUR5(d[SUS35e[U5U:Xa[	US5 [
R"U5 g)Nr3�' is not registered)rr>�FileNotFoundError�default_repo�set_default_reporDrE)rrr&s   r�remove_reporMGsO���S��D��;�;�=�=��&���.A� B�C�C��C��D� ���d�#�
�M�M�$�rc� �URS-$)Nzdefault-reporrs r�_default_repo_filerOPs���=�=�>�)�)rc��[U5R5R5n[	X5R5(aU$S$![a gf=f)zMThe repo new contexts are created in by default, if set and still registered.N)rO�	read_text�striprJrr>rs  rrKrKTsW���!�#�&�0�0�2�8�8�:���S�'�.�.�0�0�4�:�d�:������s�'A�
A�Ac���Uc[U5RSS9 g[X5R5(d[	SUS35e[U5RUS35 g)z,Set the default repo, or clear it with None.NT)�
missing_okr3rI�
)rO�unlinkrr>rJ�
write_textrs  rrLrL]sb���|��3��&�&�$�&�7���S��&�&�(�(��&���.A� B�C�C��s��&�&�$��r�{�3rc��(# �[X5n[X5IShv�Nn[SSU3US9IShv�N(d[SSSSU3US9IShv�N(dg[SSS	US
U3US9IShv�N [X#5IShv�N gNkNWN<NN
7f)zURefresh only the default branch; contexts fetch other branches from origin on demand.Nzfor-each-refzrefs/heads/r*z	ls-remotez--headsr.r-r;r<)r�default_branchrr1)rrr&r's    r�update_reporZgs�����S��D�!�#�,�
,�F���+�f�X�.�D�����k�9�h�+�f�X�@V�\`�a�a�a��
�G�X��f�X�\�&��'R�X\�
]�]�]�
�T�
"�"�"�-��a�]�"�sU�B�B�B�B
�B�B�B�/B�0B�B�B�
B�B�B�Bc	�,�[SSS[X5S9$)N�remotezget-urlr.r*)rrrs  r�repo_urlr]us���x��H�)�C�2F�G�Grc	��H# �[SSS[X5S9IShv�N$N7f)Nr7r8r9r*)rrrs  rrYrYys!����>�9�f�)�C�BV�W�W�W�W�s�"� �")N)rBrDr/�pathlibr�
ctx.configr�ctx.gitrrrAr�listrr%r1rGrMrOrKrLrZr]rY�rr�<module>rds\���
����"�)�6�)��)��)�T�F�T�t�C�y�T�C�s�C�s�C�@�4�@��@��@�.���S���d�
��c��0�V��3��4��*�F�*�t�*�;�f�;��t��;�4�&�4��d�
�4�t�4�#�6�#��#��#�H�&�H��H��H�X�f�X�C�X�C�Xr