85 lines
1.7 KiB
Bash
Executable File
85 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
BASE_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PY="$BASE_DIR/.venv/bin/python3"
|
|
|
|
usage() {
|
|
cat <<'EOF'
|
|
Usage:
|
|
./cli.sh columns [--token TOKEN] [--timeout SEC]
|
|
./cli.sh loxone [--controller-host HOST]
|
|
./cli.sh wb-rules [--controller-host HOST]
|
|
./cli.sh wb-install [--station-id ID]
|
|
./cli.sh web [--token TOKEN] [--host HOST] [--port PORT]
|
|
|
|
Global options may be placed before or after the command.
|
|
EOF
|
|
}
|
|
|
|
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" || "${1:-}" == "help" || $# -eq 0 ]]; then
|
|
usage
|
|
if [[ $# -eq 0 ]]; then
|
|
exit 1
|
|
fi
|
|
exit 0
|
|
fi
|
|
|
|
if [[ ! -x "$PY" ]]; then
|
|
echo "Python venv not found: $BASE_DIR/.venv/bin/python3"
|
|
echo "Run ./install.sh first"
|
|
exit 3
|
|
fi
|
|
|
|
GLOBAL_ARGS=()
|
|
POSITIONAL=()
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
--token)
|
|
if [[ $# -lt 2 ]]; then
|
|
echo "Missing value for --token"
|
|
exit 1
|
|
fi
|
|
GLOBAL_ARGS+=("$1" "$2")
|
|
shift 2
|
|
;;
|
|
-h|--help|help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
POSITIONAL+=("$1")
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
CMD="${POSITIONAL[0]:-}"
|
|
if [[ -z "$CMD" ]]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
REST_ARGS=("${POSITIONAL[@]:1}")
|
|
|
|
case "$CMD" in
|
|
columns)
|
|
exec "$PY" "$BASE_DIR/alice_plugin.py" "${GLOBAL_ARGS[@]}" stations-refresh "${REST_ARGS[@]}"
|
|
;;
|
|
loxone)
|
|
exec "$PY" "$BASE_DIR/alice_plugin.py" "${GLOBAL_ARGS[@]}" templates-loxone "${REST_ARGS[@]}"
|
|
;;
|
|
wb-rules)
|
|
exec "$PY" "$BASE_DIR/alice_plugin.py" "${GLOBAL_ARGS[@]}" templates-wb-rules "${REST_ARGS[@]}"
|
|
;;
|
|
wb-install)
|
|
exec "$PY" "$BASE_DIR/alice_plugin.py" "${GLOBAL_ARGS[@]}" wb-install "${REST_ARGS[@]}"
|
|
;;
|
|
web)
|
|
exec "$PY" "$BASE_DIR/alice_plugin.py" "${GLOBAL_ARGS[@]}" web "${REST_ARGS[@]}"
|
|
;;
|
|
*)
|
|
echo "Unknown command: $CMD"
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|