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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
|
#compdef udevadm
# SPDX-License-Identifier: LGPL-2.1-or-later
(( $+functions[_udevadm_info] )) ||
_udevadm_info(){
_arguments \
'(-)'{-h,--help}'[Print help]' \
'(-)'{-V,--version}'[Print version of the program]' \
'--query=[Query the database for specified type of device data. It needs the --path or --name to identify the specified device.]:type:(name symlink path property all)' \
'--path=[The devpath of the device to query.]:sys files:_files -W /sys' \
'--name=[The name of the device node or a symlink to query]:device files:_files -W /dev' \
'--root[Print absolute paths in name or symlink query.]' \
'--attribute-walk[Print all sysfs properties of the specified device that can be used in udev rules to match the specified device]' \
'--export[Print output as key/value pairs.]' \
'--export-prefix=[Add a prefix to the key name of exported values.]:prefix' \
'--device-id-of-file=[Print major/minor numbers of the underlying device, where the file lives on.]:files:_udevadm_mounts' \
'--export-db[Export the content of the udev database.]' \
'--cleanup-db[Cleanup the udev database.]' \
'--value[When showing properties, print only their values.]' \
'--property=[Show only properties by this name.]:NAME' \
'*::devpath:_path_files -g "*(-/,-%)"'
}
(( $+functions[_udevadm_trigger] )) ||
_udevadm_trigger(){
_arguments \
'(-)'{-h,--help}'[Show help]' \
'(-)'{-V,--version}'[Show package version]' \
'--verbose[Print the list of devices which will be triggered.]' \
'--dry-run[Do not actually trigger the event.]' \
'--quiet[Suppress error logging in triggering events.]' \
'--type=[Trigger a specific type of devices.]:types:(all devices subsystems failed)' \
'--action=[Type of event to be triggered.]:actions:(add change remove move online offline bind unbind)' \
'--subsystem-match=[Trigger events for devices which belong to a matching subsystem.]:SUBSYSTEM' \
'--subsystem-nomatch=[Do not trigger events for devices which belong to a matching subsystem.]:SUBSYSTEM' \
'--attr-match=attribute=[Trigger events for devices with a matching sysfs attribute.]:FILE' \
'--attr-nomatch=attribute=[Do not trigger events for devices with a matching sysfs attribute.]:FILE' \
'--property-match=[Trigger events for devices with a matching property value.]:KEY=VALUE' \
'--tag-match=[Trigger events for devices with a matching tag.]:TAG' \
'--sysname-match=[Trigger events for devices with a matching sys device name.]:NAME' \
'--parent-match=[Trigger events for all children of a given device.]:NAME' \
'--include-parents[Also trigger parent devices of found devices.]' \
'--initialized-match[Trigger events for devices that are already initialized.]' \
'--initialized-nomatch[Trigger events for devices that are not initialized yet.]' \
'--uuid[Print synthetic uevent UUID.]' \
'--prioritized-subsystem=[Trigger events for devices which belong to a matching subsystem earlier.]:SUBSYSTEM' \
'*::devpath:_path_files -g "*(-/,-%)"'
}
(( $+functions[_udevadm_settle] )) ||
_udevadm_settle(){
_arguments \
'(-)'{-h,--help}'[Print help]' \
'(-)'{-V,--version}'[Print version of the program]' \
'(-t --timeout)'{-t,--timeout=}'[Maximum number of seconds to wait for the event queue to become empty.]:SEC' \
'(-E --exit-if-exists)'{-E,--exit-if-exists=}'[Stop waiting if file exists.]:files:_files'
}
(( $+functions[_udevadm_control] )) ||
_udevadm_control(){
_arguments \
'(-)'{-h,--help}'[Show help]' \
'(-)'{-V,--version}'[Show package version]' \
'(-e --exit)'{-e,--exit}'[Signal and wait for systemd-udevd to exit.]' \
'(-l --log-level)'{-l,--log-level=}'[Set the internal log level of systemd-udevd.]:LEVEL:(err info debug)' \
'(-s --stop-exec-queue)'{-s,--stop-exec-queue}'[Signal systemd-udevd to stop executing new events. Incoming events will be queued.]' \
'(-S --start-exec-queue)'{-S,--start-exec-queue}'[Signal systemd-udevd to enable the execution of events.]' \
'(-R --reload)'{-R,--reload}'[Signal systemd-udevd to reload the rules files and other databases like the kernel module index.]' \
'(-p --property)'{-p,--property=}'[Set a global property for all events.]:KEY=VALUE' \
'(-m --children-max=)'{-m,--children-max=}'[Set the maximum number of events.]:N' \
'--trace=[Enable/disable trace logging.]:BOOL' \
'--revert[Revert previously set configurations.]' \
'(-t --timeout=)'{-t,--timeout=}'[The maximum number of seconds to wait for a reply from systemd-udevd.]:SECONDS'
}
(( $+functions[_udevadm_monitor] )) ||
_udevadm_monitor(){
_arguments \
'(-)'{-h,--help}'[Show help]' \
'(-)'{-V,--version}'[Show package version]' \
'(-k --kernel)'{-k,--kernel}'[Print the kernel uevents.]' \
'(-u --udev)'{-u,--udev}'[Print the udev event after the rule processing.]' \
'(-p --property)'{-p,--property}'[Also print the properties of the event.]' \
'(-s --subsystem-match)'{-s,--subsystem-match=}'[Filter events by subsystem/\[devtype\].]:SUBSYSTEM' \
'(-t --tag-match)'{-t,--tag-match=}'[Filter events by property.]:TAG'
}
(( $+functions[_udevadm_test] )) ||
_udevadm_test(){
_arguments \
'(-)'{-h,--help}'[Show help]' \
'(-)'{-V,--version}'[Show package version]' \
'--action=[The action string.]:actions:(add change remove move online offline bind unbind)' \
'(-N --resolve-names)'{-N,--resolve-names=}'[When to resolve names.]:resolve:(early late never)' \
'--subsystem=[The subsystem string.]' \
'(-D --extra-rules-dir=)'{-D,--extra-rules-dir=}'[Also load rules from the directory.]' \
'(-v --verbose)'{-v,--verbose}'[Show verbose logs.]' \
'--json=[Generate JSON output]:MODE:(pretty short off)' \
'*::devpath:_files -W /sys'
}
(( $+functions[_udevadm_test-builtin] )) ||
_udevadm_test-builtin(){
if (( CURRENT == 2 )); then
_arguments \
'(- *)'{-h,--help}'[Print help]' \
'(- *)'{-V,--version}'[Print version of the program]' \
'--action=[The action string.]:actions:(add change remove move online offline bind unbind)' \
'*::builtins:(blkid btrfs dissect_image factory_reset hwdb input_id keyboard kmod net_driver net_id net_setup_link path_id uaccess usb_id)'
elif (( CURRENT == 3 )); then
_arguments \
'--action=[The action string.]:actions:(add change remove move online offline bind unbind)' \
'(- *)--help[Print help text]' \
'*::syspath:_files -W /sys'
else
_arguments \
'--action=[The action string.]:actions:(add change remove move online offline bind unbind)' \
'(- *)--help[Print help text]'
fi
}
(( $+functions[_udevadm_verify] )) ||
_udevadm_verify(){
_arguments \
'(- *)'{-h,--help}'[Show help]' \
'(- *)'{-V,--version}'[Show package version]' \
'(-N --resolve-names)'{-N,--resolve-names=}'[When to resolve names.]:resolve:(early late never)' \
'--root=[Operate on catalog hierarchy under specified directory]:directories:_directories' \
--no-summary'[Do not show summary.]' \
--no-style'[Ignore style issues.]' \
'*::files:_files'
}
(( $+functions[_udevadm_cat] )) ||
_udevadm_cat(){
_arguments \
'(- *)'{-h,--help}'[Show help]' \
'(- *)'{-V,--version}'[Show package version]' \
'--root=[Operate on catalog hierarchy under specified directory]:directories:_directories' \
--tldr'[Skip comments and empty lines.]' \
--config'[Show udev.conf.]' \
'*::files:_files'
}
(( $+functions[_udevadm_wait] )) ||
_udevadm_wait(){
_arguments \
'(- *)'{-h,--help}'[Print help]' \
'(- *)'{-V,--version}'[Print version of the program]' \
'--timeout=[Maximum number of seconds to wait for the devices being created.]:SEC' \
'--initialized=[Wait for devices being initialized by systemd-udevd.]:boolean:(yes no)' \
'--removed[Wait for devices being removed.]' \
'--settle[Also wait for udev queue being empty.]' \
'*::devpath:_files -W /dev'
}
(( $+functions[_udevadm_lock] )) ||
_udevadm_lock(){
_arguments \
'(- *)'{-h,--help}'[Print help]' \
'(- *)'{-V,--version}'[Print version of the program]' \
'(-t --timeout)'{-t,--timeout=}'[Maximum number of seconds to wait for the devices being locked.]:SECS' \
'(-d --device)'{-d,--device=}'[Block device to lock.]:DEVICE' \
'(-b --backing)'{-b,--backing=}'[File whose backing block device to lock.]:FILE' \
'(-p --print)'{-p,--print}'[Only show which block device the lock would be taken on.]'
}
(( $+functions[_udevadm_mounts] )) ||
_udevadm_mounts(){
local dev_tmp dpath_tmp mp_tmp mline
tmp=( "${(@f)$(< /proc/self/mounts)}" )
dev_tmp=( "${(@)${(@)tmp%% *}:#none}" )
mp_tmp=( "${(@)${(@)tmp#* }%% *}" )
local MATCH
mp_tmp=("${(@q)mp_tmp//(#m)\\[0-7](#c3)/${(#)$(( 8#${MATCH[2,-1]} ))}}")
dpath_tmp=( "${(@Mq)dev_tmp:#/*}" )
dev_tmp=( "${(@q)dev_tmp:#/*}" )
_alternative \
'device-paths: device path:compadd -a dpath_tmp' \
'directories:mount point:compadd -a mp_tmp'
}
(( $+functions[_udevadm_commands] )) ||
_udevadm_commands(){
local -a _udevadm_cmds
_udevadm_cmds=(
'info:query sysfs or the udev database'
'trigger:request events from the kernel'
'settle:wait for the event queue to finish'
'control:control the udev daemon'
'monitor:listen to kernel and udev events'
'test:test an event run'
'test-builtin:test a built-in command'
'verify:verify udev rules files'
'wait:wait for devices or device symlinks being created'
'lock:lock a block device and run a command'
)
if ((CURRENT == 1)); then
_describe -t commands 'udevadm commands' _udevadm_cmds
else
local curcontext="$curcontext"
cmd="${${_udevadm_cmds[(r)$words[1]:*]%%:*}}"
if (($#cmd)); then
if (( $+functions[_udevadm_$cmd] )); then
_udevadm_$cmd
else
_message "no options for $cmd"
fi
else
_message "no more options"
fi
fi
}
_arguments \
'--debug[Print debug messages to stderr]' \
'(- *)--version[Print version number]' \
'(- *)--help[Print help text]' \
'*::udevadm commands:_udevadm_commands'
|