diff --git a/_osc b/_osc new file mode 100644 index 0000000..ad90ee1 --- /dev/null +++ b/_osc @@ -0,0 +1,136 @@ +#compdef osc +# +# Copyright (C) 2009 Holger Macht +# +# This file is released under the GPLv2. +# +# Based on the the zsh guide from http://zsh.dotsrc.org/Guide/zshguide06.html +# +# Toggle verbose completions: zstyle ':completion:*:osc:*' verbose no +# zstyle ':completion:*:osc-subcommand:*' verbose no +# +# version 0.1 +# +# Main dispatcher + +_osc() { + if (( CURRENT > 2 )) && [[ ${words[2]} != "help" ]]; then + # Remember the subcommand name + local cmd=${words[2]} + # Set the context for the subcommand. + curcontext="${curcontext%:*:*}:osc-subcommand" + # Narrow the range of words we are looking at to exclude `osc' + (( CURRENT-- )) + shift words + # Run the completion for the subcommand + if [ "$cmd" = "submitreq" -o "$cmd" = "sr" ]; then + _osc_cmd_submitreq + elif [ "$cmd" = "getbinaries" ]; then + _osc_cmd_getbinaries + elif [ "$cmd" = "checkout" -o "$cmd" = "co" -o "$cmd" = "branch" ]; then + _osc_cmd_checkout + elif [ "$cmd" = "buildlog" -o "$cmd" = "buildinfo" ]; then + _osc_cmd_buildlog + else + _osc_cmd_do $cmd + fi + else + local hline + local -a cmdlist + local tag=0 + _call_program help-commands osc help | while read -A hline; do + # start parsing with "commands:" + [[ $hline[1] = "commands:" ]] && tag=1 + # stop parsing at the line starting with "For" + [[ $hline[1] = "For" ]] && tag=0 + [[ $tag = 0 ]] && continue + # all commands have to start with lower case letters + [[ $hline[1] =~ ^[A-Z] ]] && continue + (( ${#hline} < 2 )) && continue + + # ${hline[1]%,} truncates the last ',' + cmdlist=($cmdlist "${hline[1]%,}:${hline[2,-1]}") + done + _describe -t osc-commands 'osc command' cmdlist + fi +} + +_osc_cmd_getbinaries() { + _arguments \ + '1:PROJECT:(PROJECT)' \ + '2:PACKAGE:(PACKAGE)' \ + '3:REPOSITORY:( openSUSE_10.2 openSUSE_10.3 openSUSE_11.0 openSUSE_11.1 openSUSE_Factory SUSE_SLE-11_GA )' \ + '4:ARCHITECTURE:(i586 x86_64)' +} + +_osc_cmd_checkout() { + _arguments \ + '1:PROJECT:( openSUSE:Factory openSUSE:11.1 openSUSE:11.0 openSUSE:10.3 )' \ + '2:PACKAGE:(PACKAGE)' +} + +_osc_cmd_buildlog() { + _arguments \ + '1:REPOSITORY:( openSUSE_10.2 openSUSE_10.3 openSUSE_11.0 openSUSE_11.1 openSUSE_Factory SUSE_SLE-11_GA )' \ + '2:ARCHITECTURE:(i586 x86_64)' +} + +_osc_cmd_submitreq() { + local hline + local -a cmdlist + local tag=0 + _call_program help-commands osc help $cmd | while read -A hline; do + # start parsing from "usage:" + [[ $hline[1] = "usage:" ]] && tag=1 + [[ $tag = 0 ]] && continue + + if [[ $hline[1] =~ ^osc ]]; then + shift hline; shift hline + elif ! [[ $hline[1] =~ ^- ]]; then + # Option has to start with a '-' or 'osc submitrequest' + continue + fi + + (( ${#hline} < 2 )) && continue + + cmdlist=($cmdlist "${hline[1]%,}:${hline[2,-1]}") + + done + + _describe -t osc-commands 'osc command' cmdlist +} + + +_osc_cmd_do() { + local hline + local -a cmdlist + local tag=0 + + # only start completion if theres some '-' on the line + if ! [ "$words[2]" = "-" ]; then + _complete + return + fi + + _call_program help-commands osc help $cmd | while read -A hline; do + # start parsing from "Options:" + [[ $hline[1] = "Options:" ]] && tag=1 + [[ $tag = 0 ]] && continue + # Option has to start with a '-' + [[ $hline[1] =~ ^- ]] || continue + (( ${#hline} < 2 )) && continue + + cmdlist=($cmdlist "${hline[1]%,}:${hline[2,-1]}") + done + + if [ -n "$cmdlist" ]; then + _describe -t osc-commands 'osc command' cmdlist + else + _complete + fi +} + +# Code to make sure _osc is run when we load it +_osc "$@" + + diff --git a/_zypper b/_zypper new file mode 100644 index 0000000..1fc2e4c --- /dev/null +++ b/_zypper @@ -0,0 +1,73 @@ +#compdef zypper +# +# Copyright (C) 2009 Holger Macht +# +# This file is released under the GPLv2. +# +# Based on the the zsh guide from http://zsh.dotsrc.org/Guide/zshguide06.html +# +# Toggle verbose completions: zstyle ':completion:*:zypper:*' verbose no +# zstyle ':completion:*:zypper-subcommand:*' verbose no +# +# version 0.1 +# +# Main dispatcher + +_zypper() { + if (( CURRENT > 2 )) && [[ ${words[2]} != "help" ]]; then + # Remember the subcommand name + local cmd=${words[2]} + # Set the context for the subcommand. + curcontext="${curcontext%:*:*}:zypper-subcommand" + # Narrow the range of words we are looking at to exclude `zypper' + (( CURRENT-- )) + shift words + + _zypper_cmd_do $cmd + else + local hline + local -a cmdlist + local tag=0 + _call_program help-commands zypper help | while read -A hline; do + # start parsing with "Global Options:" + [[ $hline =~ "^Global Options:" ]] && tag=1 + [[ $tag = 0 ]] && continue + [[ $hline[1] =~ ^\t\t\t\t ]] && continue + # all commands have to start with lower case letters + [[ $hline[1] =~ ^[A-Z] ]] && continue + (( ${#hline} < 2 )) && continue + + # cut comma at end of command + hline[1]=`echo $hline[1] | sed -e 's/\(^.*\),/\1/'` + + # ${hline[1]%,} truncates the last ',' + cmdlist=($cmdlist "${hline[1]%,}:${hline[2,-1]}") + done + _describe -t zypper-commands 'zypper command' cmdlist + fi +} + +_zypper_cmd_do() { + local hline + local -a cmdlist + local tag=0 + _call_program help-commands zypper help $cmd | while read -A hline; do + # start parsing from "Options:" + [[ $hline =~ "^Command options:" ]] && tag=1 + [[ $tag = 0 ]] && continue + # Option has to start with a '-' + [[ $hline[1] =~ ^- ]] || continue + (( ${#hline} < 2 )) && continue + + cmdlist=($cmdlist "${hline[1]%,}:${hline[2,-1]}") + done + + if [ -n "$cmdlist" ]; then + _describe -t zypper-commands 'zypper command' cmdlist + else + _complete + fi +} + +# Code to make sure _zypper is run when we load it +_zypper "$@" diff --git a/zsh.changes b/zsh.changes index bae27c4..291588f 100644 --- a/zsh.changes +++ b/zsh.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Apr 24 14:15:13 CEST 2009 - hmacht@suse.de + +- add completion for osc (_osc) +- add completion for zypper (_zypper) + ------------------------------------------------------------------- Thu Oct 2 10:14:01 CEST 2008 - hvogel@suse.de diff --git a/zsh.spec b/zsh.spec index 27cd173..72c5025 100644 --- a/zsh.spec +++ b/zsh.spec @@ -1,7 +1,7 @@ # # spec file for package zsh (Version 4.3.6) # -# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -20,8 +20,8 @@ Name: zsh Version: 4.3.6 -Release: 66 -License: Other uncritical OpenSource License +Release: 68 +License: BSD 3-Clause Group: System/Shells BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: ncurses-devel @@ -37,6 +37,8 @@ Source4: _SuSEconfig Source5: _hwinfo Source6: _make Source7: zprofile +Source8: _osc +Source9: _zypper # unused atm. we build the docs with yodl on our own. Source20: %{name}-%{version}-doc.tar.bz2 Patch0: %{name}-4.3.4.diff @@ -124,7 +126,7 @@ groff Doc/intro.ms > intro.txt # install SUSE configuration %{__install} -m 0755 -Dd %{buildroot}/{etc,bin} %{__install} -m 0644 %{S:1} %{S:2} %{S:7} %{buildroot}/etc -%{__install} -m 0644 %{S:3} %{S:4} %{S:5} %{S:6} %{buildroot}%{_datadir}/%{name}/%version/functions +%{__install} -m 0644 %{S:3} %{S:4} %{S:5} %{S:6} %{S:8} %{S:9} %{buildroot}%{_datadir}/%{name}/%version/functions # install help files %{__install} -m 0755 -Dd %{buildroot}%{_datadir}/%{name}/help %{__install} -m 0644 Help/* %{buildroot}%{_datadir}/%{name}/help/ @@ -155,6 +157,9 @@ groff Doc/intro.ms > intro.txt %{_mandir}/man1/zsh*.1.gz %changelog +* Fri Apr 24 2009 hmacht@suse.de +- add completion for osc (_osc) +- add completion for zypper (_zypper) * Thu Oct 02 2008 hvogel@suse.de - globally disabling the test was the plan, not only on some archs * Thu Sep 18 2008 hvogel@suse.de @@ -270,7 +275,7 @@ groff Doc/intro.ms > intro.txt * Thu Oct 16 2003 mmj@suse.de - Don't build as root - Cleanup specfile -* Wed Oct 15 2003 jh@suse.de +* Tue Oct 14 2003 jh@suse.de - Fix profiling lockup. (we can not profile dl_closed modules yet) * Thu Jun 19 2003 mmj@suse.de - Update to 4.1.1 @@ -295,7 +300,7 @@ groff Doc/intro.ms > intro.txt - Use proper libdir * Thu Aug 15 2002 poeml@suse.de - update completion for _yast{,2} and add one for _hwinfo -* Thu Aug 15 2002 mmj@suse.de +* Wed Aug 14 2002 mmj@suse.de - Update to 4.0.6 which was released this fast b/c a termcap / terminfo fix was forgotten together with a fix for _mount. * Mon Aug 12 2002 mmj@suse.de @@ -327,7 +332,7 @@ groff Doc/intro.ms > intro.txt - Fixed build prob on beta-i386 and beta-ia64 * Tue May 08 2001 mfabian@suse.de - bzip2 sources -* Mon Apr 16 2001 schwab@suse.de +* Sun Apr 15 2001 schwab@suse.de - Fix missing declarations. * Fri Apr 13 2001 mmj@suse.de - Updated to 4.0.1-pre-3 @@ -357,9 +362,9 @@ groff Doc/intro.ms > intro.txt - removed symlink /etc/zshrc -> profile (aaa_base contains a real zshrc now) * Fri Oct 10 1997 florian@suse.de - update to version 3.0.5 -* Tue Jun 24 1997 florian@suse.de +* Mon Jun 23 1997 florian@suse.de - update to version 3.0.4 -* Thu Jan 23 1997 florian@suse.de +* Wed Jan 22 1997 florian@suse.de - update to version 3.0.2 * Thu Jan 02 1997 florian@suse.de - update to version 3.0.1