1
0
Fork 0
mirror of https://github.com/zdharma-continuum/zinit-annex-patch-dl.git synced 2025-01-30 17:08:23 +01:00
zinit-annex-patch-dl/za-patch-dl-handler
Vladislav Doster 71218022d9 fix: log message convention
Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2023-12-04 04:35:48 -06:00

115 lines
3.5 KiB
Bash

emulate -RL zsh
setopt extendedglob noshortloops typesetsilent warncreateglobal
if [[ "$1" = plugin ]]; then
local type="$1" user="$2" plugin="$3" id_as="$4" dir="$5"
else
local type="$1" url="$2" id_as="$3" dir="$4"
fi
# FUNCTION: .zinit-annex-patch-dl-download-file-stdout {{{
# Downloads file to stdout. Used by snippet loading.
# Supports following backend commands: curl, wget, lftp, lynx.
.zinit-annex-patch-dl-download-file-stdout() {
local url="$1" restart="$2"
setopt localoptions localtraps
if (( restart )); then
if (( !${path[(I)/usr/local/bin]} )); then
path+=( "/usr/local/bin" );
trap "path[-1]=()" EXIT
fi
if (( ${+commands[curl]} )) then
command curl -fsSL "$url" || return 1
elif (( ${+commands[wget]} )); then
command wget -q "$url" -O - || return 1
elif (( ${+commands[lftp]} )); then
command lftp -c "cat $url" || return 1
elif (( ${+commands[lynx]} )) then
command lynx -source "$url" || return 1
else
return 2
fi
else
if type curl 2>/dev/null 1>&2; then
command curl -fsSL "$url" || return 1
elif type wget 2>/dev/null 1>&2; then
command wget -q "$url" -O - || return 1
elif type lftp 2>/dev/null 1>&2; then
command lftp -c "cat $url" || return 1
else
.zinit-annex-patch-dl-download-file-stdout "$url" "1"
return $?
fi
fi
return 0
} # }}}
if [[ -n ${ICE[dl]} && ${ICE[dl]} != ink=[-/[:alnum:]]* ]]; then
local -a dls srcdst
dls=( "${(s.;.)ICE[dl]}" )
local dl hd tl
for dl ( $dls ); do
srcdst=( ${(@s.->.)dl} )
+zi-log -- "{dbg} dl: old ${#srcdst} ${(qqq)srcdst[@]}"
srcdst=(${${srcdst[@]##[[:blank:]]##}%%[[:blank:]]##})
+zi-log -- "{dbg} dl: new ${#srcdst} ${(qqq)srcdst[@]}"
hd="" tl=""
if [[ -n ${srcdst[2]} ]]; then
@zinit-substitute 'srcdst[2]'
hd="${srcdst[2]:h}"
tl="${srcdst[2]:t}"
else
@zinit-substitute 'srcdst[1]'
hd="."
tl="${${srcdst[1]%%\?*}:t}"
fi
local tdir="${${(M)hd:#/*}:-$dir/$hd}"
# Create the destination directory
command mkdir -p "$tdir"
local ret=0
if ! .zinit-annex-patch-dl-download-file-stdout "${srcdst[1]}" >! "$tdir/$tl"; then
if ! .zinit-annex-patch-dl-download-file-stdout "${srcdst[1]}" 1 >! "$tdir/$tl"; then
+zinit-message "{e} {b}patch-dl{rst}: Failed to download the URL {glob}${srcdst[1]}{rst}"
ret=1
fi
fi
if (( !ret && !OPTS[opt_-q,--quiet] && ZINIT[annex-multi-flag:pull-active] == 2 )); then
+zinit-message "{m} {b}patch-dl{rst}: {file}$tl{rst} downloaded successfully"
fi
done
fi
if [[ -n "${ICE[patch]}" ]]; then
local -a patches
patches=( "${(s.;.)ICE[patch]}" )
patches=( "${patches[@]//((#s)[[:space:]]##|[[:space:]]##(#e))/}" )
local pch
for pch ( $patches ) {
@zinit-substitute pch
if (( !OPTS[opt_-q,--quiet] && ZINIT[annex-multi-flag:pull-active] == 2 )); then
+zinit-message "{m} {b}patch-dl{rst}: Applying patch {pname}$pch{rst}"
fi
(
builtin cd -q "$dir"
builtin print -nP -- "%F{220}"
command patch -s -N -p1 -i "$pch"
builtin print -nP -- "%f"
)
}
fi
# vim:ft=zsh:sw=2:sts=2:et