- bash completion script added (thanx to Marek Stopka)
authorJan Kupec <jkupec@suse.cz>
Thu, 6 Mar 2008 17:35:06 +0000 (17:35 +0000)
committerJan Kupec <jkupec@suse.cz>
Thu, 6 Mar 2008 17:35:06 +0000 (17:35 +0000)
src/CMakeLists.txt
src/bash-completion.sh [new file with mode: 0644]
zypper.spec.cmake

index 9fe8bd6..4e19ae9 100644 (file)
@@ -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 (file)
index 0000000..2396d5f
--- /dev/null
@@ -0,0 +1,107 @@
+# zypper completion v 0.2 aplha 1 :-) (This is not feature complete version!)
+# A hackweek gift from Marek Stopka <marekstopka@gmail.com>
+
+_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
index 7b4faa3..1514d52 100644 (file)
@@ -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