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