| #!/usr/bin/env bash |
| |
| set -euo pipefail |
|
|
| LT_HOME="${LANGUAGETOOL_HOME:-/opt/languagetool}" |
| LT_PORT="${LANGUAGETOOL_PORT:-8010}" |
| LT_JAVA_OPTS="${LANGUAGETOOL_JAVA_OPTS:--Xms256m -Xmx1024m}" |
|
|
| start_languagetool() { |
| if [[ "${LANGUAGE_TOOL_EMBEDDED:-true}" != "true" ]]; then |
| echo "[rewrite-api] Embedded LanguageTool disabled" |
| return 0 |
| fi |
| if [[ ! -f "${LT_HOME}/languagetool-server.jar" ]]; then |
| echo "[rewrite-api] LanguageTool jar not found; rewrites will use mechanics cleanup only" |
| return 0 |
| fi |
|
|
| echo "[rewrite-api] Starting LanguageTool on :${LT_PORT} ..." |
| |
| java ${LT_JAVA_OPTS} -cp "${LT_HOME}/languagetool-server.jar" \ |
| org.languagetool.server.HTTPServer \ |
| --port "${LT_PORT}" \ |
| --public \ |
| --allow-origin "*" \ |
| >/tmp/languagetool.log 2>&1 & |
| echo $! >/tmp/languagetool.pid |
|
|
| export LANGUAGE_TOOL_URL="${LANGUAGE_TOOL_URL:-http://127.0.0.1:${LT_PORT}}" |
| export LANGUAGE_TOOL_ENABLED="${LANGUAGE_TOOL_ENABLED:-true}" |
|
|
| for i in $(seq 1 90); do |
| if curl -fsS "http://127.0.0.1:${LT_PORT}/v2/languages" >/dev/null 2>&1; then |
| echo "[rewrite-api] LanguageTool HTTP up (attempt ${i}) — prewarming check..." |
| curl -fsS -X POST "http://127.0.0.1:${LT_PORT}/v2/check" \ |
| --data-urlencode "language=en-US" \ |
| --data-urlencode "text=She go to the store yesterday." \ |
| >/dev/null 2>&1 || true |
| echo "[rewrite-api] LanguageTool ready" |
| return 0 |
| fi |
| sleep 2 |
| done |
| echo "[rewrite-api] WARNING: LanguageTool did not become ready" |
| } |
|
|
| start_languagetool |
|
|
| HOST="${HOST:-0.0.0.0}" |
| PORT="${PORT:-7860}" |
| exec uvicorn app.main:app --host "${HOST}" --port "${PORT}" |