zsh-workers
 help / color / mirror / code / Atom feed
57f942de4578db5bd5cd075d241663a14ccbd4e8 blob 2041 bytes (raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
#compdef zypper
#
# Copyright (C) 2009 Holger Macht <holger@homac.de>
#
# 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 "$@"
debug log:

solving 57f942d ...
found 57f942d in https://git.vuxu.org/mirror/zsh/

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).