#!/bin/bash
set -e
WORK_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PATCHES_DIR="${WORK_DIR}/patches"
DYNOLOG_DIR="${WORK_DIR}/third_party/dynolog"
MODIFIED_FILES_DIR="${WORK_DIR}/dynolog_npu"
mkdir -p "${PATCHES_DIR}"
generate_patches() {
echo "Generating patches from modified files..."
if [ ! -d "${MODIFIED_FILES_DIR}" ]; then
echo "ERROR: dynolog_npu directory not found"
return 1
fi
rm -f "${PATCHES_DIR}"/*.patch
find "${MODIFIED_FILES_DIR}" -type f | while read modified_file; do
rel_path=$(realpath --relative-to="${MODIFIED_FILES_DIR}" "${modified_file}")
original_file="${DYNOLOG_DIR}/${rel_path}"
echo "original_file: ${original_file}"
if [ ! -f "${original_file}" ]; then
echo "WARN: Original file not found: ${original_file}"
cp "${modified_file}" "${original_file}"
echo "Copied ${modified_file} to ${original_file}"
continue
fi
patch_name=$(echo "${rel_path}" | sed 's/\//_/g')
patch_file="${PATCHES_DIR}/${patch_name}.patch"
echo "Generating patch for: ${rel_path}"
(
cd "${WORK_DIR}"
diff -u "third_party/dynolog/${rel_path}" "dynolog_npu/${rel_path}" > "${patch_file}" || true
)
if [ ! -s "${patch_file}" ]; then
rm "${patch_file}"
echo "No differences found for: ${rel_path}"
else
echo "Successfully generated patch: ${patch_file}"
fi
done
echo "Patch generation completed"
return 0
}
generate_patches