#!/bin/sh
# Search and open man page
# Options: 
# -t use in terminal with fzf otherwise launch gui menu
# -s search with apropos.

issearch=
isterminal=

printusage() {
	echo "Options:" >&2
	echo " -t use in terminal with fzf otherwise gui menu." >&2
	echo " -s search with apropos." >&2
}

while getopts "st" curopt "$@"; do
	case "$curopt" in
		"s")
			issearch=1
			continue;;
		"t")
			isterminal=1
			continue;;
		"?")
			printusage
			exit 1;;
	esac
done

if [ ! -z "$issearch" ]; then
	if [ ! -z "$isterminal" ]; then
		printf "Enter query:\t"
		read query
	else
		query="$(echo "" | rofi -dmenu -p "Enter apropos query" -i)"
	fi
	if [ -z "$query" ]; then
		echo "Empty query" >&2
		exit 1
	fi
	list="$(apropos "$query")"
else
	list="$(man -k . | awk '{ print $1$2 }')"
fi

if [ ! -z "$isterminal" ]; then
	chosen=$(printf "$list" | fzf)
else
	chosen=$(printf "$list" | rofi -dmenu -p "Select man page" -i)
fi

if [ -z "$chosen" ]; then
    exit 0
fi

if [ ! -z "$issearch" ]; then
	chosen="$(printf "$chosen" | sed "s/\(.* ([a-zA-Z0-9]*)\)\s*-.*/\1/")"
fi

if [ ! -z "$isterminal" ]; then
	man "$chosen" && exit
fi

$TERMINAL $SHELL -ic "man \"$chosen\""