summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClint Adams <clint@users.sourceforge.net>2007-09-30 11:39:54 +0000
committerClint Adams <clint@users.sourceforge.net>2007-09-30 11:39:54 +0000
commit855d0d2d66af027087143b3a12a205546ace85ab (patch)
treeef1eecb085995a3575bf9f1bf9640e7b2cbb22c3
parent75bf795d602decda0137e12540c881db25bffb4a (diff)
downloadzsh-855d0d2d66af027087143b3a12a205546ace85ab.tar.gz
zsh-855d0d2d66af027087143b3a12a205546ace85ab.zip
23863: completion for lsusb.
-rw-r--r--ChangeLog3
-rw-r--r--Completion/Linux/Command/_lsusb31
2 files changed, 34 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index dc34e0a78..992a7735d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2007-09-30 Clint Adams <clint@zsh.org>
+ * 23863: Completion/Linux/Command/_lsusb: completion
+ for lsusb.
+
* 23863: Completion/Unix/Command/_git: remove all
global variables.
diff --git a/Completion/Linux/Command/_lsusb b/Completion/Linux/Command/_lsusb
new file mode 100644
index 000000000..37701acd5
--- /dev/null
+++ b/Completion/Linux/Command/_lsusb
@@ -0,0 +1,31 @@
+#compdef lsusb
+
+local context state line usbidsline vendorid pair
+typeset -A opt_args
+
+_arguments \
+ '(-v --verbose)'{-v,--verbose}'[be verbose]' \
+ '-s:bus and/or devnum to show:' \
+ '-d:vendor and product to show:->vendorproduct' \
+ '-D:device to show:_files' \
+ '-t[dump the physical USB device hierarchy as a tree]' \
+ '(-V --version)'{-V,--version}'[print version info and exit]' && return 0
+
+ if [[ ${+_lsusb_vendors} -eq 0 ]]; then
+ typeset -A _lsusb_vendors _lsusb_devices
+ while IFS="" read usbidsline
+ do
+ case "$usbidsline" in
+ ((#b)([0-9a-f]##) ##(*))
+ vendorid="$match[1]"
+ _lsusb_vendors[$vendorid]="$match[2]"
+ ;;
+ ( (#b)([0-9a-f]##) ##(*)))
+ pair="$vendorid:$match[1]"
+ _lsusb_devices[${pair}]="$match[2]"
+ ;;
+ esac
+ done < <(zcat /var/lib/usbutils/usb.ids)
+fi
+
+compadd -k _lsusb_devices