85 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
#compdef pear
 | 
						|
# ------------------------------------------------------------------------------
 | 
						|
# Description
 | 
						|
# -----------
 | 
						|
#
 | 
						|
#  Completion script for Pear (http://pear.php.net).
 | 
						|
#
 | 
						|
# ------------------------------------------------------------------------------
 | 
						|
# Authors
 | 
						|
# -------
 | 
						|
#
 | 
						|
#  * aki77 (https://github.com/aki77)
 | 
						|
#
 | 
						|
# ------------------------------------------------------------------------------
 | 
						|
# -*- mode: zsh; sh-indentation: 2; indent-tabs-mode: nil; sh-basic-offset: 2; -*-
 | 
						|
# vim: ft=zsh sw=2 ts=2 et
 | 
						|
# ------------------------------------------------------------------------------
 | 
						|
 | 
						|
 | 
						|
_pear () {
 | 
						|
    local curcontext="$curcontext" state line expl ret=1
 | 
						|
 | 
						|
    _arguments \
 | 
						|
        '1: :->subcmds' \
 | 
						|
        '*:: :->args' && ret=0
 | 
						|
 | 
						|
    case $state in
 | 
						|
        subcmds)
 | 
						|
            _pear_commands
 | 
						|
            ;;
 | 
						|
        args)
 | 
						|
            local cmd args
 | 
						|
 | 
						|
            cmd=$words[1]
 | 
						|
            args=()
 | 
						|
 | 
						|
            case $cmd in
 | 
						|
                channel-alias|channel-delete|channel-info|channel-update)
 | 
						|
                    args+=(
 | 
						|
                        ':channel:_pear_discovered_channels'
 | 
						|
                    )
 | 
						|
                    ;;
 | 
						|
                uninstall|upgrade|run-scripts)
 | 
						|
                    args+=(
 | 
						|
                        ':package:_pear_installed_packages'
 | 
						|
                    )
 | 
						|
                    ;;
 | 
						|
            esac
 | 
						|
 | 
						|
            _arguments "$args[@]" && ret=0
 | 
						|
            return
 | 
						|
            ;;
 | 
						|
    esac
 | 
						|
    return ret
 | 
						|
}
 | 
						|
 | 
						|
_pear_commands () {
 | 
						|
    local commands
 | 
						|
 | 
						|
    commands=(
 | 
						|
        ${${(f)${"$(_call_program commands $service 2>&1)"#*Commands:}%Usage:*}/[[:blank:]]*[[:blank:]][[:blank:]]/:}
 | 
						|
    )
 | 
						|
    _describe -t commands 'Pear commands' commands
 | 
						|
}
 | 
						|
 | 
						|
_pear_installed_packages () {
 | 
						|
    local packages
 | 
						|
 | 
						|
    packages=(
 | 
						|
        ${${(f)"$(pear list)"#*STATE}%%[[:blank:]]*}
 | 
						|
    )
 | 
						|
    _wanted package expl 'package' compadd -a packages
 | 
						|
}
 | 
						|
 | 
						|
_pear_discovered_channels () {
 | 
						|
    local channels
 | 
						|
 | 
						|
    channels=(
 | 
						|
        ${${${(f)"$(_call_program commands pear list-channels)"#*SUMMARY}%__uri*}%%[[:blank:]]*}
 | 
						|
    )
 | 
						|
    _wanted channel expl 'channel' compadd -a channels
 | 
						|
}
 | 
						|
 | 
						|
_pear "$@"
 |