Добавлено обновление wiki в Makefile и синхронизация ветки master в workflow

This commit is contained in:
Dmitriy Fofanov
2026-02-23 14:26:03 +03:00
parent cffa5affea
commit 1a6c344c6a
2 changed files with 56 additions and 1 deletions
+1
View File
@@ -3,6 +3,7 @@ name: "Wiki Sync"
on:
push:
branches:
- master
- main
jobs:
+55 -1
View File
@@ -37,7 +37,7 @@ endif
# Основные команды
# ============================================================================
.PHONY: all build run clean test lint deps tidy fmt vet help clean-results ensure-build-dir
.PHONY: all build run clean test lint deps tidy fmt vet help clean-results ensure-build-dir wiki-update
.PHONY: release-tag release-tag-delete ci-release ci-check release-local
## Сборка + тесты (цель по умолчанию при явном вызове make all)
@@ -513,6 +513,57 @@ endif
release-local: checksum
$(info >>> Локальный релиз готов в $(BUILD_DIR)/release/)
# ============================================================================
# Wiki — синхронизация локальной папки wiki/ в Gitea Wiki
# ============================================================================
## Синхронизировать папку wiki/ в удалённый wiki-репозиторий (<origin>.wiki.git)
ifeq ($(OS),Windows_NT)
wiki-update:
$(info >>> Синхронизация wiki в Gitea...)
if (-Not (Test-Path 'wiki')) { throw 'Папка wiki/ не найдена.' }
$$origin = git remote get-url origin
if (-not $$origin) { throw 'Не найден remote origin.' }
if ($$origin -match '\.git$$') { $$wikiUrl = $$origin -replace '\.git$$', '.wiki.git' } else { $$wikiUrl = "$$origin.wiki.git" }
$$tmp = '$(BUILD_DIR)\\.wiki-sync'
Remove-Item -Recurse -Force $$tmp -ErrorAction SilentlyContinue
New-Item -ItemType Directory -Force '$(BUILD_DIR)' | Out-Null
git clone --depth 1 $$wikiUrl $$tmp
robocopy wiki $$tmp /MIR /XD .git | Out-Null; if ($$LASTEXITCODE -gt 7) { throw 'Ошибка robocopy при синхронизации wiki.' }
Push-Location $$tmp
git add -A
if (git diff --cached --quiet) {
$(info >>> Изменений в wiki нет.)
Pop-Location
} else {
git config user.name "wiki-sync-bot"
git config user.email "wiki-sync@local"
git commit -m "docs(wiki): sync from main repo"
git push origin HEAD
Pop-Location
$(info >>> Wiki успешно обновлена.)
}
else
wiki-update:
$(info >>> Синхронизация wiki в Gitea...)
@test -d wiki || (echo "Папка wiki/ не найдена." && exit 1)
@ORIGIN=$$(git remote get-url origin); \
if [ -z "$$ORIGIN" ]; then echo "Не найден remote origin."; exit 1; fi; \
if echo "$$ORIGIN" | grep -q '\.git$$'; then WIKI_URL=$$(echo "$$ORIGIN" | sed 's/\.git$$/.wiki.git/'); else WIKI_URL="$$ORIGIN.wiki.git"; fi; \
TMP_DIR="$(BUILD_DIR)/.wiki-sync"; \
rm -rf "$$TMP_DIR"; mkdir -p "$(BUILD_DIR)"; \
git clone --depth 1 "$$WIKI_URL" "$$TMP_DIR"; \
rsync -a --delete --exclude '.git/' wiki/ "$$TMP_DIR"/; \
cd "$$TMP_DIR"; \
git add -A; \
if git diff --cached --quiet; then echo ">>> Изменений в wiki нет."; exit 0; fi; \
git config user.name "wiki-sync-bot"; \
git config user.email "wiki-sync@local"; \
git commit -m "docs(wiki): sync from main repo"; \
git push origin HEAD; \
echo ">>> Wiki успешно обновлена."
endif
# ============================================================================
# Справка
# ============================================================================
@@ -563,5 +614,8 @@ help:
$(info GITEA_TOKEN=<токен> обязателен для ci-release)
$(info make release-tag-delete VERSION=X.Y.Z Удалить ошибочный тег)
$(info )
$(info Wiki:)
$(info make wiki-update Синхронизировать локальную папку wiki/ в Gitea Wiki)
$(info )
.DEFAULT_GOAL := help