1
0
mirror of https://github.com/zplug/zplug synced 2025-11-13 12:42:01 +01:00
zplug/autoload/utils/__arguments__
Naoki Mizuno e01833c95e Change directory structure
lib/     -> base/
src/     -> misc/
src/ext/ -> base/sources/
2016-04-13 01:25:51 -04:00

67 lines
1.6 KiB
Bash

#!/bin/zsh
__import "core/core"
local arg
local -a cmds user_cmds
user_cmds=( ${^path}/zplug-*(N-.:t:gs:zplug-:) )
arg="$1"
case "$arg" in
"")
__zplug::print::print::die \
"[zplug] too few arguments\n"
return 1
;;
esac
# User-defined command
if [[ -n ${(M)user_cmds:#$arg} ]]; then
eval "$commands[zplug-$arg]"
return $status
fi
# Auto correct like git(1)
__zplug::core::core::get_autoload_files \
"$ZPLUG_ROOT/autoload/commands"
reply+=("${user_cmds[@]}")
cmds=(
${(@f)"$(awk \
-f "$ZPLUG_ROOT/misc/share/fuzzy.awk" \
-v search_string="$arg" \
<<<"${(F)reply:gs:_:}"
)"}
)
case $#cmds in
0)
__zplug::print::print::die \
"[zplug] $arg: no such command\n"
return 1
;;
1)
__zplug::print::print::die \
"[zplug] $fg[red]${(%):-"%U"}WARNING${(%):-"%u"}$reset_color: "
__zplug::print::print::die \
"You called a zplug command named '%s', which does not exist.\n" \
"$arg"
__zplug::print::print::die \
" Continuing under the assumption that you meant '$fg[green]%s$reset_color'.\n" \
"$cmds"
shift
zplug "$cmds" ${1:+"$@"}
return $status
;;
*)
__zplug::print::print::die \
"[zplug] '%s' is not a zplug command. See 'zplug help'.\n" "$arg"
__zplug::print::print::die \
" Did you mean one of these?\n"
__zplug::print::print::die \
" %s\n" ${cmds}
return 1
;;
esac