#!/bin/sh

get_version()
{
    (
        cd $1 > /dev/null
	      VERSION=1:$(git name-rev --name-only --tags HEAD | sed -e 's/^[^0-9]*//' -e 's/\^0$//')
        if [ "$VERSION" = "1:" ]; then
	          TIMESTAMP=$(git log -1 --date=short --format=%cd | sed 's/-/./g')
	          COMMIT=$(git rev-parse --short HEAD)
            VERSION="2:${TIMESTAMP}.${COMMIT}"
        fi
	      echo ${VERSION}
    )
}

# $1: main project name, $2 main project revision, $3: "lib1-name lib1-rev, ..."
do_subst() {
    sed  -e "0,/^$1 (.*)/s/(.*)/($2)/" \
	      -e "s/^  \* local build.*/  \* local build with $3/" \
	      -e"s/\(^ -- Local User <localuser@localhost>\).*/\1  $(date -R)/" debian/changelog.TEMPLATE > debian/changelog
}

# args: $1: valid variable name to print its value
var_val() { eval printf %s \"\$$1\"; }

# $1: the main project [,$2...: active projects (may include the main one)]
update_changelog() {
    local deps=
    local main=$1 && shift
    while [ $# -gt 0 ]; do
        [ $1 = $main ] && shift && continue
        [ "$deps" ] && deps="$deps, "
        deps="$deps$1 $(get_version "$(var_val config_${1}_source)")"
        shift
    done
    [ "$deps" ] || deps="no local libs"

    do_subst $main "$(get_version "$(var_val config_${main}_source)")" "$deps"
}

update_changelog $config_main $config_projects
