zdharma-continuum.zinit-ann.../za-bgn-atdelete-handler

83 lines
3.1 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Copyright (c) 2019-2020 Sebastian Gniazdowski
# License MIT
emulate -RL zsh
setopt extendedglob warncreateglobal typesetsilent noshortloops
[[ "$1" = plugin ]] && \
local type="$1" user="$2" plugin="$3" id_as="$4" dir="$5" hook="$6" || \
local type="$1" url="$2" id_as="$3" dir="$4" hook="$5"
local nl=$'\n'
#
# sbin'' ice creation of shims (the name borrowed from rbenv)
#
if (( ${+ICE[sbin]} )) {
local -a sbins srcdst
sbins=( ${(s.;.)ICE[sbin]} )
local sbin
integer set_gem_home set_node_path set_virtualenv
(
builtin cd -q "$dir"
for sbin ( $sbins "" ) {
if [[ -z $sbin && ${#sbins} -eq 0 ]]; then
if [[ -f $dir/${id_as:t} ]]; then
sbin="$dir/${id_as:t}"
elif [[ -n $plugin && -f $dir/$plugin ]]; then
sbin="$dir/$plugin"
elif [[ -n $url && -f $dir/${url:t} ]]; then
sbin="$dir/${url:t}"
else
local -a files
files=( $dir/*(*Nnon:t) )
if (( ${#files} )); then
sbin="${files[1]}"
else
print -P -- "%F{38}bin-gem-node annex: %F{160}The automatic-empty sbin ice didn't find any executable files%f"
break
fi
fi
elif [[ -z $sbin ]]; then
continue
fi
srcdst=( ${(@s.->.)sbin} )
srcdst=( "${srcdst[@]//((#s)[[:space:]]##|[[:space:]]##(#e))/}" )
[[ ${srcdst[1]} = [gnpcNEO]#g[gnpcNEO]#:* ]] && set_gem_home=1 || set_gem_home=0
[[ ${srcdst[1]} = [gnpcNEO]#n[gnpcNEO]#:* ]] && set_node_path=1 || set_node_path=0
[[ ${srcdst[1]} = [gnpcNEO]#p[gnpcNEO]#:* ]] && set_virtualenv=1 || set_virtualenv=0
srcdst[1]=${srcdst[1]#[a-zA-Z]#:}
# Substitute the standard keywords and param''-s
@zinit-substitute 'srcdst[1]' 'srcdst[2]'
local -a fnames
local fname
eval "fnames=( ${srcdst[1]}(Nnon-.) )"
for fname ( $fnames ) {
srcdst[1]="$fname"
local target_binary="${${(M)srcdst[1]:#/*}:-$dir/${srcdst[1]}}" \
fnam="${srcdst[2]:-${srcdst[1]:t}}"
local file="$ZPFX/bin/$fnam"
if [[ -f $file ]]; then
command rm -f "$file"
if [[ -f $file ]]; then
print -P -- "%F{38}bin-gem-node annex: %F{160}Couldn't remove the %F{220}$fnam%F{160} shim from \$ZPFX/bin (no write access to \$ZPFX/bin?)%f"
else
print -P -- "%F{38}bin-gem-node annex: %F{154}Correctly removed the %F{220}$fnam%F{154} shim from \$ZPFX/bin%f" || \
fi
else
print -P -- "%F{38}bin-gem-node annex: %F{160}The %F{220}$fnam%F{160} shim didn't exist in \$ZPFX/bin (or isn't a regular file)%f"
fi
}
}
)
}
# vim:ft=zsh:sw=4:sts=4:et