,go() { case "$1" in -h|--help) echo "usage: ,go [version] [opts]" ;; -v|--version) echo ",go version 0.0.19" ;; -*|--*) echo "Unknown option $1" ;; system) if [ -n "${_go_PATH_fragment}" ] then export PATH=$(echo "$PATH" | \sed -e "s|${_go_PATH_fragment}||" -e "s|::|:|" -e "s|^:||" -e "s|:$||") fi _go_PATH_fragment='' if [ -n "${go_ROOT}" ] then unset go_ROOT fi unset GOROOT ;; "") for i in ${__go_LIST}; do if [ -d "$i" ] then if [ "$i" = "${go_ROOT}" ] then star='*' else star=' ' fi echo " $star $(basename $i)" fi done ;; *) for i in ${__go_LIST}; do if [ "$(basename $i)" = "$1" ] then if [ -n "${go_ROOT}" ] then if [ -n "${_go_PATH_fragment}" ] then export PATH=$(echo "$PATH" | \sed -e "s|${_go_PATH_fragment}||" -e "s|::|:|" -e "s|^:||" -e "s|:$||") fi _go_PATH_fragment='' if [ -n "${go_ROOT}" ] then unset go_ROOT fi unset GOROOT fi export go_ROOT="$i" if [ -n "${_go_PATH_fragment}" ] then export PATH=$(echo "$PATH" | \sed -e "s|${_go_PATH_fragment}||" -e "s|::|:|" -e "s|^:||" -e "s|:$||") fi if [ -n "${_go_PATH_fragment}" ] then _go_PATH_fragment="${_go_PATH_fragment}:${go_ROOT}/bin" else _go_PATH_fragment="${go_ROOT}/bin" fi export PATH="${_go_PATH_fragment}:${PATH}" export GOROOT="${go_ROOT}" return 0 fi done echo ",go: unknown go: $1" ;; esac } _go_completer() { reply=('system') for i in ${__go_LIST}; do reply+=($(basename $i)) done } compctl -K _go_completer ,go