fix(installer): print diff on file deployment

This commit is contained in:
jo 2023-02-03 14:07:07 +01:00 committed by Jonas L
parent a5e4d17e20
commit 9a65e08890
1 changed files with 16 additions and 0 deletions

16
install
View File

@ -208,11 +208,27 @@ backup_if_exists() {
fi fi
} }
# diff_if_exists <src> <dest>
diff_if_exists() {
src="$1"
dest="$2"
shift 2
if [[ -f "$dest" ]]; then
src_explicit_filename="$(dirname "$src")/$(basename "$dest").new"
cp "$src" "$src_explicit_filename"
# print what the existing file $dest would become if $src is copied
diff -u --color=always "$dest" "$src_explicit_filename" || :
rm -f "$src_explicit_filename"
fi
}
# cp_if_different <src> <dest> # cp_if_different <src> <dest>
cp_if_different() { cp_if_different() {
if [[ -f "$2" ]] && diff -q "$1" "$2" > /dev/null; then if [[ -f "$2" ]] && diff -q "$1" "$2" > /dev/null; then
return return
fi fi
diff_if_exists "$1" "$2"
backup_if_exists "$2" backup_if_exists "$2"
cp "$1" "$2" cp "$1" "$2"
} }