wordpress/build/patch-util/01-create-patch.sh

63 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env sh
MOD_FILE="mod-update-core.php"
TARGET_FILE="update-core.php"
PATCH_FILE="wp-admin-update-core.patch"
WP_VERSION="${1:-}"
set -e
cd ./wp-src
if [ ! -f "${MOD_FILE}" ]; then
echo "X ${MOD_FILE} not found"
exit 1
fi
if [ ! -f "${TARGET_FILE}" ]; then
echo "X ${TARGET_FILE} not found"
exit 1
fi
if cmp --silent "${MOD_FILE}" "${TARGET_FILE}"; then
echo "X ${MOD_FILE} and ${TARGET_FILE} are the same. Nothing to patch."
exit 1
fi
if [ -f "${PATCH_FILE}" ]; then
PATCH_FILE_BACKUP="$(date +%s)bak-${PATCH_FILE}"
echo "! Patch file ${PATCH_FILE} already exists and will be backed up"
mv "${PATCH_FILE}" "${PATCH_FILE_BACKUP}"
echo "! Backup: ${PATCH_FILE_BACKUP}"
fi
# diff exits with code 1 if there was a difference between files, so we need to temporarily disable exit-on-error
set +e
echo "> Patching file..."
diff -u "${TARGET_FILE}" "${MOD_FILE}" > "${PATCH_FILE}"
set -e
if [ ! -s "${PATCH_FILE}" ]; then
echo "X Patch failed."
exit 1
fi
echo "> Fixing patch header"
sed -i "s/${MOD_FILE}/${TARGET_FILE}/g" "${PATCH_FILE}"
echo "> Patch file created ${PATCH_FILE}"
if [ -n "${WP_VERSION}" ]; then
echo "> WordPress version defined: ${WP_VERSION}"
echo "> Copying the patch file..."
mkdir "../../../patches/${WP_VERSION}" -p
cp -v "./${PATCH_FILE}" "../../../patches/${WP_VERSION}/"
else
echo "> Please run: "
echo " cp './wp-src/${PATCH_FILE}' '../../../patches/5.x.x/'"
fi
echo ""
echo "> Don't forget to inspect the patch and THEN commit"
echo "> Finished"