112 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
| #compdef rfkill
 | |
| # ------------------------------------------------------------------------------
 | |
| # Copyright (c) 2014 Vincent Bernat <bernat@luffy.cx>
 | |
| # Copyright (c) 2014 Github zsh-users - https://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 2.38.1 (https://wireless.wiki.kernel.org/en/users/Documentation/rfkill)
 | |
| #
 | |
| # ------------------------------------------------------------------------------
 | |
| # Authors
 | |
| # -------
 | |
| #
 | |
| #  * Vincent Bernat <bernat@luffy.cx>
 | |
| #  * Shohei YOSHIDA <https://github.com/syohex>
 | |
| #
 | |
| # ------------------------------------------------------------------------------
 | |
| 
 | |
| _rfkill_types() {
 | |
|   local -a 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() {
 | |
|   local -a devices=(${(M)${(f)"$(rfkill list)"}:#[0-9]*})
 | |
|   _rfkill_types
 | |
|   _describe -t devices "devices" devices
 | |
| }
 | |
| 
 | |
| _rfkill_columns() {
 | |
|   local -a columns=(DEVICE ID TYPE TYPE-DESC SOFT HARD)
 | |
|   _values -s ',' 'column' $columns
 | |
| }
 | |
| 
 | |
| _rfkill_command() {
 | |
|   local -a commands=(
 | |
|     'help:display help text and exit'
 | |
|     'event:listen for rfkill events and display them on stdout'
 | |
|     'list:list the current state of all available devices'
 | |
|     'block:disable the corresponding device'
 | |
|     'unblock:enable the corresponding device'
 | |
|     'toggle:enable or disable the corresponding device'
 | |
|   )
 | |
|   _describe -t commands 'command' commands "$@"
 | |
| }
 | |
| 
 | |
| _rfkill_subcommand() {
 | |
|   case "$words[1]" in
 | |
|     (list)
 | |
|       _arguments ':types:_rfkill_types'
 | |
|       ;;
 | |
|     (block|unblock|toggle)
 | |
|       _arguments ':device:_rfkill_devices'
 | |
|       ;;
 | |
|   esac
 | |
| }
 | |
| 
 | |
| _rfkill () {
 | |
|   local curcontext="$curcontext" state line
 | |
|   typeset -A opt_args
 | |
| 
 | |
|   _arguments -C \
 | |
|     '(* -)'{-h,--help}'[display help]' \
 | |
|     '(* -)'{-V,--version}'[get version]' \
 | |
|     '(-J --json -r --raw)'{-J,--json}'[use JSON output format]' \
 | |
|     '(-n --noheadings)'{-n,--noheadings}"[don't print headings]" \
 | |
|     '(-o --output --output-all)'{-o,--output}'[define which output columns to use]:column_list:_rfkill_columns' \
 | |
|     '(-o --output --output-all)--output-all[output all columns]' \
 | |
|     '(-J --json -r --raw)'{-r,--raw}'[use the raw output format]' \
 | |
|     '(-): :_rfkill_command' \
 | |
|     '(-)*:: :->arguments'
 | |
| 
 | |
|   case $state in
 | |
|     (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
 |