request-usb: init; ugly helper for attaching usb to crosvm
This commit is contained in:
parent
dc583da67e
commit
927db90791
1 changed files with 63 additions and 0 deletions
63
pkgs/request-usb/package.nix
Normal file
63
pkgs/request-usb/package.nix
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
{ writeShellScriptBin }:
|
||||||
|
|
||||||
|
writeShellScriptBin "request-usb" ''
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
parseArgs() {
|
||||||
|
N_CONSTRAINTS=0
|
||||||
|
while [[ -n "''${1:-}" ]]; do
|
||||||
|
local x=
|
||||||
|
case "$1" in
|
||||||
|
"--manufacturer" )
|
||||||
|
N_CONSTRAINTS=$(( $N_CONSTRAINTS + 1 ))
|
||||||
|
MANUFACTURER="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
"--manufacturer="* )
|
||||||
|
N_CONSTRAINTS=$(( $N_CONSTRAINTS + 1 ))
|
||||||
|
MANUFACTURER=''${1#--manufacturer=}
|
||||||
|
shift 1
|
||||||
|
;;
|
||||||
|
"--" )
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
printUsage
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
printUsage() {
|
||||||
|
echo "$(caller)" >&2
|
||||||
|
echo "Usage: request-usb [--manufacturer=MANUFACTURER]" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
findFirst() {
|
||||||
|
local d=
|
||||||
|
|
||||||
|
[[ ''${N_CONSTRAINTS:-0} != 0 ]] || printUsage
|
||||||
|
for d in /sys/bus/usb/devices/* ; do
|
||||||
|
[[ -e "$d/manufacturer" ]] || continue
|
||||||
|
[[ -e "$d/uevent" ]] || continue
|
||||||
|
|
||||||
|
read -r x < "$d/manufacturer"
|
||||||
|
if ! [[ -z "''${MANUFACTURER:-}" || "$MANUFACTURER" = "$x" ]] ; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# NOTE: Other predicates here
|
||||||
|
# ...
|
||||||
|
|
||||||
|
echo -n "$d"
|
||||||
|
return
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
parseArgs $@
|
||||||
|
d=$(findFirst)
|
||||||
|
export $( cat "$d/uevent" )
|
||||||
|
sudo chown "$USER" /dev/bus/usb/"$BUSNUM"/"$DEVNUM"
|
||||||
|
echo -n /dev/bus/usb/"$BUSNUM"/"$DEVNUM"
|
||||||
|
''
|
||||||
Loading…
Add table
Add a link
Reference in a new issue