mirror of
https://github.com/ItsDrike/dotfiles.git
synced 2024-11-14 12:17:17 +00:00
41 lines
1.5 KiB
Plaintext
41 lines
1.5 KiB
Plaintext
|
#!/bin/sh
|
||
|
|
||
|
if command -v pkgfile > /dev/null; then
|
||
|
# Command not found hook that uses `pkgfile` package
|
||
|
# to search through the package index in order to find
|
||
|
# a package which includes given command, which was resolved
|
||
|
# and not found, if there are no such packages, only print
|
||
|
# command not found message
|
||
|
command_not_found_handler() {
|
||
|
cmd="$1"
|
||
|
printf 'zsh: command not found: %s' "$cmd" # print command not found asap, then search for packages
|
||
|
repos="$(pkgfile "$cmd")"
|
||
|
if [ -n "$repos" ]; then
|
||
|
printf '\r%s may be found in the following packages:\n' "$cmd"
|
||
|
echo "$repos" | while read -r pkg; do
|
||
|
printf ' %s\n' "$pkg"
|
||
|
done
|
||
|
else
|
||
|
printf '\n'
|
||
|
fi
|
||
|
return 127
|
||
|
}
|
||
|
elif [ -x /usr/lib/command-not-found ] || [ -x /usr/share/command-not-found/command-not-found ]; then
|
||
|
# Ubuntu handle for bash default command-not-found
|
||
|
# it works similarely to the above arch alternative,
|
||
|
# this is based on the original bash implementation
|
||
|
command_not_found_handler() {
|
||
|
# check because cmd not found could've been removed in the meantime
|
||
|
if [ -x /usr/lib/command-not-found ]; then
|
||
|
/usr/lib/command-not-found -- "$1"
|
||
|
return $?
|
||
|
elif [ -x /usr/share/command-not-found/command-not-found ]; then
|
||
|
/usr/share/command-not-found/command-not-found -- "$1"
|
||
|
return $?
|
||
|
else
|
||
|
printf "%s: command not found\n" "$1" >&2
|
||
|
return 127
|
||
|
fi
|
||
|
}
|
||
|
fi
|