mirror of
https://github.com/zdharma-continuum/zinit-annex-bin-gem-node.git
synced 2026-09-10 07:26:18 -04:00
83 lines
3.1 KiB
Bash
83 lines
3.1 KiB
Bash
# 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
|