145 lines
No EOL
4.4 KiB
Bash
145 lines
No EOL
4.4 KiB
Bash
#!/bin/bash
|
||
TEX_DOSYASI="${1:-test.tex}"
|
||
PDF_DOSYASI="${TEX_DOSYASI%.tex}.pdf"
|
||
export DISPLAY=:0
|
||
shopt -s nullglob # *.py/*.ipynb hiç yoksa git add'e "bulunamadı" hatası vermesin
|
||
|
||
# 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..."
|
||
# Kodu (tex/py/ipynb) ve PDF'i ekle ki arkadaşların site üzerinden okuyabilsin
|
||
git add *.tex *.py *.ipynb 2>/dev/null
|
||
[ -f "$PDF_DOSYASI" ] && git add "$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{amssymb}
|
||
\usepackage{physics}
|
||
\usepackage{geometry}
|
||
\usepackage{hyperref}
|
||
\geometry{margin=0.1in}
|
||
|
||
\title{new paper side notes}
|
||
\author{Demircan Demirbağ}
|
||
\date{\today}
|
||
|
||
\begin{document}
|
||
|
||
\maketitle
|
||
\tableofcontents
|
||
|
||
\newpage
|
||
|
||
|
||
|
||
\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 |