#!/usr/bin/env bash # Синхронизация main на kalinamall / home / github: свой README и только свои readme-шаблоны. set -Eeuo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT" CHECK_SECRETS="${CHECK_SECRETS:-$HOME/Documents/Cursor/Projects/Answer.and.other.shit/guides/init.new.comps/scripts/check-no-secrets.sh}" CHECK_GITHUB="${CHECK_GITHUB:-$ROOT/scripts/check-github-clean.sh}" sync_remote() { local remote=$1 local readme_template=$2 local branch="sync-${remote}" shift 2 local -a remove=( "$@" ) git fetch "$remote" git checkout -B "$branch" "${remote}/main" git checkout main -- . cp "$readme_template" README.md for f in "${remove[@]}"; do if [[ -e $f ]]; then rm -rf "$f" fi done rm -rf .cursor .cursorignore git add -u . git add README.md if git diff --cached --quiet; then echo "[push-remotes] $remote: без изменений" else git commit -m "chore: sync $remote (README и файлы зеркала)" fi if [[ $remote == github ]]; then if [[ -f $CHECK_GITHUB ]]; then bash "$CHECK_GITHUB" fi if [[ -f $CHECK_SECRETS ]]; then bash "$CHECK_SECRETS" github fi fi git push "$remote" "${branch}:main" git checkout main git branch -D "$branch" } echo "[push-remotes] kalinamall" sync_remote kalinamall "$ROOT/scripts/readme/kalinamall.md" \ scripts/readme/github.md \ scripts/readme/home.md echo "[push-remotes] home" sync_remote home "$ROOT/scripts/readme/home.md" \ scripts/readme/github.md \ scripts/readme/kalinamall.md \ scripts/push-remotes.sh \ scripts/check-github-clean.sh echo "[push-remotes] github" sync_remote github "$ROOT/scripts/readme/github.md" \ scripts/readme/kalinamall.md \ scripts/readme/home.md \ scripts/push-remotes.sh \ scripts/check-github-clean.sh cp "$ROOT/scripts/readme/kalinamall.md" README.md git add README.md if ! git diff --cached --quiet; then git commit -m "docs: README kalinamall (рабочая копия main)" fi echo "[push-remotes] готово."