#!/usr/bin/env bash set -euo pipefail # Require a local native Linux daemon, not SSH/TCP or Docker Desktop's VM. [[ $(uname -s) == Linux ]] || { echo 'Local Linux Docker required.' >&2; exit 1; } if [[ -n ${DOCKER_CONTEXT:-} ]]; then endpoint=$(docker context inspect "$DOCKER_CONTEXT" --format '{{.Endpoints.docker.Host}}') elif [[ -n ${DOCKER_HOST:-} ]]; then endpoint=$DOCKER_HOST else endpoint=$(docker context inspect --format '{{.Endpoints.docker.Host}}') fi [[ $endpoint == unix://* ]] || { echo 'Remote Docker endpoints are unsupported.' >&2; exit 1; } os=$(docker info --format '{{.OperatingSystem}}') [[ $os != *"Docker Desktop"* ]] || { echo 'Docker Desktop USB mapping is unsupported.' >&2; exit 1; } # shellcheck source=.devcontainer/usb.sh source "$(dirname "${BASH_SOURCE[0]}")/usb.sh" output="$(dirname "${BASH_SOURCE[0]}")/compose.usb.yaml" tmp=$(mktemp "$output.tmp.XXXXXX") trap 'rm -f "$tmp"' EXIT generate_usb /sys/bus/usb/devices /dev/bus/usb > "$tmp" mv "$tmp" "$output"