Files

30 lines
1.1 KiB
Bash

#!/usr/bin/env bash
# Initialization supplies the real host sysfs and USB device paths.
generate_usb() {
local sys=$1 dev=$2 entry vendor product bus number node
local -a nodes=()
for entry in "$sys"/*; do
[[ -r $entry/idVendor && -r $entry/idProduct ]] || continue
read -r vendor < "$entry/idVendor" || continue
read -r product < "$entry/idProduct" || continue
[[ $vendor == 046d ]] || continue
case $product in c222|c225|c227|c22b|c22d|c22e) ;; *) continue ;; esac
[[ -r $entry/busnum && -r $entry/devnum ]] || continue
read -r bus < "$entry/busnum" || continue
read -r number < "$entry/devnum" || continue
[[ $bus =~ ^[0-9]{1,3}$ && $number =~ ^[0-9]{1,3}$ ]] || continue
printf -v node '%s/%03d/%03d' "$dev" "$((10#$bus))" "$((10#$number))"
[[ -c $node ]] || continue
nodes+=("$node")
done
printf 'services:\n dev:\n'
if ((${#nodes[@]})); then
printf ' devices:\n'
for node in "${nodes[@]}"; do
printf ' - "%s:%s:rw"\n' "$node" "$node"
done
else
printf ' devices: []\n'
fi
}