#!/bin/bash -e

CONFFILE=/etc/pkgbinarymangler/maintainermangler.conf
OVERRIDEFILE=/etc/pkgbinarymangler/maintainermangler.overrides

. /usr/share/pkgbinarymangler/common

while [ $# -gt 0 ]; do
  if [ -f "$1"/DEBIAN/control ]; then
    CONTROLFILE="$1"/DEBIAN/control
    break
  else
    shift
  fi
done

if [ -z "$CONTROLFILE" ]; then
  echo "pkgmaintainermangler: Error: Unable to locate DEBIAN/control" >&2
  exit 0
fi

if [ -f /CurrentlyBuilding ]; then
  readctrl "/CurrentlyBuilding" "Component"
  COMPONENT="$RET"
  readctrl "$OVERRIDEFILE" "%$RET"
  OVERRIDE="$RET"
fi

readctrl "$CONTROLFILE" "Maintainer"
OLDMAINT="$RET"
OLDMAINTEMAIL=$(echo "$OLDMAINT" | sed -e 's/.*<\(.*\)>.*/\1/')
OLDMAINTDOMAIN=$(echo "$OLDMAINTEMAIL" | sed -e 's/.*@//')

readctrl "$OVERRIDEFILE" "ignore_domains"
IGNORE_DOMAINS="$RET"
if [ -n "$IGNORE_DOMAINS" ]; then
  for i in $IGNORE_DOMAINS; do
    if [ "$i" = "$OLDMAINTDOMAIN" ]; then
      echo "pkgmaintainermangler: Not overriding Maintainer for domain $OLDMAINTDOMAIN"
      exit 0
    fi
  done
fi

readctrl "$OVERRIDEFILE" "ignore_emails"
IGNORE_EMAILS="$RET"
if [ -n "$IGNORE_EMAILS" ]; then
  for i in $IGNORE_EMAILS; do
    if [ "$i" = "$OLDMAINTEMAIL" ]; then
      echo "pkgmaintainermangler: Not overriding Maintainer for address $OLDMAINTEMAIL"
      exit 0
    fi
  done
fi

readctrl "$OVERRIDEFILE" "@$OLDMAINTEMAIL"
if [ -n "$RET" ]; then
  OVERRIDE="$RET"
fi

readctrl "$CONTROLFILE" "Original-Maintainer"
if [ -n "$RET" ]; then
  echo "pkgmaintainermangler: $CONTROLFILE already contains an Original-Maintainer field; doing nothing" >&2
  exit 0
fi

if [ "$OLDMAINT" = "$OVERRIDE" ]; then
  echo "pkgmaintainermangler: Override matches original Maintainer; doing nothing"
  exit 0
fi

echo "pkgmaintainermangler: Maintainer field overridden to \"$OVERRIDE\""
sed -i -e "s/^Maintainer: \(.*\)$/Maintainer: $OVERRIDE\nOriginal-Maintainer: \1/" $CONTROLFILE
