#!/usr/bin/env bash # Автоцикл: самоаудит -> (опц.) подкачка источников -> коммит изменений -> пуш в Gitea и GitHub. # Использование: bash tools/autocommit.sh [--feed] [--quiet] set -uo pipefail cd "$(dirname "$0")/.." || exit 1 PY="/c/Users/User/AppData/Local/Programs/Python/Python311/python.exe" FEED=0 for a in "$@"; do [ "$a" = "--feed" ] && FEED=1; done export PYTHONIOENCODING=utf-8 unset PYTHONPATH STAMP="$(date -u +%Y-%m-%dT%H:%M:%SZ)" LOG="data/autocommit.log" mkdir -p data echo "== $STAMP ==" >> "$LOG" # 1) подкачка новых записей (необязательно) if [ "$FEED" = "1" ]; then "$PY" -m omni feed --limit 8 --workers 6 >> "$LOG" 2>&1 echo "feed_exit=$?" >> "$LOG" fi # 2) самоаудит + REPORT.md "$PY" tools/selfcheck.py >> "$LOG" 2>&1 echo "selfcheck_exit=$?" >> "$LOG" # 3) коммит, только если есть реальные изменения кода/отчёта git add -A if git diff --cached --quiet; then echo "no_changes" >> "$LOG" exit 0 fi STATS="$(tail -1 "$LOG" | sed 's/^/ /')" git commit -q -m "chore(auto): самоаудит $STAMP —$(printf '%s' "$STATS" | cut -c1-160)" COMMIT="$(git rev-parse --short HEAD)" echo "commit=$COMMIT" >> "$LOG" # 4) пуш в оба ремоута if git push -q gitea main >> "$LOG" 2>&1; then echo "gitea=OK" >> "$LOG"; else echo "gitea=FAIL" >> "$LOG"; fi if [ -x /c/Users/User/tmp/push_omni_gh.sh ] || [ -f /c/Users/User/tmp/push_omni_gh.sh ]; then if bash /c/Users/User/tmp/push_omni_gh.sh >> "$LOG" 2>&1; then echo "github=OK" >> "$LOG"; else echo "github=FAIL" >> "$LOG"; fi fi echo "done $COMMIT" >> "$LOG" echo "autocommit $COMMIT"