Add autocompile.sh
This commit is contained in:
parent
29aeee647c
commit
1ec185c2ff
1 changed files with 127 additions and 0 deletions
127
autocompile.sh
Normal file
127
autocompile.sh
Normal file
|
|
@ -0,0 +1,127 @@
|
||||||
|
#!/bin/bash
|
||||||
|
TEX_DOSYASI="${1:-test.tex}"
|
||||||
|
PDF_DOSYASI="${TEX_DOSYASI%.tex}.pdf"
|
||||||
|
export DISPLAY=:0
|
||||||
|
|
||||||
|
# 1. OTOMATİK GÖNDERME (PUSH) FONKSİYONU
|
||||||
|
cleanup_and_push() {
|
||||||
|
echo -e '\n🛑 İzleme durduruldu.'
|
||||||
|
# Eğer bir Git deposunun içindeysek (örneğin nonmarkov klasörü), otomatik push yap
|
||||||
|
if git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
|
||||||
|
echo "☁️ Değişiklikler Forgejo'ya gönderiliyor..."
|
||||||
|
# Hem kodu hem de PDF'i ekle ki arkadaşların site üzerinden PDF okuyabilsin
|
||||||
|
git add *.tex "$PDF_DOSYASI" 2>/dev/null
|
||||||
|
# O anki tarih ve saat ile otomatik commit mesajı oluştur
|
||||||
|
git commit -m "Oto-Kayıt: $(date '+%Y-%m-%d %H:%M:%S')"
|
||||||
|
if timeout 10 git push origin main; then
|
||||||
|
echo "✅ Kodlar ve PDF sunucuya başarıyla işlendi!"
|
||||||
|
else
|
||||||
|
echo "⚠️ Push başarısız — internet yok ya da firewall engelliyor."
|
||||||
|
echo " Değişiklikler yerelde commit edildi, bağlantı düzelince 'git push origin main' ile gönderebilirsin."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo 'X11 arka planda sessizce bekliyor. Görüşmek üzere!'
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
# Ctrl+C'ye basıldığında doğrudan çıkmak yerine yukarıdaki fonksiyonu çalıştır
|
||||||
|
trap cleanup_and_push SIGINT
|
||||||
|
|
||||||
|
# 2. OTOMATİK ÇEKME (PULL) - Sen yokken web'den veya arkadaştan gelenleri al
|
||||||
|
if git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
|
||||||
|
echo "🔄 Sunucudaki son değişiklikler kontrol ediliyor (Auto-pull)..."
|
||||||
|
if ! timeout 10 git pull origin main; then
|
||||||
|
echo "⚠️ Sunucuya ulaşılamadı (internet/firewall sorunu olabilir). Yerel dosyalarla devam ediliyor..."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Eski evince pencerelerini temizle
|
||||||
|
pkill -f evince 2>/dev/null
|
||||||
|
|
||||||
|
# 4. X11 CHECK
|
||||||
|
if ! pgrep -f "termux-x11" > /dev/null; then
|
||||||
|
echo "🖥️ Starting X11..."
|
||||||
|
pkill -f fluxbox 2>/dev/null
|
||||||
|
termux-x11 :0 > /dev/null 2>&1 &
|
||||||
|
sleep 3
|
||||||
|
if ! pgrep -f "termux-x11" > /dev/null; then
|
||||||
|
echo "❌ ERROR: X11 failed to start."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "✅ X11 started."
|
||||||
|
else
|
||||||
|
echo "🔄 X11 is already active."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 5. FLUXBOX CHECK
|
||||||
|
if ! pgrep -f "fluxbox" > /dev/null; then
|
||||||
|
echo "🪟 Starting window manager..."
|
||||||
|
fluxbox > /dev/null 2>&1 &
|
||||||
|
sleep 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 6. TEMPLATE CREATOR
|
||||||
|
if [ ! -f "$TEX_DOSYASI" ]; then
|
||||||
|
echo "📄 '$TEX_DOSYASI' not found. Creating template..."
|
||||||
|
cat << 'TEMPLATE' > "$TEX_DOSYASI"
|
||||||
|
\documentclass{article}
|
||||||
|
\usepackage{amsmath}
|
||||||
|
\usepackage{physics}
|
||||||
|
\begin{document}
|
||||||
|
author:Demircan
|
||||||
|
\end{document}
|
||||||
|
TEMPLATE
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 7. INITIAL COMPILE
|
||||||
|
echo "⚙️ Compiling..."
|
||||||
|
pdflatex -interaction=nonstopmode "$TEX_DOSYASI" > compile_log.txt 2>&1
|
||||||
|
if [ ! -f "$PDF_DOSYASI" ]; then
|
||||||
|
echo "❌ ERROR: LaTeX compilation crashed!"
|
||||||
|
grep -A 3 "^!" compile_log.txt
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 8. OPEN PDF AND MAXIMIZE
|
||||||
|
evince "$PWD/$PDF_DOSYASI" > /dev/null 2>&1 &
|
||||||
|
sleep 2
|
||||||
|
if command -v wmctrl > /dev/null; then
|
||||||
|
wmctrl -r "evince" -b add,maximized_vert,maximized_horz
|
||||||
|
elif command -v xdotool > /dev/null; then
|
||||||
|
xdotool search --name "evince" windowsize --sync 100% 100%
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 9. TRIGGER ACODE
|
||||||
|
termux-open --content-type "text/x-tex" "$TEX_DOSYASI"
|
||||||
|
|
||||||
|
echo "=============================================="
|
||||||
|
echo "👀 Watching: '$TEX_DOSYASI'"
|
||||||
|
echo "📂 Working Directory: $PWD"
|
||||||
|
echo "=============================================="
|
||||||
|
|
||||||
|
# 10. WATCH LOOP (Aynı bıraktık)
|
||||||
|
while inotifywait -q -e close_write --include '.*\.tex$' -r .; do
|
||||||
|
echo "⏳ Saved. Compiling..."
|
||||||
|
pdflatex -interaction=nonstopmode "$TEX_DOSYASI" > compile_log.txt 2>&1
|
||||||
|
if grep -q "^!" compile_log.txt; then
|
||||||
|
echo "⚠️ ERRORS IN CODE! (Evince is showing the last working PDF)"
|
||||||
|
python3 - << 'EOF'
|
||||||
|
import re
|
||||||
|
with open("compile_log.txt") as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
i = 0
|
||||||
|
while i < len(lines):
|
||||||
|
if lines[i].startswith("!"):
|
||||||
|
error = lines[i].strip()
|
||||||
|
lineno = "?"
|
||||||
|
for j in range(i+1, min(i+10, len(lines))):
|
||||||
|
m = re.match(r'^l\.(\d+)', lines[j])
|
||||||
|
if m:
|
||||||
|
lineno = m.group(1)
|
||||||
|
break
|
||||||
|
print(f" Line {lineno:<6} {error}")
|
||||||
|
i += 1
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
echo "✅ Updated."
|
||||||
|
fi
|
||||||
|
done
|
||||||
Loading…
Reference in a new issue