55 lines
2.0 KiB
Bash
Executable File
55 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Compatibility wrapper for the Rust host provisioning command.
|
|
# Works from Linux/macOS as long as cargo is available.
|
|
#
|
|
# Serial usage:
|
|
# SERIAL_PORT=/dev/cu.usbserial-0001 toes-matter/scripts/provision-device.sh [device-id]
|
|
# SERIAL_PORT=/dev/cu.usbserial-0001 SERIAL_LOGIN=root SERIAL_PASSWORD=... toes-matter/scripts/provision-device.sh [device-id]
|
|
#
|
|
# Environment:
|
|
# CREDS_DIR Local output dir. Default: toes-matter/manufacturing/<device-id>/creds
|
|
# REMOTE_CREDS_DIR Remote creds dir. Default: /var/lib/toes-matter
|
|
# REMOTE_STATE_DIR Remote Matter state dir. Default: /var/lib/toes-matter/state
|
|
# SERVICE Optional service to restart. Default: toes-matter.service
|
|
# Set SERVICE= to skip restart.
|
|
# SERIAL_PORT Serial device, e.g. /dev/cu.usbserial-0001 or /dev/tty.usbserial-0001
|
|
# SERIAL_LOGIN Optional serial login username
|
|
# SERIAL_PASSWORD Optional serial login password
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
CRATE_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
|
|
if [[ -z "${SERIAL_PORT:-}" ]]; then
|
|
echo "Error: set SERIAL_PORT=/dev/cu.* (or /dev/tty.*)" >&2
|
|
exit 2
|
|
fi
|
|
|
|
if [[ $# -gt 1 ]]; then
|
|
echo "Usage: SERIAL_PORT=/dev/cu.* $0 [device-id]" >&2
|
|
exit 2
|
|
fi
|
|
|
|
DEVICE_ID="${1:-$(date +%Y%m%d-%H%M%S)}"
|
|
TARGET_ARGS=(--serial "$SERIAL_PORT" --device-id "$DEVICE_ID")
|
|
|
|
CREDS_DIR="${CREDS_DIR:-$CRATE_DIR/manufacturing/$DEVICE_ID/creds}"
|
|
REMOTE_CREDS_DIR="${REMOTE_CREDS_DIR:-/var/lib/toes-matter}"
|
|
REMOTE_STATE_DIR="${REMOTE_STATE_DIR:-/var/lib/toes-matter/state}"
|
|
SERVICE="${SERVICE-toes-matter.service}"
|
|
|
|
args=(
|
|
--creds-dir "$CREDS_DIR"
|
|
--remote-creds-dir "$REMOTE_CREDS_DIR"
|
|
--remote-state-dir "$REMOTE_STATE_DIR"
|
|
)
|
|
|
|
if [[ -z "$SERVICE" ]]; then
|
|
args+=(--no-restart)
|
|
else
|
|
args+=(--service "$SERVICE")
|
|
fi
|
|
|
|
exec cargo run --quiet --no-default-features --manifest-path "$CRATE_DIR/Cargo.toml" --bin toes-matter-credentials -- "${args[@]}" "${TARGET_ARGS[@]}"
|