#!/bin/sh

RED="\033[1;33;31m"
GREEN="\033[1;33;32m"
YELLOW="\033[1;33;33m"
NORMAL="\033[0m"

Check ()
{
	DESCRIPTION="${1}"
	shift 1

	VERSIONS="${@}"
	FROM="${1}"

	echo
	echo    "Path:     ${DESCRIPTION}"
	echo -n "Versions: ${YELLOW}${FROM}${NORMAL}"

	while true
	do
		if [ "$(echo ${VERSIONS} | wc -w)" -le 1 ]
		then
			break
		fi

		FROM="${1}"
		TO="${2}"

		echo -n " → "

		if dpkg --compare-versions ${FROM} lt ${TO}
		then
			echo -n "${GREEN}${TO}${NORMAL}"
		else
			echo -n "${RED}${TO}${NORMAL}"
		fi

		shift 1 > /dev/null 2>&1 || break

		VERSIONS="${@}"
	done

	echo
}

echo "################################################################################"
echo "# Debian: without format change"
echo "################################################################################"

Check	"non-native → non-native (new revision)" \
	1.2.3-4 1.2.3-4+deb13u1 1.2.3-5~deb13u1 1.2.3-5~bpo13+1 1.2.3-5

Check	"non-native → non-native (new upstream)" \
	1.2.3-4	1.2.3-4+deb13u1 1.2.4-1~deb13u1 1.2.4-1~bpo13+1 1.2.4-1

Check	"native → native (new upstream)" \
	1.2.3 1.2.3+deb13u1 1.2.4~deb13u1 1.2.4~bpo13+1 1.2.4

echo
echo
echo "################################################################################"
echo "# Debian: with format change"
echo "################################################################################"

Check	"native → non-native (new upstream)" \
	1.2.3 1.2.3+deb13u1 1.2.4-1~deb13u1 1.2.4-1~bpo13+1 1.2.4-1

Check	"non-native → native (new upstream)" \
	1.2.3-4 1.2.3-4+deb13u1 1.2.4~deb13u1 1.2.4~bpo13+1 1.2.4

echo
echo
echo "################################################################################"
echo "# Fast Forward: without format change"
echo "################################################################################"

Check	"non-native → non-native (new revision)" \
	1.2.3-4 1.2.3-4ffwd13u1 1.2.3-4+deb13u1 1.2.3-4+deb13u1ffwd13u1 1.2.3-5~deb13u1 1.2.3-5~deb13u1ffwd13u1 1.2.3-5~ffwd13+u1 1.2.3-5

Check	"non-native → non-native (new upstream)" \
	1.2.3-4 1.2.3-4ffwd13u1 1.2.3-4+deb13u1 1.2.3-4+deb13u1ffwd13u1 1.2.4-1~deb13u1 1.2.4-1~deb13u1ffwd13u1 1.2.4-1~ffwd13+u1 1.2.4-1

Check	"native → native (new upstream)" \
	1.2.3 1.2.3ffwd13u1 1.2.3+deb13u1 1.2.3+deb13u1ffwd13u1 1.2.4~deb13u1 1.2.4~deb13u1ffwd13u1 1.2.4~ffwd13+u1 1.2.4

echo
echo
echo "################################################################################"
echo "# Fast Forward: with format change"
echo "################################################################################"

Check	"native → non-native (new upstream)" \
	1.2.3 1.2.3ffwd13u1 1.2.3+deb13u1 1.2.3+deb13u1ffwd13u1 1.2.4-1~deb13u1 1.2.4-1~deb13u1ffwd13u1 1.2.4-1~ffwd13+u1 1.2.4-1

Check	"non-native → native (new upstream)" \
	1.2.3-4 1.2.3-4ffwd13u1 1.2.3-4+deb13u1 1.2.3-4+deb13u1ffwd13u1 1.2.4~deb13u1 1.2.4~deb13u1ffwd13u1 1.2.4~ffwd13+u1 1.2.4

echo
echo
echo "################################################################################"
echo "# Fast Forward: with format **conversion**"
echo "################################################################################"

Check	"native → non-native (new upstream)" \
	1.2.3 1.2.3-0ffwd13u1 1.2.3+deb13u1 1.2.3+deb13u1-0ffwd13u1 1.2.4~deb13u1 1.2.4~deb13u1-0ffwd13u1 1.2.4-0~ffwd13+u1 1.2.4

Check	"native → non-native (no new version)" \
	1.2.3 1.2.3-0ffwd13u1 1.2.3-0ffwd13+u1 1.2.3+b1
