## vim:ft=zsh ## wrapper around man, finfo, etc typeset -a methods typeset method typeset -i found check_only all methods=(man function builtin apt) while [[ $1 == -* ]] { case $1 in -c|--check-only) check_only=1 ;; -a|--all) all=1 ;; -|--) shift; break ;; *) echo "unknown option: $1" ;; esac shift } function help_check_man { man -w $1 &> /dev/null } function help_check_function { whichf $1 &> /dev/null } function help_check_builtin { (( ${+builtins[$1]} )) } function help_check_apt { [[ $commands[$1] != ${HOME}* ]] && check_com -c $1 && check_com -c apt-file } function help_show_man { man $1 } function help_show_function { finfo $1 } function help_show_builtin { man zshbuiltins | less -p " $1" } function help_show_apt { apt-cache show ${(s/:/)$(apt-file search -F $commands[$1])[1]} } if [[ -z $1 ]] { echo "Usage: help " > /dev/stderr return 1 } for method in $methods; { if help_check_$method $1; then ((found++)) if ((check_only)) { echo $method continue } help_show_$method $1 ((all)) || break fi } if ((found == 0)) { echo "Sorry, no clue." > /dev/stderr return 1 }