#!/usr/bin/env zsh eval "$_z4h_opt" -z4h-check-core-params || return if (( ARGC )); then print -Pru2 -- '%F{3}z4h%f: unexpected %F{1}update%f argument' return '_z4h_err()' fi if (( _z4h_dangerous_root )); then print -Pru2 -- "%F{3}z4h%f: refusing to %Bupdate%b as %F{1}root%f" return 1 fi local old=$Z4H.old.$$ local new=$Z4H.new.$$ { zf_rm -rf -- $old $new || return zf_mkdir -p -- $new || return print -n >$new/.updating || return Z4H_UPDATING=$Z4H Z4H=$new /dev/null $_z4h_exe -ic ' (( $? )) && "exit" "1" "builtin" "emulate" "zsh" "-o" "no_aliases" [[ $Z4H == '${(q)new}' ]] || exit 0 print -n >$Z4H/tmp/update-successful' || return if [[ ! -e $new/tmp/update-successful ]]; then local home=~ local zdotdir=${${${(q)ZDOTDIR}/#${(q)home}/'~'}//\%/%%} local z4h=${${${(q)Z4H}/#${(q)home}/'~'}//\%/%%} print -Pru2 -- '%F{3}z4h%f: %B$Z4H%b %F{1}does not propagate%f through %U.zshrc%u' print -Pru2 -- '' print -Pru2 -- 'Change %U'$zdotdir'/.zshrc%u to keep %BZ4H%b intact if already set.' print -Pru2 -- '' print -Pru2 -- 'For example:' print -Pru2 -- '' print -Pru2 -- ' %F{2}:%f %F{3}"${Z4H:=${XDG_CACHE_HOME:-$HOME/.cache}/zsh4humans}"%f' print -Pru2 -- '' print -Pru2 -- 'Note: The leading colon (%F{2}:%f) is necessary.' return 1 fi zf_rm -- $new/tmp/update-successful || return zf_rm -- $new/.updating || return -z4h-mv $Z4H $old 2>/dev/null || zf_rm -rf -- $Z4H || return if [[ -e $Z4H ]]; then local home=~ local z4h=${${${(q)Z4H}/#${(q)home}/'~'}//\%/%%} print -Pru2 -- '%F{3}z4h%f: %F{1}cannot delete %U'$z4h'%u%f' print -Pru2 -- '' print -Pru2 -- 'This might help:' print -Pru2 -- '' print -Pru2 -- ' %F{2}%Ucommand%u %Usudo%u rm%f -rf -- %U'$z4h'%u && %U%F{2}exec%u zsh%f' print -Pru2 -- '' print -Pru2 -- '%F{3}z4h%f: attempting to recover' if [[ ! -e $Z4H/stickycache ]]; then command cp -r -- $new/stickycache $Z4H/stickycache || true fi if [[ -o zle ]]; then exec -- $_z4h_exe -i || return else exec -- $_z4h_exe -i --no-zle || return fi fi -z4h-mv $new $Z4H || return } always { if (( $? )); then -z4h-error-command update fi zf_rm -rf -- $old $new || return } print -Pru2 -- "%F{3}z4h%f: %Bupdate successful%b" print -Pru2 -- "%F{3}z4h%f: restarting %F{2}zsh%f" if [[ -o zle ]]; then exec -- $_z4h_exe -i || return else exec -- $_z4h_exe -i --no-zle || return fi