#!/usr/bin/env bash set -euo pipefail root_dir="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)" container="${DISCOURSE_CONTAINER:-app}" site_url="${DISCOURSE_URL:-https://forum.itosm.co.kr}" plugin_path="/var/www/discourse/plugins/itosm-korean-localization" report="$(mktemp)" trap 'rm -f "$report"' EXIT # 파일 존재뿐 아니라 저장소 원본과 실행 파일이 일치하는지 검사합니다. for file in plugin.rb config/locales/client.ko.yml config/locales/server.ko.yml; do expected="$(sha256sum "$root_dir/$file" | cut -d ' ' -f 1)" actual="$(docker exec "$container" sha256sum "$plugin_path/$file" | cut -d ' ' -f 1)" [[ "$expected" == "$actual" ]] || { echo "운영 파일 불일치: $file" >&2; exit 1; } done docker exec -i -u discourse -e RAILS_ENV=production -w /var/www/discourse \ "$container" bundle exec rails runner - < "$root_dir/scripts/verify_runtime.rb" > "$report" if [[ "${1:-}" != "--runtime-only" ]]; then # 별도 Rails 검사와 실제 웹 프로세스가 제공하는 번역 묶음을 함께 대조합니다. # 재시작을 빠뜨려 예전 영어 번역을 계속 제공하는 경우도 실패로 처리합니다. ruby "$root_dir/scripts/verify_web.rb" "$site_url" "$report" fi echo "운영 파일과 한국어 번역 검사 통과"