Files
stalwart-webui-ru/release.sh
T
viktor 61ff14915b Русский перевод интерфейса и схемы, падежи, выкладка через релиз
Словарь схемы 0.16.25 (7250 строк), ru.json, ручные правки падежей,
перевод ключа name только в меню, release.sh для выкладки в релиз current.

Claude-Session: https://claude.ai/code/session_01BFaqS6mH9sa99RWghq2j46
2026-10-06 01:37:19 +09:00

43 строки
2.4 KiB
Bash
Исполняемый файл

#!/usr/bin/env bash
# Сборка и выкладка русской версии веб-интерфейса Stalwart в оформлении StackWorks.
#
# ./release.sh собрать словари, интерфейс и архив webui.zip, выложить в релиз Gitea «current»
#
# Stalwart берёт интерфейс по адресу из настройки x:Application.resourceUrl:
# https://git.stackworks.ru/viktor/stalwart-webui-ru/releases/download/current/webui.zip
# После выкладки на почтовом сервере нажать «Действия -> Обновить приложения» или
# выполнить x:Action/set {"@type":"UpdateApps"} (см. README.ru.md).
set -euo pipefail
cd "$(dirname "$0")"
python3 i18n-work/merge.py # part*.ru.json -> src/i18n/schema-ru.json и src/i18n/ru.json
npm run build
rm -f webui.zip
python3 -c "import shutil; shutil.make_archive('webui', 'zip', 'dist')"
ls -l webui.zip
T=$(python3 -c "
import json
d=json.load(open('$HOME/.claude.json'))
def f(o):
if isinstance(o,dict):
if 'gitea' in o.get('mcpServers',{}): return o['mcpServers']['gitea']
for v in o.values():
r=f(v)
if r: return r
print(list(f(d)['env'].values())[-1])")
API=https://git.stackworks.ru/api/v1/repos/viktor/stalwart-webui-ru
H="Authorization: token $T"
# релиз «current» с тегом current: создаём, если нет, иначе заменяем вложение
REL=$(curl -s -H "$H" "$API/releases/tags/current" | python3 -c "import json,sys;print(json.load(sys.stdin).get('id',''))" 2>/dev/null || true)
if [ -z "$REL" ]; then
REL=$(curl -s -H "$H" -H "Content-Type: application/json" -X POST "$API/releases" \
-d '{"tag_name":"current","target_commitish":"main","name":"Текущая сборка","body":"Архив webui.zip для Stalwart: русский язык и оформление StackWorks."}' \
| python3 -c "import json,sys;print(json.load(sys.stdin)['id'])")
fi
for A in $(curl -s -H "$H" "$API/releases/$REL/assets" | python3 -c "import json,sys;[print(a['id']) for a in json.load(sys.stdin) if a['name']=='webui.zip']"); do
curl -s -o /dev/null -H "$H" -X DELETE "$API/releases/$REL/assets/$A"
done
curl -s -H "$H" -F "attachment=@webui.zip" "$API/releases/$REL/assets?name=webui.zip" | python3 -c "import json,sys;d=json.load(sys.stdin);print('выложено:', d.get('browser_download_url'))"