include/fn.bash (22 lines of code) (raw):

fn-args() { declare desc="Inspect a function's arguments" local argline argline=$(type "$1" | grep declare | grep -v "declare desc" | head -1) echo -e "${argline// /"\n"}" | awk -F= '/=/{print "<"$1">"}' | tr "\n" " " } fn-desc() { declare desc="Inspect a function's description" desc="" eval "$(type "$1" | grep desc | head -1)"; echo $desc } fn-info() { declare desc="Inspects a function" declare fn="$1" showsource="$2" echo "$fn $(fn-args "$fn")" echo " $(fn-desc "$fn")" echo if [[ "$showsource" ]]; then type "$fn" | tail -n +2 echo fi }