42 lines
1.5 KiB
Bash
42 lines
1.5 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
|
||
|
|
cd /app
|
||
|
|
|
||
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
|
|
export WORLDBENCH_ROOT="${WORLDBENCH_ROOT:-"$(dirname "$SCRIPT_DIR")"}"
|
||
|
|
|
||
|
|
# Translate legacy CLI args into WORLDBENCH_* env vars.
|
||
|
|
TOOL_SETS=()
|
||
|
|
MCP_ARGS=()
|
||
|
|
while [[ $# -gt 0 ]]; do
|
||
|
|
case $1 in
|
||
|
|
--root) export WORLDBENCH_ROOT="$2"; shift 2;;
|
||
|
|
--current-time) export WORLDBENCH_CURRENT_TIME="$2"; shift 2;;
|
||
|
|
--tool-sets) shift;
|
||
|
|
while [[ $# -gt 0 && ! "$1" =~ ^-- ]]; do
|
||
|
|
TOOL_SETS+=("$1"); shift;
|
||
|
|
done
|
||
|
|
export WORLDBENCH_TOOL_SETS="${TOOL_SETS[*]}";;
|
||
|
|
--method) MCP_ARGS+=(--method "$2"); shift 2;;
|
||
|
|
--port) MCP_ARGS+=(--port "$2"); shift 2;;
|
||
|
|
*) shift;;
|
||
|
|
esac
|
||
|
|
done
|
||
|
|
|
||
|
|
export OUTPUTDIR="${OUTPUTDIR:-${WORLDBENCH_ROOT}/output_data}"
|
||
|
|
export INPUTDIR="${INPUTDIR:-${WORLDBENCH_ROOT}/setup_data/entities}"
|
||
|
|
mkdir -p "$OUTPUTDIR"
|
||
|
|
|
||
|
|
# /workdir is normally created by docker/Dockerfile, but boot paths that
|
||
|
|
# don't run that Dockerfile (e.g. local dev, custom base images) need it too.
|
||
|
|
# mkdir is a no-op when it already exists.
|
||
|
|
mkdir -p /workdir
|
||
|
|
if [ "$(id -u)" = "0" ] && id model >/dev/null 2>&1; then
|
||
|
|
chown -R model:model /workdir
|
||
|
|
fi
|
||
|
|
|
||
|
|
# `uv run` needs to resolve the workspace pyproject; the container's WORKDIR is
|
||
|
|
# the task's runtime workdir (e.g. /workdir or /workspace), not the app root.
|
||
|
|
cd "$WORLDBENCH_ROOT"
|
||
|
|
uv run --package mcp-proxy mcp-proxy mcp "${MCP_ARGS[@]}"
|