mirror of
https://github.com/kuhyx/praca_magisterska.git
synced 2026-07-04 15:03:07 +02:00
91 lines
2.8 KiB
Bash
Executable File
91 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# Auto-compile LaTeX thesis script
|
|
# Watches for changes and recompiles automatically
|
|
|
|
THESIS_DIR="/home/runner/work/praca_magisterska/praca_magisterska/latex"
|
|
MAIN_FILE="main.tex"
|
|
BUILD_DIR="build"
|
|
|
|
echo "========================================"
|
|
echo "LaTeX Thesis Auto-Compiler"
|
|
echo "========================================"
|
|
echo ""
|
|
|
|
# Check if we're in the right directory
|
|
if [ ! -f "$THESIS_DIR/$MAIN_FILE" ]; then
|
|
echo "✗ Error: Cannot find $MAIN_FILE in $THESIS_DIR"
|
|
echo " Make sure you're running this from the repository root"
|
|
exit 1
|
|
fi
|
|
|
|
cd "$THESIS_DIR" || exit 1
|
|
|
|
# Function to compile thesis
|
|
compile_thesis() {
|
|
echo "[$(date +%H:%M:%S)] Compiling thesis..."
|
|
|
|
# Create build directory if it doesn't exist
|
|
mkdir -p "$BUILD_DIR"
|
|
|
|
# Compile with pdflatex
|
|
# First pass
|
|
pdflatex -output-directory="$BUILD_DIR" -interaction=nonstopmode "$MAIN_FILE" > /dev/null 2>&1
|
|
|
|
# Run biber for bibliography
|
|
cd "$BUILD_DIR" && biber main > /dev/null 2>&1 && cd ..
|
|
|
|
# Second pass (for references)
|
|
pdflatex -output-directory="$BUILD_DIR" -interaction=nonstopmode "$MAIN_FILE" > /dev/null 2>&1
|
|
|
|
# Third pass (to be sure)
|
|
pdflatex -output-directory="$BUILD_DIR" -interaction=nonstopmode "$MAIN_FILE" > "$BUILD_DIR/last_compile.log" 2>&1
|
|
|
|
# Check if compilation succeeded
|
|
if [ -f "$BUILD_DIR/main.pdf" ]; then
|
|
echo "✓ Compilation successful! PDF: $BUILD_DIR/main.pdf"
|
|
|
|
# Show warnings and errors
|
|
grep -i "warning" "$BUILD_DIR/last_compile.log" | head -5
|
|
grep -i "error" "$BUILD_DIR/last_compile.log" | head -5
|
|
else
|
|
echo "✗ Compilation failed. Check $BUILD_DIR/last_compile.log for errors"
|
|
tail -20 "$BUILD_DIR/last_compile.log"
|
|
fi
|
|
echo ""
|
|
}
|
|
|
|
# Check if inotify-tools is installed (for watch mode)
|
|
if command -v inotifywait >/dev/null 2>&1; then
|
|
echo "Watch mode available. Options:"
|
|
echo "1) Compile once and exit"
|
|
echo "2) Compile and watch for changes (auto-recompile)"
|
|
echo ""
|
|
read -p "Select option (1 or 2): " OPTION
|
|
|
|
if [ "$OPTION" = "2" ]; then
|
|
echo "Starting watch mode..."
|
|
echo "Monitoring .tex files in $THESIS_DIR for changes"
|
|
echo "Press Ctrl+C to stop"
|
|
echo ""
|
|
|
|
# Initial compilation
|
|
compile_thesis
|
|
|
|
# Watch for changes
|
|
while true; do
|
|
inotifywait -q -e modify -r --include '.*\.tex$' .
|
|
echo "[$(date +%H:%M:%S)] Change detected, recompiling..."
|
|
compile_thesis
|
|
done
|
|
else
|
|
compile_thesis
|
|
fi
|
|
else
|
|
echo "Note: Install inotify-tools for automatic recompilation on file changes"
|
|
echo " sudo apt-get install inotify-tools"
|
|
echo ""
|
|
compile_thesis
|
|
fi
|
|
|
|
echo "Done!"
|