Files

68 lines
1.9 KiB
Bash

#!/bin/bash
# Публикация wiki/ в Gitea Wiki
#
# Способ 1 — токен (рекомендуется):
# export GITEA_TOKEN=ваш_токен
#
# Способ 2 — логин и пароль (не передавайте в чат, только в терминале):
# export GITEA_USER=логин
# export GITEA_PASSWORD=пароль
#
# bash scripts/push-wiki.sh
set -euo pipefail
GITEA_WIKI_URL="${GITEA_WIKI_URL:-https://git.evilfox.cc/test/shop10.wiki.git}"
REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
WIKI_SRC="${REPO_ROOT}/wiki"
TMPDIR="${TMPDIR:-/tmp}/shop-wiki-$$"
if [ ! -d "$WIKI_SRC" ]; then
echo "Нет каталога wiki/"
exit 1
fi
if [ -z "${GITEA_TOKEN:-}" ] && { [ -z "${GITEA_USER:-}" ] || [ -z "${GITEA_PASSWORD:-}" ]; }; then
echo "Задайте GITEA_TOKEN или пару GITEA_USER + GITEA_PASSWORD"
exit 1
fi
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
HOST_PATH="${GITEA_WIKI_URL#https://}"
HOST_PATH="${HOST_PATH#http://}"
if [ -n "${GITEA_TOKEN:-}" ]; then
CLONE_URL="https://${GITEA_TOKEN}@${HOST_PATH}"
else
# URL-encode не делаем — пароль без спецсимволов; иначе используйте токен
CLONE_URL="https://${GITEA_USER}:${GITEA_PASSWORD}@${HOST_PATH}"
fi
mkdir -p "$TMPDIR"
cd "$TMPDIR"
if git clone "$CLONE_URL" . 2>/dev/null; then
echo "Wiki репозиторий склонирован."
else
echo "Инициализация нового wiki репозитория..."
git init -b main
git remote add origin "$CLONE_URL"
fi
rsync -a --delete "${WIKI_SRC}/" ./
git add -A
if git diff --staged --quiet 2>/dev/null; then
echo "Wiki без изменений."
exit 0
fi
git config user.email "wiki@shop.local"
git config user.name "Shop Wiki"
git commit -m "docs: установка Docker и без Docker (v0.10.0)"
git push -u origin main
echo ""
echo "Готово: https://git.evilfox.cc/test/shop10/wiki"