diff options
Diffstat (limited to 'completions/portupgrade')
-rw-r--r-- | completions/portupgrade | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/completions/portupgrade b/completions/portupgrade new file mode 100644 index 00000000..5389a5ca --- /dev/null +++ b/completions/portupgrade @@ -0,0 +1,57 @@ +# bash completion for FreeBSD portupgrade package + +have portupgrade && +_portupgrade() +{ + local cur pkgdir prev + + pkgdir=${PKG_DBDIR:-/var/db/pkg}/ + _get_comp_words_by_ref cur prev + + [[ "$prev" == -l || "$prev" == -L || "$prev" == -o ]] && return 0 + + COMPREPLY=( $( compgen -d "$pkgdir$cur" ) ) + COMPREPLY=( ${COMPREPLY[@]#$pkgdir} ) + COMPREPLY=( ${COMPREPLY[@]%-*} ) + + return 0 +} && +complete -F _portupgrade -o dirnames portupgrade + +have portinstall && +_portinstall() +{ + local cur portsdir prev indexfile + local -a COMPREPLY2 + + portsdir=${PORTSDIR:-/usr/ports}/ + _get_comp_words_by_ref cur prev + # First try INDEX-5 + indexfile=$portsdir/INDEX-5 + # Then INDEX if INDEX-5 does not exist or system is not FreeBSD 5.x + [[ "${OSTYPE%.*}" == freebsd5 && -f $indexfile ]] || + indexfile=$portsdir/INDEX + + [[ "$prev" == -l || "$prev" == -L || "$prev" == -o ]] && return 0 + + COMPREPLY=( $( command grep -E "^$cur" < $indexfile | cut -d'|' -f1 ) ) + COMPREPLY2=( $( command grep -E "^[^\|]+\|$portsdir$cur" < $indexfile | \ + cut -d'|' -f2 ) ) + COMPREPLY2=( ${COMPREPLY2[@]#$portsdir} ) + COMPREPLY=( "${COMPREPLY[@]}" "${COMPREPLY2[@]}" ) + + return 0 +} && +complete -F _portinstall -o dirnames portinstall + +# _pkg_delete is in pkg_install +type _pkg_delete &>/dev/null && have pkg_deinstall && \ +complete -F _pkg_delete -o dirnames pkg_deinstall + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh |