Словарь схемы 0.16.25 (7250 строк), ru.json, ручные правки падежей, перевод ключа name только в меню, release.sh для выкладки в релиз current. Claude-Session: https://claude.ai/code/session_01BFaqS6mH9sa99RWghq2j46
43 строки
2.4 KiB
Bash
Исполняемый файл
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'))"
|