#!/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'))"