Добавлено обновление wiki в Makefile и синхронизация ветки master в workflow
This commit is contained in:
@@ -3,6 +3,7 @@ name: "Wiki Sync"
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
jobs:
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user