#!/usr/bin/env bash
#
# Copyright (c) 2020 Red Hat, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# This script apply patches.
#
set -e

script_dir="$(realpath $(dirname $0))"
patches_dir="$1"

if [ -z "$patches_dir" ]; then
	cat <<-EOF
	Apply patches to the sources at the current directory.

	Patches are expected to be named in the standard git-format-patch(1) format where
	the first part of the filename represents the patch ordering (lowest numbers
	apply first):
	    'NUMBER-DASHED_DESCRIPTION.patch'

	For example,

	    0001-fix-the-bad-thing.patch
	    0002-improve-the-fix-the-bad-thing-fix.patch
	    0003-correct-compiler-warnings.patch

	Usage:
	    $0 PATCHES_DIR
	Where:
	    PATCHES_DIR is the directory containing the patches
	EOF
	exit 1
fi

echo "INFO: Apply patches from $patches_dir"
if [ -d "$patches_dir" ]; then
	patches=($(find "$patches_dir" -maxdepth 1 -name '*.patch'|sort -t- -k1,1n))
	echo "INFO: Found ${#patches[@]} patches"
	for patch in ${patches[@]}; do
		echo "INFO: Apply $patch"
		patch -p1 < "$patch" || \
			{ echo >&2 "ERROR: Not applied. Exiting..."; exit 1; }
	done
else
	echo "INFO: Patches directory does not exist: ${patches_dir}"
	echo "INFO: Create a ${patches_dir}/no_patches.txt file if the current version has no patches"
	exit 1;
fi
