103 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
	
| #compdef rfkill
 | |
| # ------------------------------------------------------------------------------
 | |
| # Copyright (c) 2014 Vincent Bernat <bernat@luffy.cx>
 | |
| # Copyright (c) 2014 Github zsh-users - http://github.com/zsh-users
 | |
| #
 | |
| # Permission to use, copy, modify, and/or distribute this software for any
 | |
| # purpose with or without fee is hereby granted, provided that the above
 | |
| # copyright notice and this permission notice appear in all copies.
 | |
| #
 | |
| # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 | |
| # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 | |
| # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 | |
| # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 | |
| # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 | |
| # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 | |
| # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 | |
| # ------------------------------------------------------------------------------
 | |
| # Description
 | |
| # -----------
 | |
| #
 | |
| # Completion script for rfkill (http://wireless.kernel.org/en/users/Documentation/rfkill)
 | |
| #
 | |
| # ------------------------------------------------------------------------------
 | |
| # Authors
 | |
| # -------
 | |
| #
 | |
| #  * Vincent Bernat <bernat@luffy.cx>
 | |
| #
 | |
| # ------------------------------------------------------------------------------
 | |
| 
 | |
| _rfkill_types() {
 | |
|   declare -a devicetypes
 | |
|   devicetypes=(all
 | |
|     "wifi:Wireless LAN" "wlan:Wireless LAN"
 | |
|     "bluetooth:Bluetooth"
 | |
|     "uwb:Ultrawide Band"
 | |
|     "ultrawideband:Ultrawide Band"
 | |
|     "wimax:Wimax"
 | |
|     "wwan:3G"
 | |
|     "gps:GPS"
 | |
|     "fm:FM Radio"
 | |
|     "nfc:NFC")
 | |
|   _describe -t device-types "device types" devicetypes
 | |
| }
 | |
| 
 | |
| _rfkill_devices() {
 | |
|   declare -a devices
 | |
|   devices=(${(M)${(f)"$(rfkill list)"}:#[0-9]*})
 | |
|   _rfkill_types
 | |
|   _describe -t devices "devices" devices
 | |
| }
 | |
| 
 | |
| _rfkill_commands () {
 | |
|   declare -a subcommands
 | |
|   subcommands=(help event list block unblock)
 | |
|   _describe -t rfkill-commands "rfkill command" subcommands
 | |
| }
 | |
| 
 | |
| _rfkill_subcommand () {
 | |
|   case "$words[1]" in
 | |
|     (help|event)
 | |
|       ;;
 | |
|     (list)
 | |
|       _arguments ':types:_rfkill_types'
 | |
|       ;;
 | |
|     (block|unblock)
 | |
|       _arguments ':device:_rfkill_devices'
 | |
|       ;;
 | |
|     (*)
 | |
|       _message 'Unknown subcommand'
 | |
|   esac
 | |
| }
 | |
| 
 | |
| _rfkill () {
 | |
|   local curcontext="$curcontext" state line
 | |
|   typeset -A opt_args
 | |
| 
 | |
|   _arguments -C \
 | |
|     '--version[get version]:' \
 | |
|     '(-): :->command' \
 | |
|     '(-)*:: :->arguments'
 | |
| 
 | |
|   case $state in
 | |
|     (command)
 | |
|       _rfkill_commands
 | |
|       ;;
 | |
|     (arguments)
 | |
|       curcontext=${curcontext%:*:*}:rfkill-$words[1]:
 | |
|       _rfkill_subcommand
 | |
|       ;;
 | |
|   esac
 | |
| }
 | |
| 
 | |
| _rfkill "$@"
 | |
| 
 | |
| # Local Variables:
 | |
| # mode: Shell-Script
 | |
| # sh-indentation: 2
 | |
| # indent-tabs-mode: nil
 | |
| # sh-basic-offset: 2
 | |
| # End:
 | |
| # vim: ft=zsh sw=2 ts=2 et
 |