#!/bin/bash # -*- coding: utf-8 -*- # Test file for: process_diff.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 process_diff.sh" } # Run tests main() { echo "Testing: process_diff.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/process_diff.sh # -------------------------------------------------------------------------------- # #!/bin/bash # # -*- coding: utf-8 -*- # # Timestamp: "2025-11-12 00:06:30 (ywatanabe)" # # File: ./scripts/shell/modules/process_diff.sh # # ORIG_DIR="$(pwd)" # THIS_DIR="$(cd $(dirname ${BASH_SOURCE[0]}) && pwd)" # # Save engines directory path BEFORE load_config.sh changes directory # ENGINES_DIR="${THIS_DIR}/engines" # LOG_PATH="$THIS_DIR/.$(basename $0).log" # echo > "$LOG_PATH" # # GIT_ROOT="$(git rev-parse --show-toplevel 2>/dev/null)" # # GRAY='\033[0;90m' # GREEN='\033[0;32m' # YELLOW='\033[0;33m' # RED='\033[0;31m' # NC='\033[0m' # No Color # # echo_info() { echo -e "${GRAY}INFO: $1${NC}"; } # log_info() { # if [ "${SCITEX_LOG_LEVEL:-1}" -ge 2 ]; then # echo -e " \033[0;90m→ $1\033[0m" # fi # } # echo_success() { echo -e "${GREEN}SUCC: $1${NC}"; } # echo_warning() { echo -e "${YELLOW}WARN: $1${NC}"; } # echo_error() { echo -e "${RED}ERRO: $1${NC}"; } # echo_header() { echo_info "=== $1 ==="; } # # --------------------------------------- # # # Configuration (this changes working directory!) # source ./config/load_config.sh $SCITEX_WRITER_DOC_TYPE # # # Source the 00_shared LaTeX commands module # source "$(dirname ${BASH_SOURCE[0]})/command_switching.src" # # # Logging # touch "$LOG_PATH" >/dev/null 2>&1 # echo # log_info "Running $0 ..." # # # function determine_previous() { # local base_tex=$(ls -v "$SCITEX_WRITER_VERSIONS_DIR"/*_v*base.tex 2>/dev/null | tail -n 1) # local latest_tex=$(ls -v "$SCITEX_WRITER_VERSIONS_DIR"/*_v[0-9]*.tex 2>/dev/null | tail -n 1) # local current_tex="$SCITEX_WRITER_COMPILED_TEX" # # if [[ -n "$base_tex" ]]; then # echo "$base_tex" # elif [[ -n "$latest_tex" ]]; then # echo "$latest_tex" # else # echo "$current_tex" # fi # } # # function take_diff_tex() { # local previous=$(determine_previous) # # log_info " Creating diff between archive..." # # if [ ! -f "$SCITEX_WRITER_COMPILED_TEX" ]; then # echo_warning " $SCITEX_WRITER_COMPILED_TEX not found." # return 1 # fi # # # Get latexdiff command from 00_shared module # local latexdiff_cmd=$(get_cmd_latexdiff "$ORIG_DIR") # # if [ -z "$latexdiff_cmd" ]; then # echo_error " latexdiff not found (native, module, or container)" # return 1 # fi # # # echo_info " Using latexdiff command: $latexdiff_cmd" # # $latexdiff_cmd \ # --encoding=utf8 \ # --type=CULINECHBAR \ # --disable-citation-markup \ # --append-safecmd="cite,cite,citet" \ # "$previous" "$SCITEX_WRITER_COMPILED_TEX" 2> >(grep -v 'gocryptfs not found' | grep -v 'Wide character in print' >&2) > "$SCITEX_WRITER_DIFF_TEX" # # if [ -f "$SCITEX_WRITER_DIFF_TEX" ] && [ -s "$SCITEX_WRITER_DIFF_TEX" ]; then # echo_success " $SCITEX_WRITER_DIFF_TEX created" # # # Add signature with version metadata # # Extract old version from previous file path (e.g., manuscript_v113.tex -> 113) # local old_version=$(echo "$previous" | grep -oP '_v\K[0-9]+' || echo "unknown") # # # Get new version from version counter # local new_version="current" # if [ -f "$SCITEX_WRITER_VERSION_COUNTER_TXT" ]; then # new_version=$(head -n 1 "$SCITEX_WRITER_VERSION_COUNTER_TXT" | tr -d '[:space:]') # fi # # # Load and apply signature # if [ -f "./scripts/shell/modules/add_diff_signature.sh" ]; then # source ./scripts/shell/modules/add_diff_signature.sh # add_diff_signature "$SCITEX_WRITER_DIFF_TEX" "$old_version" "$new_version" # fi # # return 0 # else # echo_warn " $SCITEX_WRITER_DIFF_TEX not created or is empty" # return 1 # fi # } # # compile_diff_tex() { # log_info " Compiling diff document..." # # local tex_file="$SCITEX_WRITER_DIFF_TEX" # # # Source engine modules (ENGINES_DIR set at top of script before load_config.sh) # source "${ENGINES_DIR}/compile_tectonic.sh" # source "${ENGINES_DIR}/compile_latexmk.sh" # source "${ENGINES_DIR}/compile_3pass.sh" # # # Use the same engine as main compilation (or default to latexmk for diff stability) # local engine="${SCITEX_WRITER_SELECTED_ENGINE:-latexmk}" # # log_info " Using engine: $engine" # # # Dispatch to engine-specific implementation # case "$engine" in # tectonic) # compile_with_tectonic "$tex_file" # ;; # latexmk) # compile_with_latexmk "$tex_file" # ;; # 3pass) # compile_with_3pass "$tex_file" # ;; # *) # echo_warning " Unknown engine '$engine', using latexmk" # compile_with_latexmk "$tex_file" # ;; # esac # } # # cleanup() { # # PDF is generated in LOG_DIR, move to final location # local pdf_basename=$(basename "$SCITEX_WRITER_DIFF_PDF") # local pdf_in_logs="${LOG_DIR}/${pdf_basename}" # # if [ -f "$pdf_in_logs" ]; then # # Move PDF from logs/ to final location # mv "$pdf_in_logs" "$SCITEX_WRITER_DIFF_PDF" # echo_info " Moved PDF: $pdf_in_logs -> $SCITEX_WRITER_DIFF_PDF" # fi # # if [ -f "$SCITEX_WRITER_DIFF_PDF" ]; then # local size=$(du -h "$SCITEX_WRITER_DIFF_PDF" | cut -f1) # echo_success " $SCITEX_WRITER_DIFF_PDF ready (${size})" # sleep 1 # else # echo_warn " $SCITEX_WRITER_DIFF_PDF not created" # fi # } # # main() { # local start_time=$(date +%s) # # if take_diff_tex; then # compile_diff_tex # fi # # cleanup # echo_info " Total time: $(($(date +%s) - start_time))s" # } # # main "$@" # # # EOF # -------------------------------------------------------------------------------- # End of Source Code from: /home/ywatanabe/proj/scitex-writer/scripts/shell/modules/process_diff.sh # --------------------------------------------------------------------------------