summaryrefslogtreecommitdiff
path: root/Completion/Linux
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Linux')
-rw-r--r--Completion/Linux/Command/.distfiles3
-rw-r--r--Completion/Linux/Command/_cryptsetup103
-rw-r--r--Completion/Linux/Command/_ethtool8
-rw-r--r--Completion/Linux/Command/_modutils2
-rw-r--r--Completion/Linux/Command/_nmcli244
-rw-r--r--Completion/Linux/Command/_schedtool25
6 files changed, 380 insertions, 5 deletions
diff --git a/Completion/Linux/Command/.distfiles b/Completion/Linux/Command/.distfiles
index 251204e3b..0d817fc5d 100644
--- a/Completion/Linux/Command/.distfiles
+++ b/Completion/Linux/Command/.distfiles
@@ -5,6 +5,7 @@ _acpitool
_analyseplugin
_brctl
_chrt
+_cryptsetup
_ethtool
_fusermount
_ionice
@@ -17,8 +18,10 @@ _mdadm
_mii-tool
_modutils
_mondo
+_nmcli
_pkgtool
_rpmbuild
+_schedtool
_sshfs
_strace
_tpb
diff --git a/Completion/Linux/Command/_cryptsetup b/Completion/Linux/Command/_cryptsetup
new file mode 100644
index 000000000..3519336e8
--- /dev/null
+++ b/Completion/Linux/Command/_cryptsetup
@@ -0,0 +1,103 @@
+#compdef cryptsetup
+## completion for cryptsetup 1.3.0, based on cryptsetup(1)
+
+function _cryptsetup_action {
+ typeset -a actions
+ actions=(
+ 'create:create a mapping'
+ 'remove:remove an existing mapping'
+ 'status:report mapping status'
+ 'resize:resize an active mapping'
+ 'luksFormat:Initialize a LUKS partition'
+ 'luksOpen:Open LUKS partition'
+ 'luksClose:remove an existing mapping'
+ 'luksSuspend:suspend active device'
+ 'luksResume:resume suspended device'
+ 'luksAddKey:add a new key'
+ 'luksRemoveKey:remove a key'
+ 'luksChangeKey:change a key'
+ 'luksKillSlot:wipe key from slot'
+ 'luksUUID:print/change device UUID'
+ 'isLuks:check if device is a LUKS partition'
+ 'luksDump:dump header information'
+ 'luksHeaderBackup:store binary backup of headers'
+ 'luksHeaderRestore:restore header backup'
+ )
+ _describe action actions
+}
+
+function _cryptsetup_device {
+ typeset expl
+ _wanted file expl device \
+ _files
+}
+
+function _cryptsetup_mapping {
+ typeset expl
+ _wanted file expl 'mapping name' \
+ _path_files -W /dev/mapper
+}
+
+function _cryptsetup_arguments {
+
+ case ${words[1]} in
+
+ create)
+ _arguments ':mapping:_cryptsetup_mapping' ':device:_cryptsetup_device'
+ ;;
+
+ remove|status|resize|luksClose|luksSuspend|luksResume)
+ _arguments ': :_cryptsetup_mapping'
+ ;;
+
+ luks(AddKey|RemoveKey|DelKey|UUID|Dump)|isLuks)
+ _arguments ': :_cryptsetup_device'
+ ;;
+
+ luks(Format|AddKey|RemoveKey|ChangeKey))
+ _arguments ': :_cryptsetup_device' ':key file:_files'
+ ;;
+
+ luksKillSlot)
+ _arguments ': :_cryptsetup_device' ':key slot number'
+ ;;
+
+ luksOpen)
+ _arguments ': :_cryptsetup_device' ': :_cryptsetup_mapping'
+ ;;
+
+ esac
+}
+
+function _cryptsetup {
+ _arguments \
+ '(-v --verbose)'{-v,--verbose}'[enable verbose mode]' \
+ '--debug[enable debug mode]' \
+ '(-h --hash)'{-h,--hash}'[hash algorithm]:hash algorithm' \
+ '(-c --cipher)'{-c,--cipher}'[set cipher]:cipher specification' \
+ '(-y --verify-passphrase)'{-y,--verify-passphrase}'[query for password twice]' \
+ '(-d --key-file)'{-d,--key-file}'[set keyfile]:key file:_files' \
+ '(-l --keyfile-size)'{-l,--keyfile-size}'[set keyfile size]:bytes' \
+ '--new-keyfile-size[set new keyfile size (luksAddKey)]:bytes' \
+ '--master-key-file[set master key]:key file:_files' \
+ '--dump-master-key[dump luks master key]' \
+ '(--use-urandom)--use-random[use /dev/random to generate volume key]' \
+ '(--use-random)--use-urandom[use /dev/urandom to generate volume key]' \
+ '(-S --key-slot)'{-S,--key-slot}'[select key slot]:key slot' \
+ '(-s --key-size)'{-s,--key-size}'[set key size]:bits' \
+ '(-b --size)'{-b,--size}'[force device size]:sectors' \
+ '(-o --offset)'{-o,--offset}'[set start offset]:sectors' \
+ '(-p --skip)'{-p,--skip}'[data to skip at beginning]:sectors' \
+ '--readonly[set up read-only mapping]' \
+ '(-i --iter-time)'{-i,--iter-time}'[set password processing duration]:milliseconds' \
+ '(-q --batch-mode)'{-q,--batch-mode}'[do not ask for confirmation]' \
+ '(-t --timeout)'{-t,--timeout}'[set password prompt timeout]:seconds' \
+ '(-T --tries)'{-T,--tries}'[set maximum number of retries]:maximum retries' \
+ '--align-payload[set payload alignment]:sectors' \
+ '--uuid[set device UUID]:uuid' \
+ '--version[show version information]' \
+ ':action:_cryptsetup_action' \
+ '*::arguments:_cryptsetup_arguments'
+}
+
+_cryptsetup "$@"
diff --git a/Completion/Linux/Command/_ethtool b/Completion/Linux/Command/_ethtool
index a01d38823..5d607741f 100644
--- a/Completion/Linux/Command/_ethtool
+++ b/Completion/Linux/Command/_ethtool
@@ -3,9 +3,9 @@
local -a cmds
if [[ $CURRENT -ge 4 ]]; then
- case $words[CURRENT-1]; in
+ case $words[CURRENT-1] in
rx|tx)
- if [[ $words[2] = '-G' ]] && _message -e n 'number of ring entries' || _wanted -x onoff expl 'enabled' compadd off on
+ [[ $words[2] = '-G' ]] && _message -e n 'number of ring entries' || _wanted -x onoff expl 'enabled' compadd off on
;;
autoneg|adaptive-rx|adaptive-tx|raw|hex|sg|tso|ufo|gso)
_wanted -x onoff expl 'enabled' compadd off on
@@ -55,7 +55,7 @@ if [[ $CURRENT -ge 4 ]]; then
_wanted files expl 'raw register dump files' _files
;;
*)
- case $words[2]; in
+ case $words[2] in
-A|--pause)
_values -S ' ' -w 'pause options' \
'autoneg[specify if pause autonegotiation is enabled]' \
@@ -111,7 +111,7 @@ if [[ $CURRENT -ge 4 ]]; then
'gso[specify if generic segmentation offload is enabled]'
;;
-p|--identify)
- if [[ $CURRENT -eq 4 ]] && _message -e length 'seconds'
+ [[ $CURRENT -eq 4 ]] && _message -e length 'seconds'
;;
-t|--test)
_values -S ' ' -w 'selftest option' \
diff --git a/Completion/Linux/Command/_modutils b/Completion/Linux/Command/_modutils
index b3f8fcd46..e2671f2a7 100644
--- a/Completion/Linux/Command/_modutils
+++ b/Completion/Linux/Command/_modutils
@@ -107,7 +107,7 @@ case "$state" in
! _retrieve_cache modules-$kver;
then
# 2011-01-02 gi1242: Do we need .o files? Or is .ko enough?
- modules=( $modules_dir/$kver/(*~(source|build))/**/*.(o|ko)(.:t:r) )
+ modules=( $modules_dir/$kver/(*~(source|build))/**/*.(o|ko|ko.gz)(.:t:r:r) )
_store_cache modules-$kver modules
fi
diff --git a/Completion/Linux/Command/_nmcli b/Completion/Linux/Command/_nmcli
new file mode 100644
index 000000000..a6b97a36c
--- /dev/null
+++ b/Completion/Linux/Command/_nmcli
@@ -0,0 +1,244 @@
+#compdef nmcli
+
+local context state line expl
+typeset -A opt_args
+
+if [[ -z $_nmcli_version ]]; then
+ _nmcli_version="${"$(_call_program nmcli $words[1] --version)"##*version }"
+fi
+
+(( $+functions[_nmcli_is_running] )) || _nmcli_is_running() {
+ [[ $(_call_program nmcli $words[1] -f running nm) != *'not running'* ]]
+}
+
+(( $+functions[_nmcli_con_ids] )) || _nmcli_con_ids() {
+ _nmcli_is_running || return
+ local -a con_ids
+ con_ids=(${(f)"$(_call_program nmcli $words[1] -f name con)"})
+ con_ids=(${con_ids[2,-2]})
+ con_ids=(${con_ids[@]%%\ ##})
+ _describe 'select connection' con_ids
+}
+
+(( $+functions[_nmcli_con_uuids] )) || _nmcli_con_uuids() {
+ _nmcli_is_running || return
+ local -a con_uuids
+ con_uuids=(${(f)"$(_call_program nmcli $words[1] -f uuid con)"})
+ con_uuids=(${con_uuids[2,-2]})
+ con_uuids=(${con_uuids[@]%%\ ##})
+ _describe 'select connection' con_uuids
+}
+
+(( $+functions[_nmcli_objects] )) || _nmcli_objects() {
+ local -a objects_array
+ objects_array=(
+ 'nm:NetworkManager status'
+ 'con:NetworkManager connections'
+ 'dev:devices managed by NetworkManager'
+ )
+ _describe 'nmcli object' objects_array
+}
+
+(( $+functions[_nmcli_nm] )) || _nmcli_nm() {
+ local -a nm_array
+ nm_array=(
+ 'status:show overall status of NetworkManager'
+ 'enable:get status or enable/disable networking'
+ 'sleep:get sleep status or put to sleep/awake NetworkManager'
+ 'wifi:inquire or set status of WiFi in NetworkManager'
+ 'wwan:inquire or set status of WWAN in NetworkManager'
+ )
+ _describe 'inquire and change state of NetworkManager' nm_array
+}
+
+(( $+functions[_nmcli_con] )) || _nmcli_con() {
+ local -a con_array
+ con_array=(
+ 'list:list configured connections'
+ 'status:print status of active connections'
+ 'up:activate a connection'
+ 'down:deactivate a connection'
+ )
+ if [[ $_nmcli_version == 0.9.[1-9]* ]]; then
+ con_array[5]="delete:delete a connection"
+ fi
+ _describe "get information about NetworkManager's connections" con_array
+}
+
+(( $+functions[_nmcli_con_list] )) || _nmcli_con_list() {
+ local -a con_list_array
+ con_list_array=(
+ 'id:get details on connection specified by id'
+ 'uuid:get details on connection specified by uuid'
+ )
+ if [[ $_nmcli_version == 0.8* ]]; then
+ con_list_array[3]='system:only list system connections'
+ con_list_array[4]='user:only list user connections'
+ fi
+ _describe 'list configured connections' con_list_array
+}
+
+(( $+functions[_nmcli_con_up] )) || _nmcli_con_up() {
+ local -a con_up_array
+ con_up_array=(
+ 'id:activate connection specified by id'
+ 'uuid:activate connection specified by uuid'
+ )
+ _describe 'activate connection by id or uuid' con_up_array
+}
+
+(( $+functions[_nmcli_con_down] )) || _nmcli_con_down() {
+ local -a con_down_array
+ con_down_array=(
+ 'id:deactivate connection specified by id'
+ 'uuid:deactivate connection specified by uuid'
+ )
+ _describe 'deactivate connection by id or uuid' con_down_array
+}
+
+(( $+functions[_nmcli_con_delete] )) || _nmcli_con_delete() {
+ local -a con_delete_array
+ con_delete_array=(
+ 'id:delete connection specified by id'
+ 'uuid:delete connection specified by uuid'
+ )
+ _describe 'delete connection by id or uuid' con_delete_array
+}
+
+(( $+functions[_nmcli_con_up_extraargs] )) || _nmcli_con_up_extraargs() {
+ local -a con_up_extraargs_array
+ con_up_extraargs_array=(
+ 'iface:require a particular interface'
+ 'ap:require a specific access point'
+ '--nowait:don''t wait for command completion'
+ '--timeout:specify how long to wait for operation to complete'
+ )
+ _describe 'extra options for "con up"' con_up_extraargs_array
+}
+
+(( $+functions[_nmcli_dev_disconnect_extraargs] )) || _nmcli_dev_disconnect_extraargs() {
+ local -a dev_disconnect_extraargs_array
+ dev_disconnect_extraargs_array=(
+ '--nowait:don''t wait for command completion'
+ '--timeout:specify how long to wait for operation to complete'
+ )
+ _describe 'extra options for "dev disconnect"' dev_disconnect_extraargs_array
+}
+
+(( $+functions[_nmcli_dev_wifi_list] )) || _nmcli_dev_wifi_list() {
+ local -a dev_wifi_list_array
+ dev_wifi_list_array=(
+ 'iface:list APs for a particular interface'
+ )
+ if [[ $_nmcli_version == 0.8* || $_nmcli_version == 0.9.0* ]]; then
+ dev_wifi_list_array[2] = 'hwaddr:list a specific AP by MAC address'
+ elif [[ $_nmcli_version == 0.9.[1-9]* ]]; then
+ dev_wifi_list_array[2] = 'bssid:list a specific AP by BSSID'
+ fi
+ _describe 'options for specifying the AP to list' dev_wifi_list_array
+}
+
+(( $+functions[_nmcli_dev] )) || _nmcli_dev() {
+ local -a dev_array
+ dev_array=(
+ 'status:print status of devices'
+ 'list:get detailed information about devices'
+ 'disconnect:disconnect device and prevent it from automatically activating'
+ 'wifi:list available WiFi access points'
+ )
+ _describe "get information about devices" dev_array
+}
+
+(( $+functions[_nmcli_truefalse] )) || _nmcli_truefalse() {
+ _wanted boolean expl 'use true/false to modify (nothing = query status)' compadd true false
+}
+
+(( $+functions[_nmcli_onoff] )) || _nmcli_onoff() {
+ _wanted onoff expl 'use on/off to modify (nothing = query status)' compadd on off
+}
+
+local w1="${words[$#words - 1]}"
+local w2="${words[$#words - 2]}"
+local w3="${words[$#words - 3]}"
+local w4="${words[$#words - 4]}"
+
+if [[ $w2 == nm && $w1 == (sleep|enable) ]]; then
+ _nmcli_truefalse && return
+elif [[ $w2 == nm && $w1 == (wifi|wwan) ]]; then
+ _nmcli_onoff && return
+elif [[ $w1 == nm ]]; then
+ _nmcli_nm && return
+elif [[ $w3 == con && $w2 == list && $w1 == id ]]; then
+ _nmcli_con_ids && return
+elif [[ $w3 == con && $w2 == list && $w1 == uuid ]]; then
+ _nmcli_con_uuids && return
+elif [[ $w2 == con && $w1 == list ]]; then
+ _nmcli_con_list && return
+elif [[ $w3 == con && $w2 == (up|down) && $w1 == id ]]; then
+ _nmcli_con_ids && return
+elif [[ $_nmcli_version == 0.9.[1-9]* && $w3 == con && $w2 == delete && $w1 == id ]]; then
+ _nmcli_con_ids && return
+elif [[ $w3 == con && $w2 == (up|down) && $w1 == uuid ]]; then
+ _nmcli_con_uuids && return
+elif [[ $_nmcli_version == 0.9.[1-9]* && $w3 == con && $w2 == delete && $w1 == uuid ]]; then
+ _nmcli_con_uuids && return
+elif [[ ${(pj:\0:)words} == *$'\0con\0up\0'(id|uuid)$'\0'* ]]; then
+ if [[ $w1 == iface ]]; then
+ _net_interfaces && return
+ elif [[ $w1 == ap ]]; then
+ _message -e descriptions 'enter MAC address' && return
+ elif [[ $w1 == --timeout ]]; then
+ _message -e descriptions 'enter timeout' && return
+ else
+ _nmcli_con_up_extraargs && return
+ fi
+elif [[ $w2 == con && $w1 == up ]]; then
+ _nmcli_con_up && return
+elif [[ $w2 == con && $w1 == down ]]; then
+ _nmcli_con_down && return
+elif [[ $_nmcli_version == 0.9.[1-9]* && $w2 == con && $w1 == delete ]]; then
+ _nmcli_con_delete && return
+elif [[ $w1 == con ]]; then
+ _nmcli_con && return
+elif [[ $w3 == dev && $w2 == (list|disconnect) && $w1 == iface ]]; then
+ _net_interfaces && return
+elif [[ ${(pj:\0:)words} == *$'\0dev\0disconnect\0iface\0'* ]]; then
+ if [[ $w1 == --timeout ]]; then
+ _message -e descriptions 'enter timeout' && return
+ else
+ _nmcli_dev_disconnect_extraargs && return
+ fi
+elif [[ $w2 == dev && $w1 == list ]]; then
+ compadd iface && return
+elif [[ $w2 == dev && $w1 == disconnect ]]; then
+ compadd iface && return
+elif [[ $w4 == dev && $w3 == wifi && $w2 == list && $w1 == iface ]]; then
+ _net_interfaces && return
+elif [[ $w4 == dev && $w3 == wifi && $w2 == list && $w1 == hwaddr ]]; then
+ _message -e descriptions 'enter MAC address' && return
+elif [[ $w3 == dev && $w2 == wifi && $w1 == list ]]; then
+ _nmcli_dev_wifi_list && return
+elif [[ $w2 == dev && $w1 == wifi ]]; then
+ compadd list && return
+elif [[ $w1 == dev ]]; then
+ _nmcli_dev && return
+else
+ _arguments \
+ {'(--terse)-t','(-t)--terse'}'[terse output]' \
+ {'(--pretty)-p','(-p)--pretty'}'[pretty output]' \
+ {'(--mode)-m','(-m)--mode'}'[output mode]:output mode:(tabular multiline)' \
+ {'(--fields)-f','(-f)--fields'}'[specify fields to output]: :->fields' \
+ {'(--escape)-e','(-e)--escape'}'[escape columns separators in values]:escape columns separators in values:(yes no)' \
+ {'(--version)-v','(-v)--version'}'[show program version]' \
+ {'(--help)-h','(-h)--help'}'[print this help]' \
+ '*::nmcli object:_nmcli_objects' \
+ && return
+fi
+
+[[ "$state" == "fields" ]] &&
+ _values -s , 'fields to be printed' \
+ all common \
+ autoconnect dbus-path device name net-enabled readonly running \
+ scope state timestamp timestamp-real type uuid wifi wifi-hardware \
+ wwan wwan-hardware \
+ && return
diff --git a/Completion/Linux/Command/_schedtool b/Completion/Linux/Command/_schedtool
new file mode 100644
index 000000000..869f146e3
--- /dev/null
+++ b/Completion/Linux/Command/_schedtool
@@ -0,0 +1,25 @@
+#compdef schedtool
+
+local curcontext="$curcontext" line state ret=1
+
+_arguments -C \
+ '(-p -F -R -B -I -D -M)-N[for SCHED_NORMAL]' \
+ '( -N -R -B -I -D -M)-F[for SCHED_FIFO]' \
+ '( -N -F -B -I -D -M)-R[for SCHED_RR]' \
+ '(-p -N -F -R -I -D -M)-B[for SCHED_BATCH]' \
+ '( -N -F -R -B -D -M)-I[for SCHED_ISO]' \
+ '(-p -N -F -R -B -I -M)-D[for SCHED_IDLEPRIO]' \
+ '( -N -F -R -B -I -D )-M[for manual mode; raw number for POLICY]:raw policy number' \
+ '( -N -B -D )-p[usually 1-99; only for FIFO, RR or ISO]:static priority' \
+ '-a[cpu affinity]:mask or list' \
+ '-n[set niceness to NICE_LEVEL]:priority' \
+ '-e[start COMMAND with specified policy/priority]:program: _command_names -e:*::program arguments: _normal' \
+ '-v[be verbose]' \
+ '*:processes:->processes' && ret=0
+
+if [[ -n "$state" ]]; then
+ _alternative \
+ 'processes:: _pids' && ret=0
+fi
+
+return ret