dotfiles/.local/bin/scripts/help

65 lines
2.4 KiB
Plaintext
Raw Normal View History

#!/bin/sh -e
2021-09-29 16:38:57 +00:00
# open info-page, man-page or command help
2022-01-05 16:53:06 +00:00
# depends: unbuffer
# optdepends: highlight(dotfiles)
2022-08-04 21:53:53 +00:00
# TODO show tldr page
paginate="${PAGER:-less} +Gg"
2021-09-29 16:38:57 +00:00
test "$1" = "-d" && browse=1 && shift
showinfo() {
which info >/dev/null 2>&1 &&
2022-07-15 11:43:37 +00:00
case $EDITOR in
(*emacs*) info "$@" -w | grep -v "manpages" | grep -q . && $EDITOR --eval "(progn (info \"$1\") (if \"$2\" (Info-index \"$2\")) (delete-other-windows))";;
2022-07-15 11:43:37 +00:00
(*vim) info "$@" -w | grep -q . && $EDITOR -R -M -c "Info $1" +only;;
(*) info -f "$1" $(test "$2" && echo "--index-search=$2") 2>/dev/null;;
esac
}
2022-05-11 11:06:43 +00:00
cmd="$1"
case "$cmd" in
2022-08-28 20:51:08 +00:00
# TODO extract help in standard format from scripts
(hunt|rdoc|gh|chordpro|bat|pdfjam|reflector|topgrade|r128gain|7z|kubectl|diffr|docker|jrnl|difft|wiked-diff) unbuffer "$@" --help | $paginate;;
(caddy|stretchly|go|fossil) test "$cmd" = "fossil" -a $# -eq 1 && repo="$(locate -b -l 1 "fossil*.fossil")" && fossil ui "$repo" && exit
# TODO view fossil ui in terminal
2022-05-11 11:06:43 +00:00
shift
"$cmd" help "$@" | $paginate;;
# Non-standard help flags
2022-07-06 06:59:22 +00:00
(doom) "$@" --help;;
(mpw) "$@" -h 2>&1 | $paginate;;
2022-01-05 16:53:06 +00:00
(plantuml) unbuffer "$@" -help | $paginate;;
(rails) { "$@" -H && "$@" --help; } | $paginate;;
2022-05-11 11:06:43 +00:00
(vlc) shift && unbuffer vlc --full-help "$@" | $paginate;;
(kdeconnect*) shift && kdeconnect-cli --help-all "$@" | $paginate;;
# Show manpage with tweaks
2022-02-10 14:59:41 +00:00
(pandoc) man pandoc; highlight "Extensions" && pandoc --list-extensions | paste -s -d' ';;
2022-05-11 11:06:43 +00:00
(swaymsg) test $# -gt 1 && shift && man sway "$@" || man swaymsg;;
2022-01-07 18:15:25 +00:00
(swaymsg-*) man sway "${1#swaymsg-}";;
(zsh|zmv) # https://unix.stackexchange.com/questions/19290/zmv-for-zsh-dry-runs-and-man-pages
for last; do true; done
# need to install zsh-doc package for info pages
showinfo zsh $(test "$last" != zsh && echo "$last") ||
LESS="$LESS +/^ *$last *\\[" man zshall;;
(*) showinfo "$@" || man "$@" || return=$?
2022-10-04 07:24:23 +00:00
if test "${return:-0}" -gt 0 && which "$cmd" >/dev/null
then { unbuffer "$@" --help || { test $? == 1 && "$@" -help; } || { test $? == 1 && "$@" -h; }; } 2>&1 | $paginate
return=$?
2022-02-10 14:59:41 +00:00
fi;;
esac
2022-05-11 11:06:43 +00:00
docs="/usr/share/doc/$cmd"
2021-09-29 16:38:57 +00:00
if test -d "$docs"; then
2021-12-08 10:37:18 +00:00
if test -z "$browse"
then echo "Find more in $docs"
else
2022-05-11 11:06:43 +00:00
len() { echo "$1" | wc -c; }
2021-12-08 10:37:18 +00:00
shortest() {
read shortest
while read in
do test $(len $shortest) -gt $(len $in) && shortest=$in
done
echo $shortest
}
firefox "file://$(find $docs -name index.html | shortest | grep . || find $docs -name $1*.html | shortest)"
fi
2021-09-29 16:38:57 +00:00
fi
exit $return