49 lines
1.7 KiB
Bash
49 lines
1.7 KiB
Bash
#!/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" |