#!/bin/bash
# -*- coding: utf-8 -*-
# Timestamp: "2025-11-12 (ywatanabe)"
# File: ./scripts/shell/modules/add_diff_signature.sh
# Description: Add metadata signature to diff TeX files
# Logging functions (if not already defined)
if ! command -v echo_info &> /dev/null; then
GRAY='\033[0;90m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
RED='\033[0;31m'
NC='\033[0m'
echo_info() { echo -e "${GRAY}INFO: $1${NC}"; }
echo_success() { echo -e "${GREEN}SUCC: $1${NC}"; }
echo_warning() { echo -e "${YELLOW}WARN: $1${NC}"; }
echo_error() { echo -e "${RED}ERRO: $1${NC}"; }
fi
add_diff_signature() {
local diff_tex_file="$1"
local old_version="$2"
local new_version="$3"
if [ ! -f "$diff_tex_file" ]; then
echo_warning " Diff TeX file not found: $diff_tex_file"
return 1
fi
echo_info " Adding signature to diff document..."
# Create signature block
local signature="
%% =============================================================================
%% Diff Document Metadata (Auto-generated)
%% =============================================================================
%% Comparison: v${old_version} → v${new_version}
%% Generated: $(date '+%Y-%m-%d %H:%M:%S')
%% User: $(git config user.name 2>/dev/null || echo 'unknown') <$(git config user.email 2>/dev/null || echo 'unknown')>
%% Document: ${SCITEX_WRITER_DOC_TYPE}
%% Git commit: $(git rev-parse --short HEAD 2>/dev/null || echo 'unknown')
%% Git branch: $(git branch --show-current 2>/dev/null || echo 'unknown')
%% =============================================================================
"
# Add signature header at the beginning of the document (after \documentclass)
# This will appear in the PDF as metadata and can be seen in the source
# Find the first \begin{document} and insert signature before it
local temp_file="${diff_tex_file}.tmp"
awk -v sig="$signature" '
/\\begin\{document\}/ {
print sig
}
{ print }
' "$diff_tex_file" > "$temp_file"
mv "$temp_file" "$diff_tex_file"
# Also add visible signature in the PDF footer (optional)
# Add to preamble before \begin{document}
# Use cat with heredoc to avoid AWK escape sequence issues
local temp_file="${diff_tex_file}.tmp"
# Find the line number of \begin{document}
local begin_doc_line=$(grep -n '\\begin{document}' "$diff_tex_file" | head -1 | cut -d: -f1)
if [ -n "$begin_doc_line" ]; then
# Insert signature before \begin{document}
{
head -n $((begin_doc_line - 1)) "$diff_tex_file"
cat << EOF
\\usepackage{fancyhdr}
\\usepackage{lastpage}
\\fancypagestyle{diffstyle}{
\\fancyhf{}
\\renewcommand{\\headrulewidth}{0.4pt}
\\renewcommand{\\footrulewidth}{0.4pt}
\\fancyhead[L]{\\small\\textit{Diff: v${old_version} → v${new_version}}}
\\fancyhead[R]{\\small\\textit{${SCITEX_WRITER_DOC_TYPE}}}
\\fancyfoot[L]{\\small Generated: $(date '+%Y-%m-%d %H:%M')}
\\fancyfoot[C]{\\small Page \\thepage\\ of \\pageref{LastPage}}
\\fancyfoot[R]{\\small $(git config user.name 2>/dev/null || echo 'Auto-generated')}
}
\\AtBeginDocument{\\pagestyle{diffstyle}}
EOF
tail -n +$begin_doc_line "$diff_tex_file"
} > "$temp_file"
mv "$temp_file" "$diff_tex_file"
fi
echo_success " Diff signature added (header + footer metadata)"
}
# Export function for use in other scripts
export -f add_diff_signature
# EOF