#!/bin/sh
# Copyright (C) 2020-2021 OpenCFD Ltd.
# SPDX-License-Identifier: (GPL-3.0+)
#
# Get the package name based on debian/changelog information
#
# Essentially like
#
#     dpkg-parsechangelog -Ssource
#
# It works without dpkg-parsechangelog, which can be handy if preparing
# preparing on an non-debian system
#
# ---------------------------------------------------------------------------
# The first line on debian/changelog contains something like this:
#
#   openfoam1912 (200316+dfsg1-2) unstable; urgency=medium
# -or-
#   openfoam (1912.200316+dfsg1-2) unstable; urgency=medium
#
# ---------------------------------------------------------------------------

# The debian/ directory is the parent directory
debianDir="${0%/*}/.."

unset outputType
while [ "$#" -ge 1 ]
do
    case "$1" in
    (-package | --package | -release | --release | -version | --version)
        outputType="${1##-}"
        ;;
    (*)
        break
        ;;
    esac
    shift
done

unset packageApi package release version
for file in changelog ../openfoam.changelog changelog.debian
do
    file="$debianDir/$file"
    if [ -f "$file" ]
    then
        package=$(sed -ne '1s/^\([-a-zA-Z0-9]*\) .*/\1/p' "$file")
        version=$(sed -ne '1s/^[^()]*(\([^()]*\)).*/\1/p' "$file")

        # From version (2006.1-1+dfsg1) -> 2006.1
        version=$(echo "$version" | sed -e 's/[-+~].*//')

        # Split ver.rel
        case "$version" in
        (*.*)
            release=$(echo "$version" | sed -e 's/^[^.]*[.]//')
            version=$(echo "$version" | sed -e 's/[.].*//')
            ;;
        esac
        break
    fi
done

exitCode=0
if [ -z "$package" ]
then
    exitCode=1
    echo "${0##*/} Error: Cannot determine package" 1>&2
    echo "    Missing debian/changelog?" 1>&2
fi

# Fallback values
: "${package:=openfoam}"
: "${version:=0}"
: "${release:=0}"

# Debug
# echo "package=$package" 1>&2
# echo "version=$version" 1>&2
# echo "release=$release" 1>&2

case "$outputType" in
release)
    echo "$release"
    ;;
version)
    echo "$version"
    ;;
*)
    echo "$package"
    ;;
esac

exit "$exitCode"

# -----------------------------------------------------------------------------
