# Open the ebuild with a specified command local ebuild sel local -a elist if [[ $# -lt 2 ]]; then echo "No package name given." return 4 fi ebuild="$(equery w $2 2>&1 )" if [[ $? -ne 0 ]]; then if [[ $ebuild == *"Ambiguous"* ]]; then elist=(${(f)ebuild}) # remove the first line shift elist echo "Ambiguous package name '$2' -- choose from: " cat -n <<< ${(F)elist} read "sel?Selection: " if [[ -z $elist[$sel] ]]; then echo "Invalid choice." return 1 else # the "=" is needed to strip the leading spaces and the quotes open_ebuild $1 ${=elist[$sel]} return $? fi elif [[ $ebuild == *"No packages matching"* ]]; then echo "Trying masked packages too..." ebuild=$(equery w -m $2 2>&1) fi fi if [[ $? -eq 0 ]]; then $1 $ebuild else echo "No ebuild found" fi # vim: ft=zsh