73 lines
2.1 KiB
Bash
Executable File
73 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 定义文件路径
|
|
SOURCE_PARSE_FILENAME="/usr/src/paperless/git_scripts/parse_filename.py"
|
|
DEST_PARSE_FILENAME="/usr/src/paperless/scripts/parse_filename.py"
|
|
|
|
SOURCE_PARSERS="/usr/src/paperless/git_scripts/parsers.py"
|
|
DEST_PARSERS="/usr/src/paperless/src/paperless_tesseract/parsers.py"
|
|
|
|
# 检查文件是否存在
|
|
check_files_exist() {
|
|
local missing=0
|
|
for file in "$SOURCE_PARSE_FILENAME" "$DEST_PARSE_FILENAME" "$SOURCE_PARSERS" "$DEST_PARSERS"; do
|
|
if [ ! -f "$file" ]; then
|
|
echo "错误:文件不存在 - $file"
|
|
missing=1
|
|
fi
|
|
done
|
|
if [ $missing -eq 1 ]; then
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# 显示文件差异
|
|
show_diffs() {
|
|
echo "=== 检查 parse_filename.py 差异 ==="
|
|
diff -u "$DEST_PARSE_FILENAME" "$SOURCE_PARSE_FILENAME" || true # 差异不存在时不报错
|
|
|
|
echo -e "\n=== 检查 parsers.py 差异 ==="
|
|
diff -u "$DEST_PARSERS" "$SOURCE_PARSERS" || true
|
|
}
|
|
|
|
# 备份并替换文件
|
|
replace_files() {
|
|
# 备份目标文件
|
|
backup_file "$DEST_PARSE_FILENAME"
|
|
backup_file "$DEST_PARSERS"
|
|
|
|
# 执行替换
|
|
cp -f "$SOURCE_PARSE_FILENAME" "$DEST_PARSE_FILENAME"
|
|
cp -f "$SOURCE_PARSERS" "$DEST_PARSERS"
|
|
|
|
echo -e "\n=== 替换完成,以下是替换后的差异(应无差异) ==="
|
|
show_diffs
|
|
}
|
|
|
|
# 备份文件(添加 .bak 后缀,保留原权限)
|
|
backup_file() {
|
|
local file="$1"
|
|
local backup="$file.bak"
|
|
if [ -f "$backup" ]; then
|
|
# 若已有备份,先删除旧备份(避免累积过多)
|
|
rm -f "$backup"
|
|
fi
|
|
cp -a "$file" "$backup" # -a 保留权限和属性
|
|
echo "已备份:$file -> $backup"
|
|
}
|
|
|
|
# 主逻辑
|
|
check_files_exist
|
|
|
|
if [ "$1" = "check" ]; then
|
|
echo "=== 执行差异检查(不修改文件) ==="
|
|
show_diffs
|
|
elif [ "$1" = "replace" ]; then
|
|
echo "=== 执行文件替换(先备份) ==="
|
|
replace_files
|
|
else
|
|
echo "用法:$0 [check|replace]"
|
|
echo " check - 仅检查文件差异,不做修改"
|
|
echo " replace - 备份目标文件并替换,然后显示最终差异"
|
|
exit 1
|
|
fi |