#!/bin/bash # -*- coding: utf-8 -*- # Test file for: select_compilation_engine.sh THIS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT_DIR="$(realpath "$THIS_DIR/../..")" # Test counter TESTS_RUN=0 TESTS_PASSED=0 TESTS_FAILED=0 # Colors GREEN='\033[0;32m' RED='\033[0;31m' NC='\033[0m' assert_success() { local cmd="$1" local desc="${2:-$cmd}" ((TESTS_RUN++)) if eval "$cmd" > /dev/null 2>&1; then echo -e "${GREEN}✓${NC} $desc" ((TESTS_PASSED++)) else echo -e "${RED}✗${NC} $desc" ((TESTS_FAILED++)) fi } assert_file_exists() { local file="$1" ((TESTS_RUN++)) if [ -f "$file" ]; then echo -e "${GREEN}✓${NC} File exists: $file" ((TESTS_PASSED++)) else echo -e "${RED}✗${NC} File missing: $file" ((TESTS_FAILED++)) fi } # Add your tests here test_placeholder() { echo "TODO: Add tests for select_compilation_engine.sh" } # Run tests main() { echo "Testing: select_compilation_engine.sh" echo "========================================" test_placeholder echo "========================================" echo "Results: $TESTS_PASSED/$TESTS_RUN passed" [ $TESTS_FAILED -gt 0 ] && exit 1 exit 0 } main "$@" # -------------------------------------------------------------------------------- # Start of Source Code from: /home/ywatanabe/proj/scitex-writer/scripts/shell/modules/select_compilation_engine.sh # -------------------------------------------------------------------------------- # #!/bin/bash # # -*- coding: utf-8 -*- # # Timestamp: "2025-11-11 23:10:00 (ywatanabe)" # # File: ./scripts/shell/modules/select_compilation_engine.sh # # Select and verify compilation engine # # THIS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # # # Source command switching module for engine detection # source "${THIS_DIR}/command_switching.src" # # # Auto-detect best available engine # auto_detect_engine() { # # Default priority: latexmk (fastest for development) → tectonic (fallback) → 3pass (guaranteed) # local auto_order="${SCITEX_WRITER_AUTO_ORDER:-latexmk tectonic 3pass}" # # for engine in $auto_order; do # if verify_engine "$engine" >/dev/null 2>&1; then # echo "$engine" # return 0 # fi # done # # # Fallback to 3pass (always works if pdflatex exists) # echo "3pass" # } # # # Verify engine is available # verify_engine() { # local engine="$1" # # case "$engine" in # tectonic) # get_cmd_tectonic >/dev/null 2>&1 # return $? # ;; # latexmk) # # Need both latexmk and pdflatex # get_cmd_latexmk >/dev/null 2>&1 && \ # get_cmd_pdflatex >/dev/null 2>&1 # return $? # ;; # 3pass) # # Need pdflatex and bibtex # get_cmd_pdflatex >/dev/null 2>&1 && \ # get_cmd_bibtex >/dev/null 2>&1 # return $? # ;; # *) # echo_error "Unknown engine: $engine" # return 1 # ;; # esac # } # # # Get human-readable engine info # get_engine_info() { # local engine="$1" # # case "$engine" in # tectonic) # echo "🔄 Tectonic (Reproducible, 4-5s per compile)" # ;; # latexmk) # echo "⚡ latexmk (Smart incremental, 3s)" # ;; # 3pass) # echo "🔒 3-pass (Guaranteed correctness, 6-7s)" # ;; # esac # } # # # Get engine version # get_engine_version() { # local engine="$1" # # case "$engine" in # tectonic) # local cmd=$(get_cmd_tectonic) # if [ -n "$cmd" ]; then # $cmd --version 2>&1 | head -1 | grep -oP '\d+\.\d+\.\d+' # fi # ;; # latexmk) # local cmd=$(get_cmd_latexmk) # if [ -n "$cmd" ]; then # $cmd -version 2>&1 | head -1 | grep -oP '\d+\.\d+' # fi # ;; # 3pass) # echo "native" # ;; # esac # } # # # List all available engines # list_available_engines() { # echo "Available compilation engines:" # echo "" # # for engine in tectonic latexmk 3pass; do # if verify_engine "$engine" >/dev/null 2>&1; then # local version=$(get_engine_version "$engine") # local info=$(get_engine_info "$engine") # printf " ✓ %-10s (%-10s) %s\n" "$engine" "$version" "$info" # else # printf " ✗ %-10s (not available)\n" "$engine" # fi # done # } # # # Export functions # export -f auto_detect_engine # export -f verify_engine # export -f get_engine_info # export -f get_engine_version # export -f list_available_engines # # # EOF # -------------------------------------------------------------------------------- # End of Source Code from: /home/ywatanabe/proj/scitex-writer/scripts/shell/modules/select_compilation_engine.sh # --------------------------------------------------------------------------------