Files

23 lines
1007 B
Bash
Raw Permalink Normal View History

#!/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"