From: Jan Kupec Date: Thu, 6 Mar 2008 17:35:06 +0000 (+0000) Subject: - bash completion script added (thanx to Marek Stopka) X-Git-Tag: BASE-SuSE-Linux-11_0-Branch~354 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3825458e6a86f4541f73abf9f71bb366377715d5;p=platform%2Fupstream%2Fzypper.git - bash completion script added (thanx to Marek Stopka) --- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9fe8bd6..4e19ae9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -80,6 +80,12 @@ INSTALL( RUNTIME DESTINATION ${INSTALL_PREFIX}/sbin ) +INSTALL( + FILES bash-completion.sh + DESTINATION ${SYSCONFDIR}/bash_completion.d + RENAME zypper.sh +) + ADD_EXECUTABLE( zypp-checkpatches-wrapper zypp-checkpatches-wrapper.c ) TARGET_LINK_LIBRARIES( zypp-checkpatches-wrapper ${ZYPP_LIBRARY} ) diff --git a/src/bash-completion.sh b/src/bash-completion.sh new file mode 100644 index 0000000..2396d5f --- /dev/null +++ b/src/bash-completion.sh @@ -0,0 +1,107 @@ +# zypper completion v 0.2 aplha 1 :-) (This is not feature complete version!) +# A hackweek gift from Marek Stopka + +_zypper() { + ZYPPER="/usr/bin/zypper" + local magic_string="Command options:" + local opts cur prev prevprev + if test ${#MODLIST[*]} = 0; then + for foo in $(LC_ALL=C $ZYPPER -h | sed -e "1,/Commands:/d" | awk -F ' ' '{print $1}' | sed 's/,//'); do + MODLIST="$MODLIST $foo" + done + fi + + cur=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + if [[ ${#COMP_WORDS[@]} -ge 3 ]]; then + prevprev=${COMP_WORDS[COMP_CWORD-2]} + fi + + case "$prev" in + zypper) + opts=$MODLIST + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + help) + opts=$MODLIST + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + shell) + return 0 + ;; + install) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + remove) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + search) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//' | grep -v '*') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + repos) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + addrepo) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + removerepo) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + renamerepo) + return 0 + ;; + modifyrepo) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + refresh) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + patch_check) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + patches) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + list-updates) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + xml-updates) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + update) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + info) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + patch-info) + return 0 + ;; + source-install) + return 0 + ;; + "--type") + opts="package patch pattern product" + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + ;; + dist-upgrade) + opts=$(LC_ALL=C $ZYPPER help $prev 2>&1 | sed -e "1,/$magic_string/d" -e 's/.*--/--/' -e 's/ .*//') + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + esac +} + +complete -F _zypper zypper diff --git a/zypper.spec.cmake b/zypper.spec.cmake index 7b4faa3..1514d52 100644 --- a/zypper.spec.cmake +++ b/zypper.spec.cmake @@ -84,6 +84,7 @@ touch %buildroot%_var/log/zypper.log %files -f zypper.lang %defattr(-,root,root) %{_sysconfdir}/logrotate.d/zypper.lr +%{_sysconfdir}/bash_completion.d/zypper.sh %{_bindir}/zypper %{_bindir}/installation_sources %{_sbindir}/zypp-checkpatches