Minecraft-Console-Client/tools/pull-translations.sh

67 lines
1.8 KiB
Bash
Raw Normal View History

#!/bin/bash
set -euo pipefail
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
CONFIG_FILE="$REPO_ROOT/crowdin.yml"
TMP_CONFIG=""
if [[ -z "${CROWDIN_PERSONAL_TOKEN:-}" && -n "${CROWDIN_TOKEN:-}" ]]; then
export CROWDIN_PERSONAL_TOKEN="$CROWDIN_TOKEN"
fi
if [[ ! -f "$CONFIG_FILE" ]]; then
echo "Error: crowdin.yml not found at $CONFIG_FILE" >&2
exit 1
fi
if [[ -z "${CROWDIN_PROJECT_ID:-}" ]]; then
echo "Error: CROWDIN_PROJECT_ID is not set" >&2
exit 1
fi
if [[ -z "${CROWDIN_PERSONAL_TOKEN:-}" ]]; then
echo "Error: CROWDIN_PERSONAL_TOKEN is not set" >&2
echo "Tip: the CI workflow stores this as CROWDIN_TOKEN and maps it to CROWDIN_PERSONAL_TOKEN." >&2
exit 1
fi
run_crowdin() {
"$@" download translations --all --config "$CONFIG_FILE"
}
cleanup() {
if [[ -n "$TMP_CONFIG" && -f "$TMP_CONFIG" ]]; then
rm -f "$TMP_CONFIG"
fi
}
trap cleanup EXIT
make_temp_config() {
local base_path="$1"
TMP_CONFIG="$(mktemp "$REPO_ROOT/.crowdin.local.XXXXXX.yml")"
sed "s#\"base_path\": \"/\"#\"base_path\": \"$base_path\"#" "$CONFIG_FILE" > "$TMP_CONFIG"
}
cd "$REPO_ROOT"
if command -v crowdin >/dev/null 2>&1; then
echo "Using local Crowdin CLI"
make_temp_config "$REPO_ROOT"
crowdin download translations --all --config "$TMP_CONFIG"
elif command -v docker >/dev/null 2>&1; then
echo "Using Crowdin CLI via Docker"
make_temp_config "/work"
docker run --rm \
--entrypoint crowdin \
-e CROWDIN_PROJECT_ID \
-e CROWDIN_PERSONAL_TOKEN \
-v "$REPO_ROOT":/work \
-w /work \
crowdin/cli:latest \
download translations --all --config /work/"$(basename "$TMP_CONFIG")"
else
echo "Error: neither 'crowdin' nor 'docker' is available" >&2
echo "Install Crowdin CLI or Docker and try again." >&2
exit 1
fi