
    яi^                        d Z ddlZddlmZ ddlmZmZmZmZ dedee	ef         fdZ
dee	ef         d	ee	         de	fd
Zdee	ef         dedee	ege	f         de	fdZdedee	ef         de	de	fdZdedee	ef         defdZdS )z6Skill upgrade flow extracted from the main CLI module.    N)Path)AnyCallableDictListvaluereturnc                 4    t          | t                    r| ni S )N)
isinstancedict)r   s    !/root/.skillhub/skills_upgrade.py_as_dictr   	   s    ud++3553    objkeysc                     |D ]V}|                      |          }t          |t                    r*|                                r|                                c S WdS )N )getr   strstrip)r   r   keyr   s       r   _first_non_empty_stringr      s[     ! !eS!! 	!ekkmm 	!;;==   2r   config	skill_dirresolve_uri_with_basec                     t          | g d          }|r |||          S dD ]F}t          |                     |                    }t          |g d          }|r |||          c S GdS )N)
update_url	updateUrlupgrade_url
upgradeUrlmanifest_urlmanifestUrl)updateupgrade
autoupdate)urlurimanifestr!   r   )r   r   r   )r   r   r   directcontainer_keynested	url_values          r   _extract_update_urlr-      s    $___ F  8$$VY777< ? ?&**]3344+F4^4^4^__	 	?((I>>>>>	?2r   	lock_metaskill_meta_namec                 6   t          |dg          }|r|S | |z  }|                                rj	 t          j        |                    d                    }t          |t                    rt          |dg          }|r|S n# t          j        $ r Y dS w xY wdS )Nversionutf-8encodingr   )r   existsjsonloads	read_textr   r   JSONDecodeError)r   r.   r/   lock_version	meta_pathrawmeta_versions          r   _read_installed_skill_versionr>   %   s    
 +9ykBBL O+I 	*Y00'0BBCCC#t$$ (6sYKHH (''# 	 	 	22	2s   AB BBargsdepsc                 	   |d         }|d         }|d         }|d         }|d         }|d         }|d         }|d         }	|d	         }
t          | j                                                                                  } ||          }|                    d
i           }t          |t                    si }| j        r	| j        g}n8t          |	                                          }|st          d|dz             d}d}d}d}|D ]@}|dz  }||z  }|                                st          d| d|            |dz  }<|                    |          }t          |t                    r|ni }||	z  }|                                st          d| d|	 d           |dz  }	 t          j        |                    d                    }n9# t          j        $ r'}t          d| d|	 d|            |dz  }Y d }~d }~ww xY wt          |t                    st          d| d|	 d           |dz  }4t#          |||          }|st          d| d|	            |dz  }c	 |                    d          } ||| j                  } ||          \  }}}|st          d| d|            |dz  }|st          d| d|            |dz  }t'          |||
          }  |||           s!t          d| d| pd d|            |dz  } |||          }| j        rt          d| d | pd d| d!|            G ||||d"|#           ||	z  }!|!                                s|!                    |d           t          |          }"||"d$<   ||"d%<   ||"d&<   |"                    d'          s||"d'<   |"                    d(          sd)|"d(<   |"||<   |dz  }t          d| d*| pd d+|            # t          $ r	 |dz  }Y t,          $ r%}t          d| d|            |dz  }Y d }~:d }~ww xY w||d
<    |||           t          d,| d-| d.| d/| d0| 
           |dk    rd1ndS )2Nload_lockfilesave_lockfileread_json_from_uriextract_update_manifest_infor   version_is_newerinstall_zip_to_targetskill_config_namer/   skillsz!No installed skills in lockfile: z.skills_store_lock.jsonr      [z#] skip: skill directory not found: z] skip: z
 not foundr2   r3   z] fail: invalid z: z] fail: z must be a JSON objectz] skip: missing update URL in )timeoutz)] fail: update manifest missing version: z-] fail: update manifest missing package URL: z] up-to-date: current=z	<unknown>z latest=z] upgrade available: current=z	 package=T)slugzip_uri
target_dirforceexpected_sha256zip_urlr1   r   namesourceunknownz] upgraded: z -> zupgrade done: checked=z
 upgraded=z	 skipped=z failed=z dir=   )r   dir
expanduserresolver   r   r   rM   sortedr   
SystemExitr5   printr6   r7   r8   r9   r-   rL   r>   
check_only
write_text	Exception)#r?   r@   rB   rC   rD   rE   r   rF   rG   rH   r/   install_rootlockrI   targetscheckedupgradedskippedfailedrM   rO   r.   lock_meta_dictconfig_path
raw_configexcr   preserved_config_textr(   latest_versionpackage_uriexpected_shacurrent_versionrestored_config_pathupdated_metas#                                      r   cmd_upgraderr   ;   s   )M)M23#'(F#G  !89./ !8901,-O>>,,..6688L=&&DXXh##Ffd## y m9+'' 	mkPiAikklllGHGF W W1!D(
  "" 	KdKKzKKLLLqLGJJt$$	&0D&A&AIr #44!!## 	AdAA$5AAABBBqLG	K$9$97$9$K$KLLJJ# 	 	 	FdFF,=FFFFGGGaKFHHHH	 *d++ 	MdMM$5MMMNNNaKF(ZAVWW
 	MdMM:KMMNNNqLG6	$/$9$97$9$K$K!))*dlKKKH8T8TU]8^8^5NK! U$UUUUVVV! Y$YYZYYZZZ!;JXghhO##NODD n$nno6Tnn^lnnooo1//ZHHK E E E?;Yk E E,E E7BE E   !!#% ,    $.0A#A '..00 Y$//0EPW/XXX//L&1L#&4L#)3L&##F++ ,'+V$##H-- 3)2X&'F4LMH\d\\(F;\\N\\]]]] 	 	 	aKFH 	 	 	)d))C))***aKFFFFFF	 DNM,%%%		@ 	@ 	@H 	@ 	@	@ 	@$*	@ 	@1=	@ 	@   

11!sP   +(GH
#HH
/AP
P
"<P
 0P
B6P

Q
	Q
%QQ
)__doc__r6   pathlibr   typingr   r   r   r   r   r   r   r-   r>   intrr    r   r   <module>rx      sy   < <        , , , , , , , , , , , ,4C 4DcN 4 4 4 4c3h tCy S    S#X 4 X`begkalnqaqXr wz     CH~  		   ,|"c |"c3h |"C |" |" |" |" |" |"r   